diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-01-04 06:02:08 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-01-04 06:02:08 +0000 |
| commit | 4949ec8aaf692809d235e9e1e20a5e084cf2bf39 (patch) | |
| tree | 9ad1df5f4a7ca24cd99aff42749ceda65943a35b | |
| parent | Updated link to API reference (diff) | |
| download | DiligentCore-4949ec8aaf692809d235e9e1e20a5e084cf2bf39.tar.gz DiligentCore-4949ec8aaf692809d235e9e1e20a5e084cf2bf39.zip | |
Updated copyright notice
1112 files changed, 1366 insertions, 1366 deletions
diff --git a/Common/include/pch.h b/Common/include/pch.h index 14dca411..5b0324dc 100644 --- a/Common/include/pch.h +++ b/Common/include/pch.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/AdaptiveFixedBlockAllocator.h b/Common/interface/AdaptiveFixedBlockAllocator.h index 3db6939b..6fe821a3 100644 --- a/Common/interface/AdaptiveFixedBlockAllocator.h +++ b/Common/interface/AdaptiveFixedBlockAllocator.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/AdvancedMath.h b/Common/interface/AdvancedMath.h index a4287b67..a6fe36e4 100644 --- a/Common/interface/AdvancedMath.h +++ b/Common/interface/AdvancedMath.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/BasicFileStream.h b/Common/interface/BasicFileStream.h index f1762a2f..e2807f11 100644 --- a/Common/interface/BasicFileStream.h +++ b/Common/interface/BasicFileStream.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/BasicMath.h b/Common/interface/BasicMath.h index b6d1793f..0f395958 100644 --- a/Common/interface/BasicMath.h +++ b/Common/interface/BasicMath.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/DataBlobImpl.h b/Common/interface/DataBlobImpl.h index b104a98f..90ace50d 100644 --- a/Common/interface/DataBlobImpl.h +++ b/Common/interface/DataBlobImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/DefaultRawMemoryAllocator.h b/Common/interface/DefaultRawMemoryAllocator.h index bb6c2730..afb3fd59 100644 --- a/Common/interface/DefaultRawMemoryAllocator.h +++ b/Common/interface/DefaultRawMemoryAllocator.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/FileWrapper.h b/Common/interface/FileWrapper.h index ec5ab6b1..6eeae557 100644 --- a/Common/interface/FileWrapper.h +++ b/Common/interface/FileWrapper.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/FixedBlockMemoryAllocator.h b/Common/interface/FixedBlockMemoryAllocator.h index 76926c09..0a1fd294 100644 --- a/Common/interface/FixedBlockMemoryAllocator.h +++ b/Common/interface/FixedBlockMemoryAllocator.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/HashUtils.h b/Common/interface/HashUtils.h index bcfa8006..6ad68160 100644 --- a/Common/interface/HashUtils.h +++ b/Common/interface/HashUtils.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/LockHelper.h b/Common/interface/LockHelper.h index 06e1b596..1dfe44db 100644 --- a/Common/interface/LockHelper.h +++ b/Common/interface/LockHelper.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/ObjectBase.h b/Common/interface/ObjectBase.h index 14e7ae8c..2c0e29a5 100644 --- a/Common/interface/ObjectBase.h +++ b/Common/interface/ObjectBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/RefCntAutoPtr.h b/Common/interface/RefCntAutoPtr.h index 3408be17..bd314e6e 100644 --- a/Common/interface/RefCntAutoPtr.h +++ b/Common/interface/RefCntAutoPtr.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/RefCountedObjectImpl.h b/Common/interface/RefCountedObjectImpl.h index 765054f9..e0815524 100644 --- a/Common/interface/RefCountedObjectImpl.h +++ b/Common/interface/RefCountedObjectImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/STDAllocator.h b/Common/interface/STDAllocator.h index c3e7a2bf..d77620bc 100644 --- a/Common/interface/STDAllocator.h +++ b/Common/interface/STDAllocator.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/StringDataBlobImpl.h b/Common/interface/StringDataBlobImpl.h index bb68722b..fdbd6762 100644 --- a/Common/interface/StringDataBlobImpl.h +++ b/Common/interface/StringDataBlobImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/StringTools.h b/Common/interface/StringTools.h index 57a7b071..08982fe0 100644 --- a/Common/interface/StringTools.h +++ b/Common/interface/StringTools.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/Timer.h b/Common/interface/Timer.h index 8b4c82c6..e69ba633 100644 --- a/Common/interface/Timer.h +++ b/Common/interface/Timer.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/UniqueIdentifier.h b/Common/interface/UniqueIdentifier.h index 5d831579..e296d2e9 100644 --- a/Common/interface/UniqueIdentifier.h +++ b/Common/interface/UniqueIdentifier.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/interface/ValidatedCast.h b/Common/interface/ValidatedCast.h index 6b4b47ad..786f90a5 100644 --- a/Common/interface/ValidatedCast.h +++ b/Common/interface/ValidatedCast.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/src/BasicFileStream.cpp b/Common/src/BasicFileStream.cpp index dffccac0..0324bd71 100644 --- a/Common/src/BasicFileStream.cpp +++ b/Common/src/BasicFileStream.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/src/DataBlobImpl.cpp b/Common/src/DataBlobImpl.cpp index 6c817713..735c2951 100644 --- a/Common/src/DataBlobImpl.cpp +++ b/Common/src/DataBlobImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/src/DefaultRawMemoryAllocator.cpp b/Common/src/DefaultRawMemoryAllocator.cpp index 16d25849..69f2882c 100644 --- a/Common/src/DefaultRawMemoryAllocator.cpp +++ b/Common/src/DefaultRawMemoryAllocator.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/src/FixedBlockMemoryAllocator.cpp b/Common/src/FixedBlockMemoryAllocator.cpp index 3408ea73..b966025f 100644 --- a/Common/src/FixedBlockMemoryAllocator.cpp +++ b/Common/src/FixedBlockMemoryAllocator.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/src/Timer.cpp b/Common/src/Timer.cpp index 57ac9539..724340f0 100644 --- a/Common/src/Timer.cpp +++ b/Common/src/Timer.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Common/src/pch.cpp b/Common/src/pch.cpp index ead1e315..29e1e07c 100644 --- a/Common/src/pch.cpp +++ b/Common/src/pch.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsAccessories/interface/GraphicsAccessories.h b/Graphics/GraphicsAccessories/interface/GraphicsAccessories.h index fb726c56..4f8bc20d 100644 --- a/Graphics/GraphicsAccessories/interface/GraphicsAccessories.h +++ b/Graphics/GraphicsAccessories/interface/GraphicsAccessories.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsAccessories/interface/RingBuffer.h b/Graphics/GraphicsAccessories/interface/RingBuffer.h index 684f31e0..70d87c04 100644 --- a/Graphics/GraphicsAccessories/interface/RingBuffer.h +++ b/Graphics/GraphicsAccessories/interface/RingBuffer.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsAccessories/interface/VariableSizeAllocationsManager.h b/Graphics/GraphicsAccessories/interface/VariableSizeAllocationsManager.h index 99d78ab7..a4519c7c 100644 --- a/Graphics/GraphicsAccessories/interface/VariableSizeAllocationsManager.h +++ b/Graphics/GraphicsAccessories/interface/VariableSizeAllocationsManager.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsAccessories/interface/VariableSizeGPUAllocationsManager.h b/Graphics/GraphicsAccessories/interface/VariableSizeGPUAllocationsManager.h index e929ee7b..0bf0d33a 100644 --- a/Graphics/GraphicsAccessories/interface/VariableSizeGPUAllocationsManager.h +++ b/Graphics/GraphicsAccessories/interface/VariableSizeGPUAllocationsManager.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp b/Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp index 29c42322..15836d05 100644 --- a/Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp +++ b/Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/BufferBase.h b/Graphics/GraphicsEngine/include/BufferBase.h index 958478a0..844b887e 100644 --- a/Graphics/GraphicsEngine/include/BufferBase.h +++ b/Graphics/GraphicsEngine/include/BufferBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/BufferViewBase.h b/Graphics/GraphicsEngine/include/BufferViewBase.h index ff14fc95..de97f64c 100644 --- a/Graphics/GraphicsEngine/include/BufferViewBase.h +++ b/Graphics/GraphicsEngine/include/BufferViewBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/CommandListBase.h b/Graphics/GraphicsEngine/include/CommandListBase.h index cf94b48f..74725d31 100644 --- a/Graphics/GraphicsEngine/include/CommandListBase.h +++ b/Graphics/GraphicsEngine/include/CommandListBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/Defines.h b/Graphics/GraphicsEngine/include/Defines.h index 2322e53c..72dfa52e 100644 --- a/Graphics/GraphicsEngine/include/Defines.h +++ b/Graphics/GraphicsEngine/include/Defines.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/DeviceContextBase.h b/Graphics/GraphicsEngine/include/DeviceContextBase.h index 1e725c2d..75e2c109 100644 --- a/Graphics/GraphicsEngine/include/DeviceContextBase.h +++ b/Graphics/GraphicsEngine/include/DeviceContextBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/DeviceObjectBase.h b/Graphics/GraphicsEngine/include/DeviceObjectBase.h index 7cbdef12..f7e05d7a 100644 --- a/Graphics/GraphicsEngine/include/DeviceObjectBase.h +++ b/Graphics/GraphicsEngine/include/DeviceObjectBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/EngineMemory.h b/Graphics/GraphicsEngine/include/EngineMemory.h index 8c7e2cfe..4d605d77 100644 --- a/Graphics/GraphicsEngine/include/EngineMemory.h +++ b/Graphics/GraphicsEngine/include/EngineMemory.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/PipelineStateBase.h b/Graphics/GraphicsEngine/include/PipelineStateBase.h index da3221e2..a293d575 100644 --- a/Graphics/GraphicsEngine/include/PipelineStateBase.h +++ b/Graphics/GraphicsEngine/include/PipelineStateBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/RenderDeviceBase.h b/Graphics/GraphicsEngine/include/RenderDeviceBase.h index facb9272..f26c4afa 100644 --- a/Graphics/GraphicsEngine/include/RenderDeviceBase.h +++ b/Graphics/GraphicsEngine/include/RenderDeviceBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/ResourceMappingImpl.h b/Graphics/GraphicsEngine/include/ResourceMappingImpl.h index 0996144e..cbbf963a 100644 --- a/Graphics/GraphicsEngine/include/ResourceMappingImpl.h +++ b/Graphics/GraphicsEngine/include/ResourceMappingImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/SamplerBase.h b/Graphics/GraphicsEngine/include/SamplerBase.h index 47744db5..0eeb37e6 100644 --- a/Graphics/GraphicsEngine/include/SamplerBase.h +++ b/Graphics/GraphicsEngine/include/SamplerBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/ShaderBase.h b/Graphics/GraphicsEngine/include/ShaderBase.h index d8b857ce..fb5f132b 100644 --- a/Graphics/GraphicsEngine/include/ShaderBase.h +++ b/Graphics/GraphicsEngine/include/ShaderBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/ShaderResourceBindingBase.h b/Graphics/GraphicsEngine/include/ShaderResourceBindingBase.h index c969a46d..b2e0c923 100644 --- a/Graphics/GraphicsEngine/include/ShaderResourceBindingBase.h +++ b/Graphics/GraphicsEngine/include/ShaderResourceBindingBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/StateObjectsRegistry.h b/Graphics/GraphicsEngine/include/StateObjectsRegistry.h index 97451698..93e7bf82 100644 --- a/Graphics/GraphicsEngine/include/StateObjectsRegistry.h +++ b/Graphics/GraphicsEngine/include/StateObjectsRegistry.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/SwapChainBase.h b/Graphics/GraphicsEngine/include/SwapChainBase.h index 9634e737..c01c7d04 100644 --- a/Graphics/GraphicsEngine/include/SwapChainBase.h +++ b/Graphics/GraphicsEngine/include/SwapChainBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/TextureBase.h b/Graphics/GraphicsEngine/include/TextureBase.h index 9bd1f9dd..c2f11245 100644 --- a/Graphics/GraphicsEngine/include/TextureBase.h +++ b/Graphics/GraphicsEngine/include/TextureBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/TextureViewBase.h b/Graphics/GraphicsEngine/include/TextureViewBase.h index b79f9ff3..cbbba195 100644 --- a/Graphics/GraphicsEngine/include/TextureViewBase.h +++ b/Graphics/GraphicsEngine/include/TextureViewBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/include/pch.h b/Graphics/GraphicsEngine/include/pch.h index bd6acb2e..08926ae1 100644 --- a/Graphics/GraphicsEngine/include/pch.h +++ b/Graphics/GraphicsEngine/include/pch.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/BlendState.h b/Graphics/GraphicsEngine/interface/BlendState.h index 4c1a0858..b1cf1a97 100644 --- a/Graphics/GraphicsEngine/interface/BlendState.h +++ b/Graphics/GraphicsEngine/interface/BlendState.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/Buffer.h b/Graphics/GraphicsEngine/interface/Buffer.h index 572473a6..e025c37f 100644 --- a/Graphics/GraphicsEngine/interface/Buffer.h +++ b/Graphics/GraphicsEngine/interface/Buffer.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/BufferView.h b/Graphics/GraphicsEngine/interface/BufferView.h index 1110d802..c137d264 100644 --- a/Graphics/GraphicsEngine/interface/BufferView.h +++ b/Graphics/GraphicsEngine/interface/BufferView.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/CommandList.h b/Graphics/GraphicsEngine/interface/CommandList.h index 41532c12..8414a423 100644 --- a/Graphics/GraphicsEngine/interface/CommandList.h +++ b/Graphics/GraphicsEngine/interface/CommandList.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/Constants.h b/Graphics/GraphicsEngine/interface/Constants.h index 0ac3ca05..e8d3c4c0 100644 --- a/Graphics/GraphicsEngine/interface/Constants.h +++ b/Graphics/GraphicsEngine/interface/Constants.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/DepthStencilState.h b/Graphics/GraphicsEngine/interface/DepthStencilState.h index c4734573..cf49d4e9 100644 --- a/Graphics/GraphicsEngine/interface/DepthStencilState.h +++ b/Graphics/GraphicsEngine/interface/DepthStencilState.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/DeviceCaps.h b/Graphics/GraphicsEngine/interface/DeviceCaps.h index fde6f90d..79164276 100644 --- a/Graphics/GraphicsEngine/interface/DeviceCaps.h +++ b/Graphics/GraphicsEngine/interface/DeviceCaps.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/DeviceContext.h b/Graphics/GraphicsEngine/interface/DeviceContext.h index 7dca48db..deb856fb 100644 --- a/Graphics/GraphicsEngine/interface/DeviceContext.h +++ b/Graphics/GraphicsEngine/interface/DeviceContext.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/DeviceObject.h b/Graphics/GraphicsEngine/interface/DeviceObject.h index d1201d98..ba1e472c 100644 --- a/Graphics/GraphicsEngine/interface/DeviceObject.h +++ b/Graphics/GraphicsEngine/interface/DeviceObject.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/GraphicsTypes.h b/Graphics/GraphicsEngine/interface/GraphicsTypes.h index c2af97ae..35c2a27a 100644 --- a/Graphics/GraphicsEngine/interface/GraphicsTypes.h +++ b/Graphics/GraphicsEngine/interface/GraphicsTypes.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/InputLayout.h b/Graphics/GraphicsEngine/interface/InputLayout.h index 188fe0b2..483e1c52 100644 --- a/Graphics/GraphicsEngine/interface/InputLayout.h +++ b/Graphics/GraphicsEngine/interface/InputLayout.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/MapHelper.h b/Graphics/GraphicsEngine/interface/MapHelper.h index 6b094e81..ea1f0e28 100644 --- a/Graphics/GraphicsEngine/interface/MapHelper.h +++ b/Graphics/GraphicsEngine/interface/MapHelper.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/PipelineState.h b/Graphics/GraphicsEngine/interface/PipelineState.h index 4aa9bb6f..dbb89660 100644 --- a/Graphics/GraphicsEngine/interface/PipelineState.h +++ b/Graphics/GraphicsEngine/interface/PipelineState.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/RasterizerState.h b/Graphics/GraphicsEngine/interface/RasterizerState.h index e1668566..9d46ba41 100644 --- a/Graphics/GraphicsEngine/interface/RasterizerState.h +++ b/Graphics/GraphicsEngine/interface/RasterizerState.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/RenderDevice.h b/Graphics/GraphicsEngine/interface/RenderDevice.h index 09cf22c3..07582031 100644 --- a/Graphics/GraphicsEngine/interface/RenderDevice.h +++ b/Graphics/GraphicsEngine/interface/RenderDevice.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/ResourceMapping.h b/Graphics/GraphicsEngine/interface/ResourceMapping.h index 76384fd2..af1641c5 100644 --- a/Graphics/GraphicsEngine/interface/ResourceMapping.h +++ b/Graphics/GraphicsEngine/interface/ResourceMapping.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/Sampler.h b/Graphics/GraphicsEngine/interface/Sampler.h index 8eb288c2..2099f16c 100644 --- a/Graphics/GraphicsEngine/interface/Sampler.h +++ b/Graphics/GraphicsEngine/interface/Sampler.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/Shader.h b/Graphics/GraphicsEngine/interface/Shader.h index ff172c0c..956e14a6 100644 --- a/Graphics/GraphicsEngine/interface/Shader.h +++ b/Graphics/GraphicsEngine/interface/Shader.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h b/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h index be21e6c0..1b35bbb1 100644 --- a/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h +++ b/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/SwapChain.h b/Graphics/GraphicsEngine/interface/SwapChain.h index 5a8fb7ae..5e14c63b 100644 --- a/Graphics/GraphicsEngine/interface/SwapChain.h +++ b/Graphics/GraphicsEngine/interface/SwapChain.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/Texture.h b/Graphics/GraphicsEngine/interface/Texture.h index f80e652f..7dddd917 100644 --- a/Graphics/GraphicsEngine/interface/Texture.h +++ b/Graphics/GraphicsEngine/interface/Texture.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/interface/TextureView.h b/Graphics/GraphicsEngine/interface/TextureView.h index d20af409..dc383b1e 100644 --- a/Graphics/GraphicsEngine/interface/TextureView.h +++ b/Graphics/GraphicsEngine/interface/TextureView.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/src/EngineMemory.cpp b/Graphics/GraphicsEngine/src/EngineMemory.cpp index 0287e17f..180bdf50 100644 --- a/Graphics/GraphicsEngine/src/EngineMemory.cpp +++ b/Graphics/GraphicsEngine/src/EngineMemory.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/src/ResourceMapping.cpp b/Graphics/GraphicsEngine/src/ResourceMapping.cpp index a4643da6..04cd575c 100644 --- a/Graphics/GraphicsEngine/src/ResourceMapping.cpp +++ b/Graphics/GraphicsEngine/src/ResourceMapping.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/src/Texture.cpp b/Graphics/GraphicsEngine/src/Texture.cpp index 89a4ccef..366f7e93 100644 --- a/Graphics/GraphicsEngine/src/Texture.cpp +++ b/Graphics/GraphicsEngine/src/Texture.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngine/src/pch.cpp b/Graphics/GraphicsEngine/src/pch.cpp index 945f49e0..07ab47d2 100644 --- a/Graphics/GraphicsEngine/src/pch.cpp +++ b/Graphics/GraphicsEngine/src/pch.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/BufferD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/BufferD3D11Impl.h index 57d27d2a..fec8f032 100644 --- a/Graphics/GraphicsEngineD3D11/include/BufferD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/BufferD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/BufferViewD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/BufferViewD3D11Impl.h index 47a6a6b0..b8949f39 100644 --- a/Graphics/GraphicsEngineD3D11/include/BufferViewD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/BufferViewD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/CommandListD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/CommandListD3D11Impl.h index 6f95fdfc..79bac353 100644 --- a/Graphics/GraphicsEngineD3D11/include/CommandListD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/CommandListD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/D3D11DebugUtilities.h b/Graphics/GraphicsEngineD3D11/include/D3D11DebugUtilities.h index 384e37b4..e3849d40 100644 --- a/Graphics/GraphicsEngineD3D11/include/D3D11DebugUtilities.h +++ b/Graphics/GraphicsEngineD3D11/include/D3D11DebugUtilities.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/D3D11TypeConversions.h b/Graphics/GraphicsEngineD3D11/include/D3D11TypeConversions.h index 60d43770..f6cf2708 100644 --- a/Graphics/GraphicsEngineD3D11/include/D3D11TypeConversions.h +++ b/Graphics/GraphicsEngineD3D11/include/D3D11TypeConversions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/D3D11TypeDefinitions.h b/Graphics/GraphicsEngineD3D11/include/D3D11TypeDefinitions.h index e04f0acc..ef821701 100644 --- a/Graphics/GraphicsEngineD3D11/include/D3D11TypeDefinitions.h +++ b/Graphics/GraphicsEngineD3D11/include/D3D11TypeDefinitions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/DeviceContextD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/DeviceContextD3D11Impl.h index 2036f045..d35edc82 100644 --- a/Graphics/GraphicsEngineD3D11/include/DeviceContextD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/DeviceContextD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/EngineD3D11Defines.h b/Graphics/GraphicsEngineD3D11/include/EngineD3D11Defines.h index f4fe12a9..7097e43f 100644 --- a/Graphics/GraphicsEngineD3D11/include/EngineD3D11Defines.h +++ b/Graphics/GraphicsEngineD3D11/include/EngineD3D11Defines.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h index ff38e664..e8cc719a 100644 --- a/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/RenderDeviceD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/RenderDeviceD3D11Impl.h index 2255b211..bfaea0c8 100644 --- a/Graphics/GraphicsEngineD3D11/include/RenderDeviceD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/RenderDeviceD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/SamplerD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/SamplerD3D11Impl.h index eaa81827..196d4160 100644 --- a/Graphics/GraphicsEngineD3D11/include/SamplerD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/SamplerD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/ShaderD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/ShaderD3D11Impl.h index 9f6d8b97..39fc85bc 100644 --- a/Graphics/GraphicsEngineD3D11/include/ShaderD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/ShaderD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/ShaderResourceBindingD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/ShaderResourceBindingD3D11Impl.h index a48ee3dd..53e57e27 100644 --- a/Graphics/GraphicsEngineD3D11/include/ShaderResourceBindingD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/ShaderResourceBindingD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/ShaderResourceCacheD3D11.h b/Graphics/GraphicsEngineD3D11/include/ShaderResourceCacheD3D11.h index 5d84a489..34363c13 100644 --- a/Graphics/GraphicsEngineD3D11/include/ShaderResourceCacheD3D11.h +++ b/Graphics/GraphicsEngineD3D11/include/ShaderResourceCacheD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/ShaderResourceLayoutD3D11.h b/Graphics/GraphicsEngineD3D11/include/ShaderResourceLayoutD3D11.h index e662706e..354c21d5 100644 --- a/Graphics/GraphicsEngineD3D11/include/ShaderResourceLayoutD3D11.h +++ b/Graphics/GraphicsEngineD3D11/include/ShaderResourceLayoutD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/ShaderResourcesD3D11.h b/Graphics/GraphicsEngineD3D11/include/ShaderResourcesD3D11.h index 80a7f3e1..93c07ad3 100644 --- a/Graphics/GraphicsEngineD3D11/include/ShaderResourcesD3D11.h +++ b/Graphics/GraphicsEngineD3D11/include/ShaderResourcesD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/SwapChainD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/SwapChainD3D11Impl.h index 8f1a2074..e9bd6899 100644 --- a/Graphics/GraphicsEngineD3D11/include/SwapChainD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/SwapChainD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/Texture1D_D3D11.h b/Graphics/GraphicsEngineD3D11/include/Texture1D_D3D11.h index 9aca480b..4878ed86 100644 --- a/Graphics/GraphicsEngineD3D11/include/Texture1D_D3D11.h +++ b/Graphics/GraphicsEngineD3D11/include/Texture1D_D3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/Texture2D_D3D11.h b/Graphics/GraphicsEngineD3D11/include/Texture2D_D3D11.h index 3d9435ef..4e5c9ef5 100644 --- a/Graphics/GraphicsEngineD3D11/include/Texture2D_D3D11.h +++ b/Graphics/GraphicsEngineD3D11/include/Texture2D_D3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/Texture3D_D3D11.h b/Graphics/GraphicsEngineD3D11/include/Texture3D_D3D11.h index 8512f93c..1ba4912b 100644 --- a/Graphics/GraphicsEngineD3D11/include/Texture3D_D3D11.h +++ b/Graphics/GraphicsEngineD3D11/include/Texture3D_D3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/TextureBaseD3D11.h b/Graphics/GraphicsEngineD3D11/include/TextureBaseD3D11.h index 4c1e42c0..f8e05a6d 100644 --- a/Graphics/GraphicsEngineD3D11/include/TextureBaseD3D11.h +++ b/Graphics/GraphicsEngineD3D11/include/TextureBaseD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/TextureViewD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/TextureViewD3D11Impl.h index ce46bbbc..652ce3a0 100644 --- a/Graphics/GraphicsEngineD3D11/include/TextureViewD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/TextureViewD3D11Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/pch.h b/Graphics/GraphicsEngineD3D11/include/pch.h index 7a5c39ec..9a33b12a 100644 --- a/Graphics/GraphicsEngineD3D11/include/pch.h +++ b/Graphics/GraphicsEngineD3D11/include/pch.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/include/targetver.h b/Graphics/GraphicsEngineD3D11/include/targetver.h index 0f732684..ccc3ac51 100644 --- a/Graphics/GraphicsEngineD3D11/include/targetver.h +++ b/Graphics/GraphicsEngineD3D11/include/targetver.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/BufferD3D11.h b/Graphics/GraphicsEngineD3D11/interface/BufferD3D11.h index 889b629e..26189c78 100644 --- a/Graphics/GraphicsEngineD3D11/interface/BufferD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/BufferD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/BufferViewD3D11.h b/Graphics/GraphicsEngineD3D11/interface/BufferViewD3D11.h index d569ec05..e4df92c7 100644 --- a/Graphics/GraphicsEngineD3D11/interface/BufferViewD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/BufferViewD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/DeviceContextD3D11.h b/Graphics/GraphicsEngineD3D11/interface/DeviceContextD3D11.h index 76aa1a26..f6d4d74c 100644 --- a/Graphics/GraphicsEngineD3D11/interface/DeviceContextD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/DeviceContextD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/EngineD3D11Attribs.h b/Graphics/GraphicsEngineD3D11/interface/EngineD3D11Attribs.h index fe25f89a..9cc4ce8b 100644 --- a/Graphics/GraphicsEngineD3D11/interface/EngineD3D11Attribs.h +++ b/Graphics/GraphicsEngineD3D11/interface/EngineD3D11Attribs.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/PipelineStateD3D11.h b/Graphics/GraphicsEngineD3D11/interface/PipelineStateD3D11.h index 1294a3fb..0c76a0f5 100644 --- a/Graphics/GraphicsEngineD3D11/interface/PipelineStateD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/PipelineStateD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/RenderDeviceD3D11.h b/Graphics/GraphicsEngineD3D11/interface/RenderDeviceD3D11.h index f3d03a8f..25ed6de0 100644 --- a/Graphics/GraphicsEngineD3D11/interface/RenderDeviceD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/RenderDeviceD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/RenderDeviceFactoryD3D11.h b/Graphics/GraphicsEngineD3D11/interface/RenderDeviceFactoryD3D11.h index 05337aae..f176354e 100644 --- a/Graphics/GraphicsEngineD3D11/interface/RenderDeviceFactoryD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/RenderDeviceFactoryD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/SamplerD3D11.h b/Graphics/GraphicsEngineD3D11/interface/SamplerD3D11.h index 3a05d6db..8ccb14d4 100644 --- a/Graphics/GraphicsEngineD3D11/interface/SamplerD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/SamplerD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/ShaderD3D11.h b/Graphics/GraphicsEngineD3D11/interface/ShaderD3D11.h index ac7faa7e..0017dc27 100644 --- a/Graphics/GraphicsEngineD3D11/interface/ShaderD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/ShaderD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/ShaderResourceBindingD3D11.h b/Graphics/GraphicsEngineD3D11/interface/ShaderResourceBindingD3D11.h index 2d7295fb..1d224546 100644 --- a/Graphics/GraphicsEngineD3D11/interface/ShaderResourceBindingD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/ShaderResourceBindingD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/SwapChainD3D11.h b/Graphics/GraphicsEngineD3D11/interface/SwapChainD3D11.h index 38b95aef..e49a6357 100644 --- a/Graphics/GraphicsEngineD3D11/interface/SwapChainD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/SwapChainD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/TextureD3D11.h b/Graphics/GraphicsEngineD3D11/interface/TextureD3D11.h index cb49d00d..a5cb3b46 100644 --- a/Graphics/GraphicsEngineD3D11/interface/TextureD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/TextureD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/interface/TextureViewD3D11.h b/Graphics/GraphicsEngineD3D11/interface/TextureViewD3D11.h index 59e8d787..69b1b921 100644 --- a/Graphics/GraphicsEngineD3D11/interface/TextureViewD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/TextureViewD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/BufferD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/BufferD3D11Impl.cpp index a8e64dfa..5224cb0b 100644 --- a/Graphics/GraphicsEngineD3D11/src/BufferD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/BufferD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/BufferViewD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/BufferViewD3D11Impl.cpp index f1031de2..13fddcfe 100644 --- a/Graphics/GraphicsEngineD3D11/src/BufferViewD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/BufferViewD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/CommandListD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/CommandListD3D11Impl.cpp index ecd27fdd..d5161592 100644 --- a/Graphics/GraphicsEngineD3D11/src/CommandListD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/CommandListD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/D3D11DebugUtilities.cpp b/Graphics/GraphicsEngineD3D11/src/D3D11DebugUtilities.cpp index 4734ea6a..4a9147d8 100644 --- a/Graphics/GraphicsEngineD3D11/src/D3D11DebugUtilities.cpp +++ b/Graphics/GraphicsEngineD3D11/src/D3D11DebugUtilities.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/D3D11TypeConversions.cpp b/Graphics/GraphicsEngineD3D11/src/D3D11TypeConversions.cpp index 409be5cc..935ee14f 100644 --- a/Graphics/GraphicsEngineD3D11/src/D3D11TypeConversions.cpp +++ b/Graphics/GraphicsEngineD3D11/src/D3D11TypeConversions.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/DLLMain.cpp b/Graphics/GraphicsEngineD3D11/src/DLLMain.cpp index 94065164..58b1c375 100644 --- a/Graphics/GraphicsEngineD3D11/src/DLLMain.cpp +++ b/Graphics/GraphicsEngineD3D11/src/DLLMain.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp index 92f89811..803fab7f 100644 --- a/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp index c5f6859b..964614e6 100644 --- a/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/RenderDeviceD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/RenderDeviceD3D11Impl.cpp index 5f8e9c9b..4614298d 100644 --- a/Graphics/GraphicsEngineD3D11/src/RenderDeviceD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/RenderDeviceD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/RenderDeviceFactoryD3D11.cpp b/Graphics/GraphicsEngineD3D11/src/RenderDeviceFactoryD3D11.cpp index 530b138c..c82385a4 100644 --- a/Graphics/GraphicsEngineD3D11/src/RenderDeviceFactoryD3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/RenderDeviceFactoryD3D11.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/SamplerD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/SamplerD3D11Impl.cpp index bf40b931..0bd53bc5 100644 --- a/Graphics/GraphicsEngineD3D11/src/SamplerD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/SamplerD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/ShaderD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/ShaderD3D11Impl.cpp index 2e8d6857..f747bae2 100644 --- a/Graphics/GraphicsEngineD3D11/src/ShaderD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/ShaderD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/ShaderResourceBindingD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/ShaderResourceBindingD3D11Impl.cpp index ccb8e9b8..6effe2d0 100644 --- a/Graphics/GraphicsEngineD3D11/src/ShaderResourceBindingD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/ShaderResourceBindingD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/ShaderResourceCacheD3D11.cpp b/Graphics/GraphicsEngineD3D11/src/ShaderResourceCacheD3D11.cpp index 95846347..9e6e719d 100644 --- a/Graphics/GraphicsEngineD3D11/src/ShaderResourceCacheD3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/ShaderResourceCacheD3D11.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/ShaderResourceLayoutD3D11.cpp b/Graphics/GraphicsEngineD3D11/src/ShaderResourceLayoutD3D11.cpp index f08977e6..47274ba2 100644 --- a/Graphics/GraphicsEngineD3D11/src/ShaderResourceLayoutD3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/ShaderResourceLayoutD3D11.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/ShaderResourcesD3D11.cpp b/Graphics/GraphicsEngineD3D11/src/ShaderResourcesD3D11.cpp index f593aa36..cfc93de5 100644 --- a/Graphics/GraphicsEngineD3D11/src/ShaderResourcesD3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/ShaderResourcesD3D11.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/SwapChainD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/SwapChainD3D11Impl.cpp index 79d84b1c..76c7d928 100644 --- a/Graphics/GraphicsEngineD3D11/src/SwapChainD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/SwapChainD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/Texture1D_D3D11.cpp b/Graphics/GraphicsEngineD3D11/src/Texture1D_D3D11.cpp index 8e1f3bd5..f762a721 100644 --- a/Graphics/GraphicsEngineD3D11/src/Texture1D_D3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/Texture1D_D3D11.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/Texture2D_D3D11.cpp b/Graphics/GraphicsEngineD3D11/src/Texture2D_D3D11.cpp index 82372121..22631c03 100644 --- a/Graphics/GraphicsEngineD3D11/src/Texture2D_D3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/Texture2D_D3D11.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/Texture3D_D3D11.cpp b/Graphics/GraphicsEngineD3D11/src/Texture3D_D3D11.cpp index 87b09876..5bbb6ad3 100644 --- a/Graphics/GraphicsEngineD3D11/src/Texture3D_D3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/Texture3D_D3D11.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/TextureBaseD3D11.cpp b/Graphics/GraphicsEngineD3D11/src/TextureBaseD3D11.cpp index 68a256a4..c758aa2c 100644 --- a/Graphics/GraphicsEngineD3D11/src/TextureBaseD3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/TextureBaseD3D11.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/TextureViewD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/TextureViewD3D11Impl.cpp index 5876ed60..ecfbca2f 100644 --- a/Graphics/GraphicsEngineD3D11/src/TextureViewD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/TextureViewD3D11Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D11/src/pch.cpp b/Graphics/GraphicsEngineD3D11/src/pch.cpp index 802d627e..ce80eb8f 100644 --- a/Graphics/GraphicsEngineD3D11/src/pch.cpp +++ b/Graphics/GraphicsEngineD3D11/src/pch.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/BufferD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/BufferD3D12Impl.h index 2688dfab..f69fad39 100644 --- a/Graphics/GraphicsEngineD3D12/include/BufferD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/BufferD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/BufferViewD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/BufferViewD3D12Impl.h index 45c9007e..8418cc6c 100644 --- a/Graphics/GraphicsEngineD3D12/include/BufferViewD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/BufferViewD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/CommandContext.h b/Graphics/GraphicsEngineD3D12/include/CommandContext.h index 2b7ebf08..ac69e906 100644 --- a/Graphics/GraphicsEngineD3D12/include/CommandContext.h +++ b/Graphics/GraphicsEngineD3D12/include/CommandContext.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/CommandListD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/CommandListD3D12Impl.h index 4ec16f16..d42700d8 100644 --- a/Graphics/GraphicsEngineD3D12/include/CommandListD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/CommandListD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/CommandListManager.h b/Graphics/GraphicsEngineD3D12/include/CommandListManager.h index 608c5075..b88eb622 100644 --- a/Graphics/GraphicsEngineD3D12/include/CommandListManager.h +++ b/Graphics/GraphicsEngineD3D12/include/CommandListManager.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/CommandQueueD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/CommandQueueD3D12Impl.h index 7b3a465d..071ddde5 100644 --- a/Graphics/GraphicsEngineD3D12/include/CommandQueueD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/CommandQueueD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/D3D12ResourceBase.h b/Graphics/GraphicsEngineD3D12/include/D3D12ResourceBase.h index 84629c48..df0fe667 100644 --- a/Graphics/GraphicsEngineD3D12/include/D3D12ResourceBase.h +++ b/Graphics/GraphicsEngineD3D12/include/D3D12ResourceBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/D3D12TypeConversions.h b/Graphics/GraphicsEngineD3D12/include/D3D12TypeConversions.h index d8741573..0399b1a9 100644 --- a/Graphics/GraphicsEngineD3D12/include/D3D12TypeConversions.h +++ b/Graphics/GraphicsEngineD3D12/include/D3D12TypeConversions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/D3D12TypeDefinitions.h b/Graphics/GraphicsEngineD3D12/include/D3D12TypeDefinitions.h index 761f750b..b35c66cc 100644 --- a/Graphics/GraphicsEngineD3D12/include/D3D12TypeDefinitions.h +++ b/Graphics/GraphicsEngineD3D12/include/D3D12TypeDefinitions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/D3D12Utils.h b/Graphics/GraphicsEngineD3D12/include/D3D12Utils.h index 13dbd204..fed5ff88 100644 --- a/Graphics/GraphicsEngineD3D12/include/D3D12Utils.h +++ b/Graphics/GraphicsEngineD3D12/include/D3D12Utils.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/DescriptorHeap.h b/Graphics/GraphicsEngineD3D12/include/DescriptorHeap.h index 50385bcf..59fe85b5 100644 --- a/Graphics/GraphicsEngineD3D12/include/DescriptorHeap.h +++ b/Graphics/GraphicsEngineD3D12/include/DescriptorHeap.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/DeviceContextD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/DeviceContextD3D12Impl.h index 8acbe73d..2672ebbe 100644 --- a/Graphics/GraphicsEngineD3D12/include/DeviceContextD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/DeviceContextD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/DynamicUploadHeap.h b/Graphics/GraphicsEngineD3D12/include/DynamicUploadHeap.h index 8b62238d..8a3525b4 100644 --- a/Graphics/GraphicsEngineD3D12/include/DynamicUploadHeap.h +++ b/Graphics/GraphicsEngineD3D12/include/DynamicUploadHeap.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/GenerateMips.h b/Graphics/GraphicsEngineD3D12/include/GenerateMips.h index 109858a9..6e858082 100644 --- a/Graphics/GraphicsEngineD3D12/include/GenerateMips.h +++ b/Graphics/GraphicsEngineD3D12/include/GenerateMips.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.h index 872bd87b..9af62ee0 100644 --- a/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/RenderDeviceD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/RenderDeviceD3D12Impl.h index a2309db5..086dbe9d 100644 --- a/Graphics/GraphicsEngineD3D12/include/RenderDeviceD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/RenderDeviceD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/RootSignature.h b/Graphics/GraphicsEngineD3D12/include/RootSignature.h index eb3c99b3..1244f0bf 100644 --- a/Graphics/GraphicsEngineD3D12/include/RootSignature.h +++ b/Graphics/GraphicsEngineD3D12/include/RootSignature.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/SamplerD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/SamplerD3D12Impl.h index eb508f01..dd5a9ddd 100644 --- a/Graphics/GraphicsEngineD3D12/include/SamplerD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/SamplerD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/ShaderD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/ShaderD3D12Impl.h index ec2cea1f..4ee98ae6 100644 --- a/Graphics/GraphicsEngineD3D12/include/ShaderD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/ShaderD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/ShaderResourceBindingD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/ShaderResourceBindingD3D12Impl.h index 67155e01..4b3e366c 100644 --- a/Graphics/GraphicsEngineD3D12/include/ShaderResourceBindingD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/ShaderResourceBindingD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/ShaderResourceCacheD3D12.h b/Graphics/GraphicsEngineD3D12/include/ShaderResourceCacheD3D12.h index ab1a7488..9e71530f 100644 --- a/Graphics/GraphicsEngineD3D12/include/ShaderResourceCacheD3D12.h +++ b/Graphics/GraphicsEngineD3D12/include/ShaderResourceCacheD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/ShaderResourceLayoutD3D12.h b/Graphics/GraphicsEngineD3D12/include/ShaderResourceLayoutD3D12.h index 1300001b..af54a6ba 100644 --- a/Graphics/GraphicsEngineD3D12/include/ShaderResourceLayoutD3D12.h +++ b/Graphics/GraphicsEngineD3D12/include/ShaderResourceLayoutD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/ShaderResourcesD3D12.h b/Graphics/GraphicsEngineD3D12/include/ShaderResourcesD3D12.h index 940a1350..fe3dba66 100644 --- a/Graphics/GraphicsEngineD3D12/include/ShaderResourcesD3D12.h +++ b/Graphics/GraphicsEngineD3D12/include/ShaderResourcesD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/SwapChainD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/SwapChainD3D12Impl.h index 4027daf1..0e73a6b8 100644 --- a/Graphics/GraphicsEngineD3D12/include/SwapChainD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/SwapChainD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/TextureD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/TextureD3D12Impl.h index 89c63702..bb3861c9 100644 --- a/Graphics/GraphicsEngineD3D12/include/TextureD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/TextureD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/TextureViewD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/TextureViewD3D12Impl.h index 17b33922..d8704683 100644 --- a/Graphics/GraphicsEngineD3D12/include/TextureViewD3D12Impl.h +++ b/Graphics/GraphicsEngineD3D12/include/TextureViewD3D12Impl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/include/pch.h b/Graphics/GraphicsEngineD3D12/include/pch.h index 225f72b4..f5c75a67 100644 --- a/Graphics/GraphicsEngineD3D12/include/pch.h +++ b/Graphics/GraphicsEngineD3D12/include/pch.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/BufferD3D12.h b/Graphics/GraphicsEngineD3D12/interface/BufferD3D12.h index 09a30f0f..3439923d 100644 --- a/Graphics/GraphicsEngineD3D12/interface/BufferD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/BufferD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/BufferViewD3D12.h b/Graphics/GraphicsEngineD3D12/interface/BufferViewD3D12.h index af87d9ee..a82136d4 100644 --- a/Graphics/GraphicsEngineD3D12/interface/BufferViewD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/BufferViewD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/CommandQueueD3D12.h b/Graphics/GraphicsEngineD3D12/interface/CommandQueueD3D12.h index d1084002..071b0109 100644 --- a/Graphics/GraphicsEngineD3D12/interface/CommandQueueD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/CommandQueueD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/DeviceContextD3D12.h b/Graphics/GraphicsEngineD3D12/interface/DeviceContextD3D12.h index a04db3d2..833c2693 100644 --- a/Graphics/GraphicsEngineD3D12/interface/DeviceContextD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/DeviceContextD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/PipelineStateD3D12.h b/Graphics/GraphicsEngineD3D12/interface/PipelineStateD3D12.h index b41c379c..e3e385b7 100644 --- a/Graphics/GraphicsEngineD3D12/interface/PipelineStateD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/PipelineStateD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/RenderDeviceD3D12.h b/Graphics/GraphicsEngineD3D12/interface/RenderDeviceD3D12.h index 3a4d8741..9f109af9 100644 --- a/Graphics/GraphicsEngineD3D12/interface/RenderDeviceD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/RenderDeviceD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/RenderDeviceFactoryD3D12.h b/Graphics/GraphicsEngineD3D12/interface/RenderDeviceFactoryD3D12.h index b33d3ec9..39316f02 100644 --- a/Graphics/GraphicsEngineD3D12/interface/RenderDeviceFactoryD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/RenderDeviceFactoryD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/SamplerD3D12.h b/Graphics/GraphicsEngineD3D12/interface/SamplerD3D12.h index bd677b33..3e4e1de7 100644 --- a/Graphics/GraphicsEngineD3D12/interface/SamplerD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/SamplerD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/ShaderD3D12.h b/Graphics/GraphicsEngineD3D12/interface/ShaderD3D12.h index bbeb5b37..439ee2a5 100644 --- a/Graphics/GraphicsEngineD3D12/interface/ShaderD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/ShaderD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/ShaderResourceBindingD3D12.h b/Graphics/GraphicsEngineD3D12/interface/ShaderResourceBindingD3D12.h index 0a562639..ef559921 100644 --- a/Graphics/GraphicsEngineD3D12/interface/ShaderResourceBindingD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/ShaderResourceBindingD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/SwapChainD3D12.h b/Graphics/GraphicsEngineD3D12/interface/SwapChainD3D12.h index dec15615..3ac97989 100644 --- a/Graphics/GraphicsEngineD3D12/interface/SwapChainD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/SwapChainD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/TextureD3D12.h b/Graphics/GraphicsEngineD3D12/interface/TextureD3D12.h index 0646b115..7f769c43 100644 --- a/Graphics/GraphicsEngineD3D12/interface/TextureD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/TextureD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/interface/TextureViewD3D12.h b/Graphics/GraphicsEngineD3D12/interface/TextureViewD3D12.h index 30f5b791..e34676f6 100644 --- a/Graphics/GraphicsEngineD3D12/interface/TextureViewD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/TextureViewD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/BufferD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/BufferD3D12Impl.cpp index 01d5d87f..ac05ccab 100644 --- a/Graphics/GraphicsEngineD3D12/src/BufferD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/BufferD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/BufferViewD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/BufferViewD3D12Impl.cpp index 1dfe7cdc..d56844ef 100644 --- a/Graphics/GraphicsEngineD3D12/src/BufferViewD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/BufferViewD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/CommandContext.cpp b/Graphics/GraphicsEngineD3D12/src/CommandContext.cpp index a39a5fed..00b79965 100644 --- a/Graphics/GraphicsEngineD3D12/src/CommandContext.cpp +++ b/Graphics/GraphicsEngineD3D12/src/CommandContext.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/CommandListManager.cpp b/Graphics/GraphicsEngineD3D12/src/CommandListManager.cpp index 5ea3eaa3..f92065ae 100644 --- a/Graphics/GraphicsEngineD3D12/src/CommandListManager.cpp +++ b/Graphics/GraphicsEngineD3D12/src/CommandListManager.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/CommandQueueD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/CommandQueueD3D12Impl.cpp index e57e5a1a..7e931404 100644 --- a/Graphics/GraphicsEngineD3D12/src/CommandQueueD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/CommandQueueD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/D3D12ResourceBase.cpp b/Graphics/GraphicsEngineD3D12/src/D3D12ResourceBase.cpp index 0744fda7..46d0dfdb 100644 --- a/Graphics/GraphicsEngineD3D12/src/D3D12ResourceBase.cpp +++ b/Graphics/GraphicsEngineD3D12/src/D3D12ResourceBase.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp b/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp index 32b124c7..ab3f4be7 100644 --- a/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp +++ b/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/D3D12Utils.cpp b/Graphics/GraphicsEngineD3D12/src/D3D12Utils.cpp index c2428e16..0d127060 100644 --- a/Graphics/GraphicsEngineD3D12/src/D3D12Utils.cpp +++ b/Graphics/GraphicsEngineD3D12/src/D3D12Utils.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/DLLMain.cpp b/Graphics/GraphicsEngineD3D12/src/DLLMain.cpp index 94065164..58b1c375 100644 --- a/Graphics/GraphicsEngineD3D12/src/DLLMain.cpp +++ b/Graphics/GraphicsEngineD3D12/src/DLLMain.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/DescriptorHeap.cpp b/Graphics/GraphicsEngineD3D12/src/DescriptorHeap.cpp index 70cc57d1..ba279db8 100644 --- a/Graphics/GraphicsEngineD3D12/src/DescriptorHeap.cpp +++ b/Graphics/GraphicsEngineD3D12/src/DescriptorHeap.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp index b54de44f..20b2304d 100644 --- a/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/DynamicUploadHeap.cpp b/Graphics/GraphicsEngineD3D12/src/DynamicUploadHeap.cpp index a02a1d28..01e7d4d7 100644 --- a/Graphics/GraphicsEngineD3D12/src/DynamicUploadHeap.cpp +++ b/Graphics/GraphicsEngineD3D12/src/DynamicUploadHeap.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/GenerateMips.cpp b/Graphics/GraphicsEngineD3D12/src/GenerateMips.cpp index 26f949fe..70aaff66 100644 --- a/Graphics/GraphicsEngineD3D12/src/GenerateMips.cpp +++ b/Graphics/GraphicsEngineD3D12/src/GenerateMips.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp index d1ba234c..4c9442e4 100644 --- a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/RenderDeviceD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/RenderDeviceD3D12Impl.cpp index 7bb317f5..027b94bf 100644 --- a/Graphics/GraphicsEngineD3D12/src/RenderDeviceD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/RenderDeviceD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/RenderDeviceFactoryD3D12.cpp b/Graphics/GraphicsEngineD3D12/src/RenderDeviceFactoryD3D12.cpp index 91bc50c1..9ff5c668 100644 --- a/Graphics/GraphicsEngineD3D12/src/RenderDeviceFactoryD3D12.cpp +++ b/Graphics/GraphicsEngineD3D12/src/RenderDeviceFactoryD3D12.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/RootSignature.cpp b/Graphics/GraphicsEngineD3D12/src/RootSignature.cpp index 4d8bb04d..1adcede1 100644 --- a/Graphics/GraphicsEngineD3D12/src/RootSignature.cpp +++ b/Graphics/GraphicsEngineD3D12/src/RootSignature.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/SamplerD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/SamplerD3D12Impl.cpp index f811373d..f9083423 100644 --- a/Graphics/GraphicsEngineD3D12/src/SamplerD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/SamplerD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/ShaderD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/ShaderD3D12Impl.cpp index 0598fcc1..dc4a0d6c 100644 --- a/Graphics/GraphicsEngineD3D12/src/ShaderD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/ShaderD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/ShaderResourceBindingD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/ShaderResourceBindingD3D12Impl.cpp index 91f9660b..8af3d7a2 100644 --- a/Graphics/GraphicsEngineD3D12/src/ShaderResourceBindingD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/ShaderResourceBindingD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/ShaderResourceCacheD3D12.cpp b/Graphics/GraphicsEngineD3D12/src/ShaderResourceCacheD3D12.cpp index cc628725..2b3ae439 100644 --- a/Graphics/GraphicsEngineD3D12/src/ShaderResourceCacheD3D12.cpp +++ b/Graphics/GraphicsEngineD3D12/src/ShaderResourceCacheD3D12.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/ShaderResourceLayoutD3D12.cpp b/Graphics/GraphicsEngineD3D12/src/ShaderResourceLayoutD3D12.cpp index cfbdf774..e94ab1d8 100644 --- a/Graphics/GraphicsEngineD3D12/src/ShaderResourceLayoutD3D12.cpp +++ b/Graphics/GraphicsEngineD3D12/src/ShaderResourceLayoutD3D12.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/ShaderResourcesD3D12.cpp b/Graphics/GraphicsEngineD3D12/src/ShaderResourcesD3D12.cpp index c42f663e..1127d03d 100644 --- a/Graphics/GraphicsEngineD3D12/src/ShaderResourcesD3D12.cpp +++ b/Graphics/GraphicsEngineD3D12/src/ShaderResourcesD3D12.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/SwapChainD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/SwapChainD3D12Impl.cpp index a0aa1e08..b8f326ea 100644 --- a/Graphics/GraphicsEngineD3D12/src/SwapChainD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/SwapChainD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/TextureD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/TextureD3D12Impl.cpp index 7310b68e..a8ed0f54 100644 --- a/Graphics/GraphicsEngineD3D12/src/TextureD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/TextureD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/TextureViewD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/TextureViewD3D12Impl.cpp index 8e386fbd..7f5ee5e5 100644 --- a/Graphics/GraphicsEngineD3D12/src/TextureViewD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/TextureViewD3D12Impl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3D12/src/pch.cpp b/Graphics/GraphicsEngineD3D12/src/pch.cpp index d5f45c6a..3eef26a8 100644 --- a/Graphics/GraphicsEngineD3D12/src/pch.cpp +++ b/Graphics/GraphicsEngineD3D12/src/pch.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/include/D3DErrors.h b/Graphics/GraphicsEngineD3DBase/include/D3DErrors.h index e70e4f87..0a9233e4 100644 --- a/Graphics/GraphicsEngineD3DBase/include/D3DErrors.h +++ b/Graphics/GraphicsEngineD3DBase/include/D3DErrors.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/include/D3DShaderResourceLoader.h b/Graphics/GraphicsEngineD3DBase/include/D3DShaderResourceLoader.h index 5b3920d4..cb3650bb 100644 --- a/Graphics/GraphicsEngineD3DBase/include/D3DShaderResourceLoader.h +++ b/Graphics/GraphicsEngineD3DBase/include/D3DShaderResourceLoader.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/include/D3DTypeConversionImpl.h b/Graphics/GraphicsEngineD3DBase/include/D3DTypeConversionImpl.h index 8ac47a4c..e5d328e3 100644 --- a/Graphics/GraphicsEngineD3DBase/include/D3DTypeConversionImpl.h +++ b/Graphics/GraphicsEngineD3DBase/include/D3DTypeConversionImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/include/D3DViewDescConversionImpl.h b/Graphics/GraphicsEngineD3DBase/include/D3DViewDescConversionImpl.h index 6f570db0..eac43e13 100644 --- a/Graphics/GraphicsEngineD3DBase/include/D3DViewDescConversionImpl.h +++ b/Graphics/GraphicsEngineD3DBase/include/D3DViewDescConversionImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/include/DXGITypeConversions.h b/Graphics/GraphicsEngineD3DBase/include/DXGITypeConversions.h index 2d2dbef1..8196dd30 100644 --- a/Graphics/GraphicsEngineD3DBase/include/DXGITypeConversions.h +++ b/Graphics/GraphicsEngineD3DBase/include/DXGITypeConversions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/include/RenderDeviceD3DBase.h b/Graphics/GraphicsEngineD3DBase/include/RenderDeviceD3DBase.h index 3186eedd..e94d3cfe 100644 --- a/Graphics/GraphicsEngineD3DBase/include/RenderDeviceD3DBase.h +++ b/Graphics/GraphicsEngineD3DBase/include/RenderDeviceD3DBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/include/ShaderD3DBase.h b/Graphics/GraphicsEngineD3DBase/include/ShaderD3DBase.h index d529db6a..c139af08 100644 --- a/Graphics/GraphicsEngineD3DBase/include/ShaderD3DBase.h +++ b/Graphics/GraphicsEngineD3DBase/include/ShaderD3DBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/include/ShaderResources.h b/Graphics/GraphicsEngineD3DBase/include/ShaderResources.h index a739fb14..8972e2be 100644 --- a/Graphics/GraphicsEngineD3DBase/include/ShaderResources.h +++ b/Graphics/GraphicsEngineD3DBase/include/ShaderResources.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/include/ShaderVariableD3DBase.h b/Graphics/GraphicsEngineD3DBase/include/ShaderVariableD3DBase.h index befdde09..9580f33c 100644 --- a/Graphics/GraphicsEngineD3DBase/include/ShaderVariableD3DBase.h +++ b/Graphics/GraphicsEngineD3DBase/include/ShaderVariableD3DBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/src/DXGITypeConversions.cpp b/Graphics/GraphicsEngineD3DBase/src/DXGITypeConversions.cpp index 20f24dac..53a531f0 100644 --- a/Graphics/GraphicsEngineD3DBase/src/DXGITypeConversions.cpp +++ b/Graphics/GraphicsEngineD3DBase/src/DXGITypeConversions.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp b/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp index e64aea85..d71d6ab4 100644 --- a/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp +++ b/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineD3DBase/src/ShaderResources.cpp b/Graphics/GraphicsEngineD3DBase/src/ShaderResources.cpp index ffe846d6..6cedfa41 100644 --- a/Graphics/GraphicsEngineD3DBase/src/ShaderResources.cpp +++ b/Graphics/GraphicsEngineD3DBase/src/ShaderResources.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/AsyncWritableResource.h b/Graphics/GraphicsEngineOpenGL/include/AsyncWritableResource.h index 46aa70e9..8b7bc862 100644 --- a/Graphics/GraphicsEngineOpenGL/include/AsyncWritableResource.h +++ b/Graphics/GraphicsEngineOpenGL/include/AsyncWritableResource.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/BufferGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/BufferGLImpl.h index 9d29219f..cb0aa744 100644 --- a/Graphics/GraphicsEngineOpenGL/include/BufferGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/BufferGLImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/BufferViewGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/BufferViewGLImpl.h index 30f2181f..c2a11c4a 100644 --- a/Graphics/GraphicsEngineOpenGL/include/BufferViewGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/BufferViewGLImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.h index 25e1e21c..2a0db394 100644 --- a/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/FBOCache.h b/Graphics/GraphicsEngineOpenGL/include/FBOCache.h index dbe66acf..8e5754da 100644 --- a/Graphics/GraphicsEngineOpenGL/include/FBOCache.h +++ b/Graphics/GraphicsEngineOpenGL/include/FBOCache.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/GLContext.h b/Graphics/GraphicsEngineOpenGL/include/GLContext.h index d5ca746e..f70c9020 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLContext.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLContext.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/GLContextAndroid.h b/Graphics/GraphicsEngineOpenGL/include/GLContextAndroid.h index 68270a8f..8e64b2cd 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLContextAndroid.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLContextAndroid.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/GLContextLinux.h b/Graphics/GraphicsEngineOpenGL/include/GLContextLinux.h index 20b1b5a7..e4530fd7 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLContextLinux.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLContextLinux.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/GLContextState.h b/Graphics/GraphicsEngineOpenGL/include/GLContextState.h index 61d9df1b..ab985d1d 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLContextState.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLContextState.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/GLContextWindows.h b/Graphics/GraphicsEngineOpenGL/include/GLContextWindows.h index 38895afa..481c0299 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLContextWindows.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLContextWindows.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/GLObjectWrapper.h b/Graphics/GraphicsEngineOpenGL/include/GLObjectWrapper.h index 8736db4f..520e9965 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLObjectWrapper.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLObjectWrapper.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/GLProgram.h b/Graphics/GraphicsEngineOpenGL/include/GLProgram.h index 14de5069..7ccd0ea5 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLProgram.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLProgram.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/GLProgramResources.h b/Graphics/GraphicsEngineOpenGL/include/GLProgramResources.h index c7573abb..1442319c 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLProgramResources.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLProgramResources.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/GLStubs.h b/Graphics/GraphicsEngineOpenGL/include/GLStubs.h index fa9eff34..d3d237ab 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLStubs.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLStubs.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/GLTypeConversions.h b/Graphics/GraphicsEngineOpenGL/include/GLTypeConversions.h index 0e55ddef..84b77e03 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLTypeConversions.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLTypeConversions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h index 5f3e6e67..f7b6193c 100644 --- a/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLESImpl.h b/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLESImpl.h index e31786b9..cb542177 100644 --- a/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLESImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLESImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLImpl.h index e9938011..e550da3f 100644 --- a/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/RenderDeviceGLImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/SamplerGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/SamplerGLImpl.h index dfe3c984..98dfe4be 100644 --- a/Graphics/GraphicsEngineOpenGL/include/SamplerGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/SamplerGLImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/ShaderGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/ShaderGLImpl.h index 88b12a3d..fd9ac9b8 100644 --- a/Graphics/GraphicsEngineOpenGL/include/ShaderGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/ShaderGLImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h index 9645b3e2..53c1af98 100644 --- a/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/SwapChainGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/SwapChainGLImpl.h index f6ac58ea..4e634b87 100644 --- a/Graphics/GraphicsEngineOpenGL/include/SwapChainGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/SwapChainGLImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/TexRegionRender.h b/Graphics/GraphicsEngineOpenGL/include/TexRegionRender.h index cb9aaa88..951fcfdc 100644 --- a/Graphics/GraphicsEngineOpenGL/include/TexRegionRender.h +++ b/Graphics/GraphicsEngineOpenGL/include/TexRegionRender.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/Texture1DArray_OGL.h b/Graphics/GraphicsEngineOpenGL/include/Texture1DArray_OGL.h index fe5bd09e..186a8ff5 100644 --- a/Graphics/GraphicsEngineOpenGL/include/Texture1DArray_OGL.h +++ b/Graphics/GraphicsEngineOpenGL/include/Texture1DArray_OGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/Texture1D_OGL.h b/Graphics/GraphicsEngineOpenGL/include/Texture1D_OGL.h index e16ecb6f..ac9dd25a 100644 --- a/Graphics/GraphicsEngineOpenGL/include/Texture1D_OGL.h +++ b/Graphics/GraphicsEngineOpenGL/include/Texture1D_OGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/Texture2DArray_OGL.h b/Graphics/GraphicsEngineOpenGL/include/Texture2DArray_OGL.h index 8792cd4c..86262eab 100644 --- a/Graphics/GraphicsEngineOpenGL/include/Texture2DArray_OGL.h +++ b/Graphics/GraphicsEngineOpenGL/include/Texture2DArray_OGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/Texture2D_OGL.h b/Graphics/GraphicsEngineOpenGL/include/Texture2D_OGL.h index 9d7e9772..ac828b89 100644 --- a/Graphics/GraphicsEngineOpenGL/include/Texture2D_OGL.h +++ b/Graphics/GraphicsEngineOpenGL/include/Texture2D_OGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/Texture3D_OGL.h b/Graphics/GraphicsEngineOpenGL/include/Texture3D_OGL.h index 1e27b3a7..f7640d5f 100644 --- a/Graphics/GraphicsEngineOpenGL/include/Texture3D_OGL.h +++ b/Graphics/GraphicsEngineOpenGL/include/Texture3D_OGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/TextureBaseGL.h b/Graphics/GraphicsEngineOpenGL/include/TextureBaseGL.h index 767d6aac..c0c5ca66 100644 --- a/Graphics/GraphicsEngineOpenGL/include/TextureBaseGL.h +++ b/Graphics/GraphicsEngineOpenGL/include/TextureBaseGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/TextureCubeArray_OGL.h b/Graphics/GraphicsEngineOpenGL/include/TextureCubeArray_OGL.h index b03c6eb8..cad44e71 100644 --- a/Graphics/GraphicsEngineOpenGL/include/TextureCubeArray_OGL.h +++ b/Graphics/GraphicsEngineOpenGL/include/TextureCubeArray_OGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/TextureCube_OGL.h b/Graphics/GraphicsEngineOpenGL/include/TextureCube_OGL.h index df00331e..05921b01 100644 --- a/Graphics/GraphicsEngineOpenGL/include/TextureCube_OGL.h +++ b/Graphics/GraphicsEngineOpenGL/include/TextureCube_OGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/TextureViewGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/TextureViewGLImpl.h index 83b12daa..f06ed0d2 100644 --- a/Graphics/GraphicsEngineOpenGL/include/TextureViewGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/TextureViewGLImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/VAOCache.h b/Graphics/GraphicsEngineOpenGL/include/VAOCache.h index cd2995c8..5b064b50 100644 --- a/Graphics/GraphicsEngineOpenGL/include/VAOCache.h +++ b/Graphics/GraphicsEngineOpenGL/include/VAOCache.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/include/pch.h b/Graphics/GraphicsEngineOpenGL/include/pch.h index af72d7f7..e9e04272 100644 --- a/Graphics/GraphicsEngineOpenGL/include/pch.h +++ b/Graphics/GraphicsEngineOpenGL/include/pch.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/BaseInterfacesGL.h b/Graphics/GraphicsEngineOpenGL/interface/BaseInterfacesGL.h index 45a281d7..e3899b69 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/BaseInterfacesGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/BaseInterfacesGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/BufferGL.h b/Graphics/GraphicsEngineOpenGL/interface/BufferGL.h index 44b1bde5..ab47d940 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/BufferGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/BufferGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/BufferViewGL.h b/Graphics/GraphicsEngineOpenGL/interface/BufferViewGL.h index 593d21ea..1b3a246d 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/BufferViewGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/BufferViewGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/DeviceContextGL.h b/Graphics/GraphicsEngineOpenGL/interface/DeviceContextGL.h index db0af845..4cedfd59 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/DeviceContextGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/DeviceContextGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/PipelineStateGL.h b/Graphics/GraphicsEngineOpenGL/interface/PipelineStateGL.h index 6aea5768..191fc6c9 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/PipelineStateGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/PipelineStateGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceFactoryOpenGL.h b/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceFactoryOpenGL.h index 36d05353..31fe9c1f 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceFactoryOpenGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceFactoryOpenGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceGL.h b/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceGL.h index afe3ab7a..e3fd08ea 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceGLES.h b/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceGLES.h index f370d224..4c45558c 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceGLES.h +++ b/Graphics/GraphicsEngineOpenGL/interface/RenderDeviceGLES.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/SamplerGL.h b/Graphics/GraphicsEngineOpenGL/interface/SamplerGL.h index b8623c1b..0ca9929f 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/SamplerGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/SamplerGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/ShaderGL.h b/Graphics/GraphicsEngineOpenGL/interface/ShaderGL.h index 4482669d..c2f7a072 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/ShaderGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/ShaderGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/ShaderResourceBindingGL.h b/Graphics/GraphicsEngineOpenGL/interface/ShaderResourceBindingGL.h index f59a7ec6..ef7c251d 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/ShaderResourceBindingGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/ShaderResourceBindingGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/SwapChainGL.h b/Graphics/GraphicsEngineOpenGL/interface/SwapChainGL.h index 9526d731..d77eb4e6 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/SwapChainGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/SwapChainGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/TextureGL.h b/Graphics/GraphicsEngineOpenGL/interface/TextureGL.h index b5752469..2e62f577 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/TextureGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/TextureGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/interface/TextureViewGL.h b/Graphics/GraphicsEngineOpenGL/interface/TextureViewGL.h index bfd5b395..ecd6a3f8 100644 --- a/Graphics/GraphicsEngineOpenGL/interface/TextureViewGL.h +++ b/Graphics/GraphicsEngineOpenGL/interface/TextureViewGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/BufferGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/BufferGLImpl.cpp index de6ab113..7f88eaed 100644 --- a/Graphics/GraphicsEngineOpenGL/src/BufferGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/BufferGLImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/BufferViewGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/BufferViewGLImpl.cpp index 9b7b2a74..154b508d 100644 --- a/Graphics/GraphicsEngineOpenGL/src/BufferViewGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/BufferViewGLImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/DLLMain.cpp b/Graphics/GraphicsEngineOpenGL/src/DLLMain.cpp index 94065164..58b1c375 100644 --- a/Graphics/GraphicsEngineOpenGL/src/DLLMain.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/DLLMain.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp index d833cb62..5946f899 100644 --- a/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/FBOCache.cpp b/Graphics/GraphicsEngineOpenGL/src/FBOCache.cpp index 74d608eb..238c1025 100644 --- a/Graphics/GraphicsEngineOpenGL/src/FBOCache.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/FBOCache.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/GLContextAndroid.cpp b/Graphics/GraphicsEngineOpenGL/src/GLContextAndroid.cpp index 3bafe954..1abda109 100644 --- a/Graphics/GraphicsEngineOpenGL/src/GLContextAndroid.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/GLContextAndroid.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/GLContextLinux.cpp b/Graphics/GraphicsEngineOpenGL/src/GLContextLinux.cpp index c66abff5..c20b4b9f 100644 --- a/Graphics/GraphicsEngineOpenGL/src/GLContextLinux.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/GLContextLinux.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/GLContextState.cpp b/Graphics/GraphicsEngineOpenGL/src/GLContextState.cpp index 650a3f1a..d841938d 100644 --- a/Graphics/GraphicsEngineOpenGL/src/GLContextState.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/GLContextState.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/GLContextWindows.cpp b/Graphics/GraphicsEngineOpenGL/src/GLContextWindows.cpp index 65fcb26c..a09d8a2a 100644 --- a/Graphics/GraphicsEngineOpenGL/src/GLContextWindows.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/GLContextWindows.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/GLObjectWrapper.cpp b/Graphics/GraphicsEngineOpenGL/src/GLObjectWrapper.cpp index e249a40f..5f183c9c 100644 --- a/Graphics/GraphicsEngineOpenGL/src/GLObjectWrapper.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/GLObjectWrapper.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/GLProgram.cpp b/Graphics/GraphicsEngineOpenGL/src/GLProgram.cpp index 85f1c5e7..487ebcf9 100644 --- a/Graphics/GraphicsEngineOpenGL/src/GLProgram.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/GLProgram.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/GLProgramResources.cpp b/Graphics/GraphicsEngineOpenGL/src/GLProgramResources.cpp index 81350228..bf90d650 100644 --- a/Graphics/GraphicsEngineOpenGL/src/GLProgramResources.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/GLProgramResources.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/GLStubs.cpp b/Graphics/GraphicsEngineOpenGL/src/GLStubs.cpp index ce2c4d61..1407c2e2 100644 --- a/Graphics/GraphicsEngineOpenGL/src/GLStubs.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/GLStubs.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/GLTypeConversions.cpp b/Graphics/GraphicsEngineOpenGL/src/GLTypeConversions.cpp index 79ba5591..e53849f3 100644 --- a/Graphics/GraphicsEngineOpenGL/src/GLTypeConversions.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/GLTypeConversions.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp index ad0a2215..360e21c0 100644 --- a/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/RenderDeviceFactoryOpenGL.cpp b/Graphics/GraphicsEngineOpenGL/src/RenderDeviceFactoryOpenGL.cpp index b2ba404e..fd467523 100644 --- a/Graphics/GraphicsEngineOpenGL/src/RenderDeviceFactoryOpenGL.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/RenderDeviceFactoryOpenGL.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLESImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLESImpl.cpp index 1aaa8ab2..041b4fcd 100644 --- a/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLESImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLESImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp index 59d193c1..1eda4043 100644 --- a/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/SamplerGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/SamplerGLImpl.cpp index 143aa469..b09eb2b5 100644 --- a/Graphics/GraphicsEngineOpenGL/src/SamplerGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/SamplerGLImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/ShaderGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/ShaderGLImpl.cpp index 261b9161..d088141f 100644 --- a/Graphics/GraphicsEngineOpenGL/src/ShaderGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/ShaderGLImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp index 961975ea..fe9760b3 100644 --- a/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/SwapChainGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/SwapChainGLImpl.cpp index d067db7b..a56f669c 100644 --- a/Graphics/GraphicsEngineOpenGL/src/SwapChainGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/SwapChainGLImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/TexRegionRender.cpp b/Graphics/GraphicsEngineOpenGL/src/TexRegionRender.cpp index 7b434c18..0248a74d 100644 --- a/Graphics/GraphicsEngineOpenGL/src/TexRegionRender.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/TexRegionRender.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/Texture1DArray_OGL.cpp b/Graphics/GraphicsEngineOpenGL/src/Texture1DArray_OGL.cpp index efd522f0..d636f8b4 100644 --- a/Graphics/GraphicsEngineOpenGL/src/Texture1DArray_OGL.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/Texture1DArray_OGL.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/Texture1D_OGL.cpp b/Graphics/GraphicsEngineOpenGL/src/Texture1D_OGL.cpp index 96e1773b..2a4a1fd7 100644 --- a/Graphics/GraphicsEngineOpenGL/src/Texture1D_OGL.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/Texture1D_OGL.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/Texture2DArray_OGL.cpp b/Graphics/GraphicsEngineOpenGL/src/Texture2DArray_OGL.cpp index c7b3ad64..8c943e62 100644 --- a/Graphics/GraphicsEngineOpenGL/src/Texture2DArray_OGL.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/Texture2DArray_OGL.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/Texture2D_OGL.cpp b/Graphics/GraphicsEngineOpenGL/src/Texture2D_OGL.cpp index ccc28ad9..372c20cf 100644 --- a/Graphics/GraphicsEngineOpenGL/src/Texture2D_OGL.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/Texture2D_OGL.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/Texture3D_OGL.cpp b/Graphics/GraphicsEngineOpenGL/src/Texture3D_OGL.cpp index 05103736..064a365b 100644 --- a/Graphics/GraphicsEngineOpenGL/src/Texture3D_OGL.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/Texture3D_OGL.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/TextureBaseGL.cpp b/Graphics/GraphicsEngineOpenGL/src/TextureBaseGL.cpp index 669f67e9..cf40f66e 100644 --- a/Graphics/GraphicsEngineOpenGL/src/TextureBaseGL.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/TextureBaseGL.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/TextureCubeArray_OGL.cpp b/Graphics/GraphicsEngineOpenGL/src/TextureCubeArray_OGL.cpp index 33e2ca5e..25f6d9fb 100644 --- a/Graphics/GraphicsEngineOpenGL/src/TextureCubeArray_OGL.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/TextureCubeArray_OGL.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/TextureCube_OGL.cpp b/Graphics/GraphicsEngineOpenGL/src/TextureCube_OGL.cpp index cfdd4a7f..50103afc 100644 --- a/Graphics/GraphicsEngineOpenGL/src/TextureCube_OGL.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/TextureCube_OGL.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/TextureViewGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/TextureViewGLImpl.cpp index 4fc821cd..c955a33c 100644 --- a/Graphics/GraphicsEngineOpenGL/src/TextureViewGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/TextureViewGLImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/VAOCache.cpp b/Graphics/GraphicsEngineOpenGL/src/VAOCache.cpp index 0a87619e..13fbdc4c 100644 --- a/Graphics/GraphicsEngineOpenGL/src/VAOCache.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/VAOCache.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsEngineOpenGL/src/pch.cpp b/Graphics/GraphicsEngineOpenGL/src/pch.cpp index ca5ae6c9..c8124090 100644 --- a/Graphics/GraphicsEngineOpenGL/src/pch.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/pch.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/include/BasicShaderSourceStreamFactory.h b/Graphics/GraphicsTools/include/BasicShaderSourceStreamFactory.h index 7d485a87..335a3525 100644 --- a/Graphics/GraphicsTools/include/BasicShaderSourceStreamFactory.h +++ b/Graphics/GraphicsTools/include/BasicShaderSourceStreamFactory.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/include/CommonlyUsedStates.h b/Graphics/GraphicsTools/include/CommonlyUsedStates.h index 899a0b15..b6aa2d05 100644 --- a/Graphics/GraphicsTools/include/CommonlyUsedStates.h +++ b/Graphics/GraphicsTools/include/CommonlyUsedStates.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/include/GraphicsUtilities.h b/Graphics/GraphicsTools/include/GraphicsUtilities.h index ecd7d3c1..f8031368 100644 --- a/Graphics/GraphicsTools/include/GraphicsUtilities.h +++ b/Graphics/GraphicsTools/include/GraphicsUtilities.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/include/ShaderMacroHelper.h b/Graphics/GraphicsTools/include/ShaderMacroHelper.h index 15a2137b..c7bfff13 100644 --- a/Graphics/GraphicsTools/include/ShaderMacroHelper.h +++ b/Graphics/GraphicsTools/include/ShaderMacroHelper.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/include/TextureUploader.h b/Graphics/GraphicsTools/include/TextureUploader.h index 9f528ad3..1a9756d5 100644 --- a/Graphics/GraphicsTools/include/TextureUploader.h +++ b/Graphics/GraphicsTools/include/TextureUploader.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/include/TextureUploaderBase.h b/Graphics/GraphicsTools/include/TextureUploaderBase.h index 4cb6f2ef..b98007ed 100644 --- a/Graphics/GraphicsTools/include/TextureUploaderBase.h +++ b/Graphics/GraphicsTools/include/TextureUploaderBase.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/include/TextureUploaderD3D11.h b/Graphics/GraphicsTools/include/TextureUploaderD3D11.h index 48d48aa3..7886a15b 100644 --- a/Graphics/GraphicsTools/include/TextureUploaderD3D11.h +++ b/Graphics/GraphicsTools/include/TextureUploaderD3D11.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/include/TextureUploaderD3D12.h b/Graphics/GraphicsTools/include/TextureUploaderD3D12.h index ff11ec9c..172cab35 100644 --- a/Graphics/GraphicsTools/include/TextureUploaderD3D12.h +++ b/Graphics/GraphicsTools/include/TextureUploaderD3D12.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/include/TextureUploaderGL.h b/Graphics/GraphicsTools/include/TextureUploaderGL.h index 5e868870..c4d3e4f6 100644 --- a/Graphics/GraphicsTools/include/TextureUploaderGL.h +++ b/Graphics/GraphicsTools/include/TextureUploaderGL.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/include/pch.h b/Graphics/GraphicsTools/include/pch.h index 690233d1..2cbc342e 100644 --- a/Graphics/GraphicsTools/include/pch.h +++ b/Graphics/GraphicsTools/include/pch.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/src/BasicShaderSourceStreamFactory.cpp b/Graphics/GraphicsTools/src/BasicShaderSourceStreamFactory.cpp index d0829860..379fba49 100644 --- a/Graphics/GraphicsTools/src/BasicShaderSourceStreamFactory.cpp +++ b/Graphics/GraphicsTools/src/BasicShaderSourceStreamFactory.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/src/GraphicsUtilities.cpp b/Graphics/GraphicsTools/src/GraphicsUtilities.cpp index 4c4bb919..67af25b1 100644 --- a/Graphics/GraphicsTools/src/GraphicsUtilities.cpp +++ b/Graphics/GraphicsTools/src/GraphicsUtilities.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/src/TextureUploader.cpp b/Graphics/GraphicsTools/src/TextureUploader.cpp index 533634a2..2a7b45c5 100644 --- a/Graphics/GraphicsTools/src/TextureUploader.cpp +++ b/Graphics/GraphicsTools/src/TextureUploader.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/src/TextureUploaderD3D11.cpp b/Graphics/GraphicsTools/src/TextureUploaderD3D11.cpp index 16cc74a1..25bb1e62 100644 --- a/Graphics/GraphicsTools/src/TextureUploaderD3D11.cpp +++ b/Graphics/GraphicsTools/src/TextureUploaderD3D11.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/src/TextureUploaderD3D12.cpp b/Graphics/GraphicsTools/src/TextureUploaderD3D12.cpp index 85f57257..c5bfdb7b 100644 --- a/Graphics/GraphicsTools/src/TextureUploaderD3D12.cpp +++ b/Graphics/GraphicsTools/src/TextureUploaderD3D12.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/src/TextureUploaderGL.cpp b/Graphics/GraphicsTools/src/TextureUploaderGL.cpp index 4158fc89..8f5e863b 100644 --- a/Graphics/GraphicsTools/src/TextureUploaderGL.cpp +++ b/Graphics/GraphicsTools/src/TextureUploaderGL.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/GraphicsTools/src/pch.cpp b/Graphics/GraphicsTools/src/pch.cpp index d5f45c6a..3eef26a8 100644 --- a/Graphics/GraphicsTools/src/pch.cpp +++ b/Graphics/GraphicsTools/src/pch.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/HLSL2GLSLConverterLib/include/GLSLDefinitions.h b/Graphics/HLSL2GLSLConverterLib/include/GLSLDefinitions.h index a6da27a1..d5070da1 100644 --- a/Graphics/HLSL2GLSLConverterLib/include/GLSLDefinitions.h +++ b/Graphics/HLSL2GLSLConverterLib/include/GLSLDefinitions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/HLSL2GLSLConverterLib/include/GLSLDefinitions_inc.h b/Graphics/HLSL2GLSLConverterLib/include/GLSLDefinitions_inc.h index e25342b4..bcd7b89e 100644 --- a/Graphics/HLSL2GLSLConverterLib/include/GLSLDefinitions_inc.h +++ b/Graphics/HLSL2GLSLConverterLib/include/GLSLDefinitions_inc.h @@ -1,4 +1,4 @@ -"/* Copyright 2015-2017 Egor Yusov\n" +"/* Copyright 2015-2018 Egor Yusov\n" " * \n" " * Licensed under the Apache License, Version 2.0 (the \"License\");\n" " * you may not use this file except in compliance with the License.\n" diff --git a/Graphics/HLSL2GLSLConverterLib/include/HLSL2GLSLConverterImpl.h b/Graphics/HLSL2GLSLConverterLib/include/HLSL2GLSLConverterImpl.h index f8e5cfe7..ba1a6a58 100644 --- a/Graphics/HLSL2GLSLConverterLib/include/HLSL2GLSLConverterImpl.h +++ b/Graphics/HLSL2GLSLConverterLib/include/HLSL2GLSLConverterImpl.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/HLSL2GLSLConverterLib/include/HLSL2GLSLConverterObject.h b/Graphics/HLSL2GLSLConverterLib/include/HLSL2GLSLConverterObject.h index 233b993a..ec9c5faf 100644 --- a/Graphics/HLSL2GLSLConverterLib/include/HLSL2GLSLConverterObject.h +++ b/Graphics/HLSL2GLSLConverterLib/include/HLSL2GLSLConverterObject.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/HLSL2GLSLConverterLib/include/HLSLKeywords.h b/Graphics/HLSL2GLSLConverterLib/include/HLSLKeywords.h index 77972817..8a810011 100644 --- a/Graphics/HLSL2GLSLConverterLib/include/HLSLKeywords.h +++ b/Graphics/HLSL2GLSLConverterLib/include/HLSLKeywords.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/HLSL2GLSLConverterLib/include/pch.h b/Graphics/HLSL2GLSLConverterLib/include/pch.h index 47822d32..c768aaa6 100644 --- a/Graphics/HLSL2GLSLConverterLib/include/pch.h +++ b/Graphics/HLSL2GLSLConverterLib/include/pch.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/HLSL2GLSLConverterLib/interface/HLSL2GLSLConverter.h b/Graphics/HLSL2GLSLConverterLib/interface/HLSL2GLSLConverter.h index 133f1378..0a0c532f 100644 --- a/Graphics/HLSL2GLSLConverterLib/interface/HLSL2GLSLConverter.h +++ b/Graphics/HLSL2GLSLConverterLib/interface/HLSL2GLSLConverter.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/HLSL2GLSLConverterLib/src/HLSL2GLSLConverterImpl.cpp b/Graphics/HLSL2GLSLConverterLib/src/HLSL2GLSLConverterImpl.cpp index 7443d54d..cdb8084a 100644 --- a/Graphics/HLSL2GLSLConverterLib/src/HLSL2GLSLConverterImpl.cpp +++ b/Graphics/HLSL2GLSLConverterLib/src/HLSL2GLSLConverterImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/HLSL2GLSLConverterLib/src/HLSL2GLSLConverterObject.cpp b/Graphics/HLSL2GLSLConverterLib/src/HLSL2GLSLConverterObject.cpp index 1d014658..10a79a5a 100644 --- a/Graphics/HLSL2GLSLConverterLib/src/HLSL2GLSLConverterObject.cpp +++ b/Graphics/HLSL2GLSLConverterLib/src/HLSL2GLSLConverterObject.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Graphics/HLSL2GLSLConverterLib/src/pch.cpp b/Graphics/HLSL2GLSLConverterLib/src/pch.cpp index ca5ae6c9..c8124090 100644 --- a/Graphics/HLSL2GLSLConverterLib/src/pch.cpp +++ b/Graphics/HLSL2GLSLConverterLib/src/pch.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Android/include/AndroidDebug.h b/Platforms/Android/include/AndroidDebug.h index 18ab62a5..498e9d97 100644 --- a/Platforms/Android/include/AndroidDebug.h +++ b/Platforms/Android/include/AndroidDebug.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Android/include/AndroidFileSystem.h b/Platforms/Android/include/AndroidFileSystem.h index 24915492..98a1aba9 100644 --- a/Platforms/Android/include/AndroidFileSystem.h +++ b/Platforms/Android/include/AndroidFileSystem.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Android/include/AndroidPlatformDefinitions.h b/Platforms/Android/include/AndroidPlatformDefinitions.h index 454c7446..c00cbe3d 100644 --- a/Platforms/Android/include/AndroidPlatformDefinitions.h +++ b/Platforms/Android/include/AndroidPlatformDefinitions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Android/include/AndroidPlatformMisc.h b/Platforms/Android/include/AndroidPlatformMisc.h index 27db9a59..328af681 100644 --- a/Platforms/Android/include/AndroidPlatformMisc.h +++ b/Platforms/Android/include/AndroidPlatformMisc.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Android/src/AndroidDebug.cpp b/Platforms/Android/src/AndroidDebug.cpp index cb580ea8..8b8556ad 100644 --- a/Platforms/Android/src/AndroidDebug.cpp +++ b/Platforms/Android/src/AndroidDebug.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Android/src/AndroidFileSystem.cpp b/Platforms/Android/src/AndroidFileSystem.cpp index 2f20f880..8d9e5f65 100644 --- a/Platforms/Android/src/AndroidFileSystem.cpp +++ b/Platforms/Android/src/AndroidFileSystem.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/interface/BasicAtomics.h b/Platforms/Basic/interface/BasicAtomics.h index 6819f238..3d9ea8ea 100644 --- a/Platforms/Basic/interface/BasicAtomics.h +++ b/Platforms/Basic/interface/BasicAtomics.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/interface/BasicFileSystem.h b/Platforms/Basic/interface/BasicFileSystem.h index 69a3dc57..ae438e37 100644 --- a/Platforms/Basic/interface/BasicFileSystem.h +++ b/Platforms/Basic/interface/BasicFileSystem.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/interface/BasicPlatformDebug.h b/Platforms/Basic/interface/BasicPlatformDebug.h index f5cf78a2..6ae117be 100644 --- a/Platforms/Basic/interface/BasicPlatformDebug.h +++ b/Platforms/Basic/interface/BasicPlatformDebug.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/interface/BasicPlatformMisc.h b/Platforms/Basic/interface/BasicPlatformMisc.h index e89ae814..2e753991 100644 --- a/Platforms/Basic/interface/BasicPlatformMisc.h +++ b/Platforms/Basic/interface/BasicPlatformMisc.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/interface/DebugUtilities.h b/Platforms/Basic/interface/DebugUtilities.h index fa314af4..91a5d7db 100644 --- a/Platforms/Basic/interface/DebugUtilities.h +++ b/Platforms/Basic/interface/DebugUtilities.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/interface/Errors.h b/Platforms/Basic/interface/Errors.h index 16eca82d..826ed40b 100644 --- a/Platforms/Basic/interface/Errors.h +++ b/Platforms/Basic/interface/Errors.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/interface/StandardFile.h b/Platforms/Basic/interface/StandardFile.h index a4d7ddeb..7d23cc42 100644 --- a/Platforms/Basic/interface/StandardFile.h +++ b/Platforms/Basic/interface/StandardFile.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/src/BasicFileSystem.cpp b/Platforms/Basic/src/BasicFileSystem.cpp index de63093d..9b5ea11e 100644 --- a/Platforms/Basic/src/BasicFileSystem.cpp +++ b/Platforms/Basic/src/BasicFileSystem.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/src/BasicPlatformDebug.cpp b/Platforms/Basic/src/BasicPlatformDebug.cpp index cd8ac5f1..5d93ac15 100644 --- a/Platforms/Basic/src/BasicPlatformDebug.cpp +++ b/Platforms/Basic/src/BasicPlatformDebug.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/src/StandardFile.cpp b/Platforms/Basic/src/StandardFile.cpp index bce398df..ea4e486c 100644 --- a/Platforms/Basic/src/StandardFile.cpp +++ b/Platforms/Basic/src/StandardFile.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Basic/src/pch.cpp b/Platforms/Basic/src/pch.cpp index d5f45c6a..3eef26a8 100644 --- a/Platforms/Basic/src/pch.cpp +++ b/Platforms/Basic/src/pch.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Linux/include/LinuxDebug.h b/Platforms/Linux/include/LinuxDebug.h index 6ad720de..c8f9131d 100644 --- a/Platforms/Linux/include/LinuxDebug.h +++ b/Platforms/Linux/include/LinuxDebug.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Linux/include/LinuxFileSystem.h b/Platforms/Linux/include/LinuxFileSystem.h index fa0e48e6..5842029f 100644 --- a/Platforms/Linux/include/LinuxFileSystem.h +++ b/Platforms/Linux/include/LinuxFileSystem.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Linux/include/LinuxPlatformDefinitions.h b/Platforms/Linux/include/LinuxPlatformDefinitions.h index 454c7446..c00cbe3d 100644 --- a/Platforms/Linux/include/LinuxPlatformDefinitions.h +++ b/Platforms/Linux/include/LinuxPlatformDefinitions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Linux/include/LinuxPlatformMisc.h b/Platforms/Linux/include/LinuxPlatformMisc.h index c5bee789..f6a94dbe 100644 --- a/Platforms/Linux/include/LinuxPlatformMisc.h +++ b/Platforms/Linux/include/LinuxPlatformMisc.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Linux/src/LinuxDebug.cpp b/Platforms/Linux/src/LinuxDebug.cpp index 3c914494..776f6208 100644 --- a/Platforms/Linux/src/LinuxDebug.cpp +++ b/Platforms/Linux/src/LinuxDebug.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Linux/src/LinuxFileSystem.cpp b/Platforms/Linux/src/LinuxFileSystem.cpp index 5e684ff3..981da558 100644 --- a/Platforms/Linux/src/LinuxFileSystem.cpp +++ b/Platforms/Linux/src/LinuxFileSystem.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Win32/include/Win32Atomics.h b/Platforms/Win32/include/Win32Atomics.h index caf7b878..5ff75899 100644 --- a/Platforms/Win32/include/Win32Atomics.h +++ b/Platforms/Win32/include/Win32Atomics.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Win32/include/Win32Debug.h b/Platforms/Win32/include/Win32Debug.h index f0ec554f..ead77508 100644 --- a/Platforms/Win32/include/Win32Debug.h +++ b/Platforms/Win32/include/Win32Debug.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Win32/include/Win32FileSystem.h b/Platforms/Win32/include/Win32FileSystem.h index caf1a197..da99bdb8 100644 --- a/Platforms/Win32/include/Win32FileSystem.h +++ b/Platforms/Win32/include/Win32FileSystem.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Win32/include/Win32PlatformDefinitions.h b/Platforms/Win32/include/Win32PlatformDefinitions.h index 2322e53c..72dfa52e 100644 --- a/Platforms/Win32/include/Win32PlatformDefinitions.h +++ b/Platforms/Win32/include/Win32PlatformDefinitions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Win32/include/Win32PlatformMisc.h b/Platforms/Win32/include/Win32PlatformMisc.h index 2a97a95c..700a5fd3 100644 --- a/Platforms/Win32/include/Win32PlatformMisc.h +++ b/Platforms/Win32/include/Win32PlatformMisc.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Win32/include/pch.h b/Platforms/Win32/include/pch.h index 1ba10023..830d6893 100644 --- a/Platforms/Win32/include/pch.h +++ b/Platforms/Win32/include/pch.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Win32/src/Win32Atomics.cpp b/Platforms/Win32/src/Win32Atomics.cpp index 7ca31b0a..dcb83ab9 100644 --- a/Platforms/Win32/src/Win32Atomics.cpp +++ b/Platforms/Win32/src/Win32Atomics.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Win32/src/Win32Debug.cpp b/Platforms/Win32/src/Win32Debug.cpp index 444ce2df..01904c81 100644 --- a/Platforms/Win32/src/Win32Debug.cpp +++ b/Platforms/Win32/src/Win32Debug.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Win32/src/Win32FileSystem.cpp b/Platforms/Win32/src/Win32FileSystem.cpp index d0a77eb9..5e5d55b1 100644 --- a/Platforms/Win32/src/Win32FileSystem.cpp +++ b/Platforms/Win32/src/Win32FileSystem.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/Win32/src/pch.cpp b/Platforms/Win32/src/pch.cpp index d5f45c6a..3eef26a8 100644 --- a/Platforms/Win32/src/pch.cpp +++ b/Platforms/Win32/src/pch.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/interface/Atomics.h b/Platforms/interface/Atomics.h index 40499a5f..1d34f68e 100644 --- a/Platforms/interface/Atomics.h +++ b/Platforms/interface/Atomics.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/interface/FileSystem.h b/Platforms/interface/FileSystem.h index f7dfd0ca..a9a99d57 100644 --- a/Platforms/interface/FileSystem.h +++ b/Platforms/interface/FileSystem.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/interface/PlatformDebug.h b/Platforms/interface/PlatformDebug.h index 1e0708f3..aaea8fd7 100644 --- a/Platforms/interface/PlatformDebug.h +++ b/Platforms/interface/PlatformDebug.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/interface/PlatformDefinitions.h b/Platforms/interface/PlatformDefinitions.h index ab9c42d5..1c29e220 100644 --- a/Platforms/interface/PlatformDefinitions.h +++ b/Platforms/interface/PlatformDefinitions.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Platforms/interface/PlatformMisc.h b/Platforms/interface/PlatformMisc.h index 696c87f6..828c195d 100644 --- a/Platforms/interface/PlatformMisc.h +++ b/Platforms/interface/PlatformMisc.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Primitives/interface/BasicTypes.h b/Primitives/interface/BasicTypes.h index cf40e3a8..0d781897 100644 --- a/Primitives/interface/BasicTypes.h +++ b/Primitives/interface/BasicTypes.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Primitives/interface/DataBlob.h b/Primitives/interface/DataBlob.h index 9f1c2c04..520a0517 100644 --- a/Primitives/interface/DataBlob.h +++ b/Primitives/interface/DataBlob.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Primitives/interface/FileStream.h b/Primitives/interface/FileStream.h index 312c79bc..7d4f665a 100644 --- a/Primitives/interface/FileStream.h +++ b/Primitives/interface/FileStream.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Primitives/interface/FormatMessage.h b/Primitives/interface/FormatMessage.h index 4a6a552e..12748474 100644 --- a/Primitives/interface/FormatMessage.h +++ b/Primitives/interface/FormatMessage.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Primitives/interface/InterfaceID.h b/Primitives/interface/InterfaceID.h index a7401f43..7f5be683 100644 --- a/Primitives/interface/InterfaceID.h +++ b/Primitives/interface/InterfaceID.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Primitives/interface/MemoryAllocator.h b/Primitives/interface/MemoryAllocator.h index 8221ffdc..c844ee26 100644 --- a/Primitives/interface/MemoryAllocator.h +++ b/Primitives/interface/MemoryAllocator.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Primitives/interface/Object.h b/Primitives/interface/Object.h index cd135ded..ebe8943d 100644 --- a/Primitives/interface/Object.h +++ b/Primitives/interface/Object.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Primitives/interface/ReferenceCounters.h b/Primitives/interface/ReferenceCounters.h index e4adc7f6..93a1f7bd 100644 --- a/Primitives/interface/ReferenceCounters.h +++ b/Primitives/interface/ReferenceCounters.h @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Primitives/src/test.cpp b/Primitives/src/test.cpp index 757693ba..c578e76f 100644 --- a/Primitives/src/test.cpp +++ b/Primitives/src/test.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Egor Yusov +/* Copyright 2015-2018 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/doc/html/_adaptive_fixed_block_allocator_8h_source.html b/doc/html/_adaptive_fixed_block_allocator_8h_source.html index f28657a2..089dcfcb 100644 --- a/doc/html/_adaptive_fixed_block_allocator_8h_source.html +++ b/doc/html/_adaptive_fixed_block_allocator_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">AdaptiveFixedBlockAllocator.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "FixedBlockMemoryAllocator.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// Adaptive allocator that can function as a raw memory allocator or as</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// fixed block memory allocator. In the fixed block memory allocator mode,</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// the block size is determined by the size of the first allocation</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">class </span>AdaptiveFixedBlockAllocator : <span class="keyword">public</span> IMemoryAllocator</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  AdaptiveFixedBlockAllocator(IMemoryAllocator &RawMemAllocator, Uint32 NumBlocksPerAllocation) : </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_RawMemAllocator(RawMemAllocator),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pFixedBlockAllocator(nullptr, STDDeleterRawMem<FixedBlockMemoryAllocator>(RawMemAllocator)),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_NumBlocksPerAllocation(NumBlocksPerAllocation)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Initialize allocator when we get the fist allocation request and know allocation size</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Allocates block of memory</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* Allocate(<span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (m_NumBlocksPerAllocation > 1)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span>( !m_pFixedBlockAllocator )</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// Create fixed block allocator</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">auto</span> *pRawMem = m_RawMemAllocator.Allocate(<span class="keyword">sizeof</span>(FixedBlockMemoryAllocator), <span class="stringliteral">"Memory for FixedBlockMemoryAllocator"</span>, __FILE__, __LINE__);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_pFixedBlockAllocator.reset( <span class="keyword">new</span>(pRawMem) FixedBlockMemoryAllocator(m_RawMemAllocator, Size, m_NumBlocksPerAllocation) );</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> m_pFixedBlockAllocator->Allocate(Size, dbgDescription, dbgFileName, dbgLineNumber);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Use default raw allocator</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> m_RawMemAllocator.Allocate(Size, dbgDescription, dbgFileName, dbgLineNumber);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// Releases memory</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span> *Ptr)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (m_NumBlocksPerAllocation > 1)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  VERIFY_EXPR(m_pFixedBlockAllocator);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_pFixedBlockAllocator->Free(Ptr);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  VERIFY_EXPR(!m_pFixedBlockAllocator);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_RawMemAllocator.Free(Ptr);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  IMemoryAllocator &m_RawMemAllocator;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  Uint32 m_NumBlocksPerAllocation = 0;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::unique_ptr<FixedBlockMemoryAllocator, STDDeleterRawMem<FixedBlockMemoryAllocator> > m_pFixedBlockAllocator;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  };</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "FixedBlockMemoryAllocator.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// Adaptive allocator that can function as a raw memory allocator or as</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// fixed block memory allocator. In the fixed block memory allocator mode,</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// the block size is determined by the size of the first allocation</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">class </span>AdaptiveFixedBlockAllocator : <span class="keyword">public</span> IMemoryAllocator</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  AdaptiveFixedBlockAllocator(IMemoryAllocator &RawMemAllocator, Uint32 NumBlocksPerAllocation) : </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_RawMemAllocator(RawMemAllocator),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pFixedBlockAllocator(nullptr, STDDeleterRawMem<FixedBlockMemoryAllocator>(RawMemAllocator)),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_NumBlocksPerAllocation(NumBlocksPerAllocation)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Initialize allocator when we get the fist allocation request and know allocation size</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Allocates block of memory</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* Allocate(<span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (m_NumBlocksPerAllocation > 1)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span>( !m_pFixedBlockAllocator )</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// Create fixed block allocator</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">auto</span> *pRawMem = m_RawMemAllocator.Allocate(<span class="keyword">sizeof</span>(FixedBlockMemoryAllocator), <span class="stringliteral">"Memory for FixedBlockMemoryAllocator"</span>, __FILE__, __LINE__);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_pFixedBlockAllocator.reset( <span class="keyword">new</span>(pRawMem) FixedBlockMemoryAllocator(m_RawMemAllocator, Size, m_NumBlocksPerAllocation) );</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> m_pFixedBlockAllocator->Allocate(Size, dbgDescription, dbgFileName, dbgLineNumber);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Use default raw allocator</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> m_RawMemAllocator.Allocate(Size, dbgDescription, dbgFileName, dbgLineNumber);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// Releases memory</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span> *Ptr)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (m_NumBlocksPerAllocation > 1)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  VERIFY_EXPR(m_pFixedBlockAllocator);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_pFixedBlockAllocator->Free(Ptr);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  VERIFY_EXPR(!m_pFixedBlockAllocator);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_RawMemAllocator.Free(Ptr);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  IMemoryAllocator &m_RawMemAllocator;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  Uint32 m_NumBlocksPerAllocation = 0;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::unique_ptr<FixedBlockMemoryAllocator, STDDeleterRawMem<FixedBlockMemoryAllocator> > m_pFixedBlockAllocator;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  };</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_advanced_math_8h_source.html b/doc/html/_advanced_math_8h_source.html index e1050447..6ba1d86a 100644 --- a/doc/html/_advanced_math_8h_source.html +++ b/doc/html/_advanced_math_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">AdvancedMath.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicMath.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Structure describing a plane</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">struct </span>Plane3D</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  float3 Normal;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">float</span> Distance; <span class="comment">//Distance from the coordinate system origin to the plane along the normal direction</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">struct </span>ViewFrustum</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  Plane3D LeftPlane, RightPlane, BottomPlane, TopPlane, NearPlane, FarPlane;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">struct </span>ViewFrustumExt : <span class="keyword">public</span> ViewFrustum</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  float3 FrustumCorners[8];</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// For OpenGL, matrix is still considered row-major. The only difference is that</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// near clip plane is at -1, not 0.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ExtractViewFrustumPlanesFromMatrix(<span class="keyword">const</span> float4x4 &Matrix, ViewFrustum &Frustum, <span class="keywordtype">bool</span> bIsDirectX)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// For more details, see Gribb G., Hartmann K., "Fast Extraction of Viewing Frustum Planes from the </span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// World-View-Projection Matrix" (the paper is available at </span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// http://gamedevs.org/uploads/fast-extraction-viewing-frustum-planes-from-world-view-projection-matrix.pdf)</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// Left clipping plane </span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  Frustum.LeftPlane.Normal.x = Matrix._14 + Matrix._11; </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  Frustum.LeftPlane.Normal.y = Matrix._24 + Matrix._21; </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  Frustum.LeftPlane.Normal.z = Matrix._34 + Matrix._31; </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  Frustum.LeftPlane.Distance = Matrix._44 + Matrix._41;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Right clipping plane </span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  Frustum.RightPlane.Normal.x = Matrix._14 - Matrix._11;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  Frustum.RightPlane.Normal.y = Matrix._24 - Matrix._21;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  Frustum.RightPlane.Normal.z = Matrix._34 - Matrix._31;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  Frustum.RightPlane.Distance = Matrix._44 - Matrix._41;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Top clipping plane </span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  Frustum.TopPlane.Normal.x = Matrix._14 - Matrix._12;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  Frustum.TopPlane.Normal.y = Matrix._24 - Matrix._22;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  Frustum.TopPlane.Normal.z = Matrix._34 - Matrix._32;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  Frustum.TopPlane.Distance = Matrix._44 - Matrix._42;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Bottom clipping plane </span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  Frustum.BottomPlane.Normal.x = Matrix._14 + Matrix._12; </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  Frustum.BottomPlane.Normal.y = Matrix._24 + Matrix._22;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  Frustum.BottomPlane.Normal.z = Matrix._34 + Matrix._32;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Frustum.BottomPlane.Distance = Matrix._44 + Matrix._42;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// Near clipping plane </span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>( bIsDirectX )</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// 0 <= z <= w</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Frustum.NearPlane.Normal.x = Matrix._13;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  Frustum.NearPlane.Normal.y = Matrix._23;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  Frustum.NearPlane.Normal.z = Matrix._33;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  Frustum.NearPlane.Distance = Matrix._43;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// -w <= z <= w</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Frustum.NearPlane.Normal.x = Matrix._14 + Matrix._13;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  Frustum.NearPlane.Normal.y = Matrix._24 + Matrix._23;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  Frustum.NearPlane.Normal.z = Matrix._34 + Matrix._33;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  Frustum.NearPlane.Distance = Matrix._44 + Matrix._43;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Far clipping plane </span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  Frustum.FarPlane.Normal.x = Matrix._14 - Matrix._13;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  Frustum.FarPlane.Normal.y = Matrix._24 - Matrix._23;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  Frustum.FarPlane.Normal.z = Matrix._34 - Matrix._33;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  Frustum.FarPlane.Distance = Matrix._44 - Matrix._43;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ExtractViewFrustumPlanesFromMatrix(<span class="keyword">const</span> float4x4 &Matrix, ViewFrustumExt &FrustumExt, <span class="keywordtype">bool</span> bIsDirectX)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  ExtractViewFrustumPlanesFromMatrix(Matrix, static_cast<ViewFrustum&>(FrustumExt), bIsDirectX);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// Compute frustum corners</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  float4x4 InvMatrix = inverseMatrix(Matrix);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">float</span> nearClipZ = bIsDirectX ? 0.f : -1.f;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">static</span> <span class="keyword">const</span> float3 ProjSpaceCorners[] = </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  float3(-1,-1, nearClipZ),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  float3( 1,-1, nearClipZ),</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  float3(-1, 1, nearClipZ),</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  float3( 1, 1, nearClipZ),</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  float3(-1,-1, 1),</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  float3( 1,-1, 1),</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  float3(-1, 1, 1),</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  float3( 1, 1, 1),</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 8; ++i)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  FrustumExt.FrustumCorners[i] = ProjSpaceCorners[i] * InvMatrix;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keyword">struct </span>BoundBox</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// Order must not be changed!</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordtype">float</span> fMinX, fMaxX, fMinY, fMaxY, fMinZ, fMaxZ;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> };</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">enum class</span> BoxVisibility</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// Bounding box is guaranteed to be outside of the view frustum</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// .</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// . ' |</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// . ' |</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// . |</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// ___ ' . |</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// | | ' .</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// |___|</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">//</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  Invisible,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// Bounding box intersects the frustum</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// .</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// . ' |</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// . ' |</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// _.__ |</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// | '|. |</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// |____| ' .</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">//</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  Intersecting,</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// Bounding box is fully inside the view frustum</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// .</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// . ' |</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// . '___ |</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// | | | |</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// . |___| |</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// ' . |</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">// ' .</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">//</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  FullyVisible</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> };</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">template</span><<span class="keywordtype">bool</span> TestFullVisibility></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">inline</span> BoxVisibility GetBoxVisibilityAgainstPlane(<span class="keyword">const</span> Plane3D& Plane, <span class="keyword">const</span> BoundBox &Box)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">const</span> float3& Normal = Plane.Normal;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  float3 MaxPoint(</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  (Normal.x > 0) ? Box.fMaxX : Box.fMinX,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  (Normal.y > 0) ? Box.fMaxY : Box.fMinY,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  (Normal.z > 0) ? Box.fMaxZ : Box.fMinZ</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  );</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">float</span> DMax = dot( MaxPoint, Normal ) + Plane.Distance;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>( DMax < 0 )</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> BoxVisibility::Invisible;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (TestFullVisibility)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  float3 MinPoint(</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  (Normal.x > 0) ? Box.fMinX : Box.fMaxX,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  (Normal.y > 0) ? Box.fMinY : Box.fMaxY,</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  (Normal.z > 0) ? Box.fMinZ : Box.fMaxZ</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">float</span> DMin = dot(MinPoint, Normal) + Plane.Distance;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (DMin > 0)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> BoxVisibility::FullyVisible;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> BoxVisibility::Intersecting;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="comment">// Tests if bounding box is visible by the camera</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">template</span><<span class="keywordtype">bool</span> TestFullVisibility></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">inline</span> BoxVisibility GetBoxVisibility(<span class="keyword">const</span> ViewFrustum &ViewFrustum, <span class="keyword">const</span> BoundBox &Box)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">const</span> Plane3D *pPlanes = <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>Plane3D*<span class="keyword">></span>(&ViewFrustum);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">int</span> NumPlanesInside = 0;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iViewFrustumPlane = 0; iViewFrustumPlane < 6; iViewFrustumPlane++)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keyword">const</span> Plane3D &CurrPlane = pPlanes[iViewFrustumPlane];</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">auto</span> VisibilityAgainstPlane = GetBoxVisibilityAgainstPlane<TestFullVisibility>(CurrPlane, Box);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// If bounding box is "behind" one of the planes, it is definitely invisible</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (VisibilityAgainstPlane == BoxVisibility::Invisible)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> BoxVisibility::Invisible;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// Count total number of planes the bound box is inside</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span> (VisibilityAgainstPlane == BoxVisibility::FullyVisible)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  ++NumPlanesInside;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> (TestFullVisibility && NumPlanesInside == 6) ? BoxVisibility::FullyVisible : BoxVisibility::Intersecting;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="keyword">template</span><<span class="keywordtype">bool</span> TestFullVisibility></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keyword">inline</span> BoxVisibility GetBoxVisibility(<span class="keyword">const</span> ViewFrustumExt &ViewFrustumExt, <span class="keyword">const</span> BoundBox &Box)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">auto</span> Visibility = GetBoxVisibility<TestFullVisibility>(<span class="keyword">static_cast<</span><span class="keyword">const </span>ViewFrustum&<span class="keyword">></span>(ViewFrustumExt), Box);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span> (Visibility == BoxVisibility::FullyVisible || Visibility == BoxVisibility::Invisible)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> Visibility;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">// Additionally test if the whole frustum is outside one of </span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">// the the bounding box planes. This helps in the following situation:</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// </span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">//</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// .</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// / ' . . </span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">// / AABB / . ' |</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// / /. ' |</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// ' . / | |</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// * . | |</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="comment">// ' . |</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// ' . |</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// ' .</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iBoundBoxPlane = 0; iBoundBoxPlane < 6; ++iBoundBoxPlane)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// struct BoundBox</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="comment">// {</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="comment">// float fMinX, fMaxX, fMinY, fMaxY, fMinZ, fMaxZ;</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// };</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordtype">float</span> CurrPlaneCoord = <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">></span>(&Box)[iBoundBoxPlane];</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordtype">int</span> iCoordOrder = iBoundBoxPlane / 2; <span class="comment">// 0, 0, 1, 1, 2, 2</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordtype">float</span> fSign = (iBoundBoxPlane & 0x01) ? +1.f : -1.f;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">bool</span> bAllCornersOutside = <span class="keyword">true</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iCorner=0; iCorner < 8; iCorner++)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordtype">float</span> CurrCornerCoord = ViewFrustumExt.FrustumCorners[iCorner][iCoordOrder];</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span>( fSign * (CurrPlaneCoord - CurrCornerCoord) > 0)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  { </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  bAllCornersOutside = <span class="keyword">false</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span>( bAllCornersOutside )</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> BoxVisibility::Invisible;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> BoxVisibility::Intersecting;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> GetPointToBoxDistance(<span class="keyword">const</span> BoundBox &BndBox, <span class="keyword">const</span> float3 &Pos)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  VERIFY_EXPR(BndBox.fMaxX >= BndBox.fMinX && </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  BndBox.fMaxY >= BndBox.fMinY && </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  BndBox.fMaxZ >= BndBox.fMinZ);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordtype">float</span> fdX = (Pos.x > BndBox.fMaxX) ? (Pos.x - BndBox.fMaxX) : ( (Pos.x < BndBox.fMinX) ? (BndBox.fMinX - Pos.x) : 0.f );</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordtype">float</span> fdY = (Pos.y > BndBox.fMaxY) ? (Pos.y - BndBox.fMaxY) : ( (Pos.y < BndBox.fMinY) ? (BndBox.fMinY - Pos.y) : 0.f );</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordtype">float</span> fdZ = (Pos.z > BndBox.fMaxZ) ? (Pos.z - BndBox.fMaxZ) : ( (Pos.z < BndBox.fMinZ) ? (BndBox.fMinZ - Pos.z) : 0.f );</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  VERIFY_EXPR(fdX >= 0 && fdY >= 0 && fdZ >= 0);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  float3 RangeVec(fdX, fdY, fdZ);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> length( RangeVec );</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Plane3D &p1, <span class="keyword">const</span> Plane3D &p2)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">return</span> p1.Normal == p2.Normal && </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  p1.Distance == p2.Distance;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> ViewFrustum &f1, <span class="keyword">const</span> ViewFrustum &f2)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">return</span> f1.LeftPlane == f2.LeftPlane && </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  f1.RightPlane == f2.RightPlane && </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  f1.BottomPlane == f2.BottomPlane &&</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  f1.TopPlane == f2.TopPlane &&</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  f1.NearPlane == f2.NearPlane &&</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  f1.FarPlane == f2.FarPlane;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> ViewFrustumExt &f1, <span class="keyword">const</span> ViewFrustumExt &f2)</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (! (static_cast<const ViewFrustum &>(f1) == static_cast<const ViewFrustum &>(f2)) )</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c = 0; c < _countof(f1.FrustumCorners); ++c)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span> (f1.FrustumCorners[c] != f2.FrustumCorners[c])</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">struct </span>hash<Plane3D></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Plane3D &Plane )<span class="keyword"> const</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(Plane.Normal, Plane.Distance);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  };</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keyword">struct </span>hash<ViewFrustum></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> ViewFrustum &Frustum )<span class="keyword"> const</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(Frustum.LeftPlane, Frustum.RightPlane, Frustum.BottomPlane, Frustum.TopPlane, Frustum.NearPlane, Frustum.FarPlane);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  };</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">struct </span>hash<ViewFrustumExt></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> ViewFrustumExt &Frustum )<span class="keyword"> const</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">auto</span> Seed = Diligent::ComputeHash(static_cast<const ViewFrustum&>(Frustum));</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> Corner = 0; Corner < _countof(Frustum.FrustumCorners); ++Corner)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  Diligent::HashCombine(Seed, Frustum.FrustumCorners[Corner]);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> Seed;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  };</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> }</div><div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicMath.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Structure describing a plane</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">struct </span>Plane3D</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  float3 Normal;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">float</span> Distance; <span class="comment">//Distance from the coordinate system origin to the plane along the normal direction</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">struct </span>ViewFrustum</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  Plane3D LeftPlane, RightPlane, BottomPlane, TopPlane, NearPlane, FarPlane;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">struct </span>ViewFrustumExt : <span class="keyword">public</span> ViewFrustum</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  float3 FrustumCorners[8];</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// For OpenGL, matrix is still considered row-major. The only difference is that</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// near clip plane is at -1, not 0.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ExtractViewFrustumPlanesFromMatrix(<span class="keyword">const</span> float4x4 &Matrix, ViewFrustum &Frustum, <span class="keywordtype">bool</span> bIsDirectX)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// For more details, see Gribb G., Hartmann K., "Fast Extraction of Viewing Frustum Planes from the </span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// World-View-Projection Matrix" (the paper is available at </span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// http://gamedevs.org/uploads/fast-extraction-viewing-frustum-planes-from-world-view-projection-matrix.pdf)</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// Left clipping plane </span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  Frustum.LeftPlane.Normal.x = Matrix._14 + Matrix._11; </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  Frustum.LeftPlane.Normal.y = Matrix._24 + Matrix._21; </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  Frustum.LeftPlane.Normal.z = Matrix._34 + Matrix._31; </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  Frustum.LeftPlane.Distance = Matrix._44 + Matrix._41;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Right clipping plane </span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  Frustum.RightPlane.Normal.x = Matrix._14 - Matrix._11;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  Frustum.RightPlane.Normal.y = Matrix._24 - Matrix._21;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  Frustum.RightPlane.Normal.z = Matrix._34 - Matrix._31;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  Frustum.RightPlane.Distance = Matrix._44 - Matrix._41;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Top clipping plane </span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  Frustum.TopPlane.Normal.x = Matrix._14 - Matrix._12;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  Frustum.TopPlane.Normal.y = Matrix._24 - Matrix._22;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  Frustum.TopPlane.Normal.z = Matrix._34 - Matrix._32;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  Frustum.TopPlane.Distance = Matrix._44 - Matrix._42;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Bottom clipping plane </span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  Frustum.BottomPlane.Normal.x = Matrix._14 + Matrix._12; </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  Frustum.BottomPlane.Normal.y = Matrix._24 + Matrix._22;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  Frustum.BottomPlane.Normal.z = Matrix._34 + Matrix._32;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Frustum.BottomPlane.Distance = Matrix._44 + Matrix._42;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// Near clipping plane </span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>( bIsDirectX )</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// 0 <= z <= w</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Frustum.NearPlane.Normal.x = Matrix._13;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  Frustum.NearPlane.Normal.y = Matrix._23;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  Frustum.NearPlane.Normal.z = Matrix._33;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  Frustum.NearPlane.Distance = Matrix._43;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// -w <= z <= w</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Frustum.NearPlane.Normal.x = Matrix._14 + Matrix._13;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  Frustum.NearPlane.Normal.y = Matrix._24 + Matrix._23;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  Frustum.NearPlane.Normal.z = Matrix._34 + Matrix._33;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  Frustum.NearPlane.Distance = Matrix._44 + Matrix._43;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Far clipping plane </span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  Frustum.FarPlane.Normal.x = Matrix._14 - Matrix._13;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  Frustum.FarPlane.Normal.y = Matrix._24 - Matrix._23;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  Frustum.FarPlane.Normal.z = Matrix._34 - Matrix._33;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  Frustum.FarPlane.Distance = Matrix._44 - Matrix._43;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ExtractViewFrustumPlanesFromMatrix(<span class="keyword">const</span> float4x4 &Matrix, ViewFrustumExt &FrustumExt, <span class="keywordtype">bool</span> bIsDirectX)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  ExtractViewFrustumPlanesFromMatrix(Matrix, static_cast<ViewFrustum&>(FrustumExt), bIsDirectX);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// Compute frustum corners</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  float4x4 InvMatrix = inverseMatrix(Matrix);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">float</span> nearClipZ = bIsDirectX ? 0.f : -1.f;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">static</span> <span class="keyword">const</span> float3 ProjSpaceCorners[] = </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  float3(-1,-1, nearClipZ),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  float3( 1,-1, nearClipZ),</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  float3(-1, 1, nearClipZ),</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  float3( 1, 1, nearClipZ),</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  float3(-1,-1, 1),</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  float3( 1,-1, 1),</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  float3(-1, 1, 1),</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  float3( 1, 1, 1),</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 8; ++i)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  FrustumExt.FrustumCorners[i] = ProjSpaceCorners[i] * InvMatrix;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keyword">struct </span>BoundBox</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// Order must not be changed!</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordtype">float</span> fMinX, fMaxX, fMinY, fMaxY, fMinZ, fMaxZ;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> };</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">enum class</span> BoxVisibility</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// Bounding box is guaranteed to be outside of the view frustum</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// .</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// . ' |</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// . ' |</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// . |</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// ___ ' . |</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// | | ' .</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// |___|</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">//</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  Invisible,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// Bounding box intersects the frustum</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// .</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// . ' |</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// . ' |</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// _.__ |</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// | '|. |</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// |____| ' .</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">//</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  Intersecting,</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// Bounding box is fully inside the view frustum</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// .</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// . ' |</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// . '___ |</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// | | | |</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// . |___| |</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// ' . |</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">// ' .</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">//</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  FullyVisible</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> };</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">template</span><<span class="keywordtype">bool</span> TestFullVisibility></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">inline</span> BoxVisibility GetBoxVisibilityAgainstPlane(<span class="keyword">const</span> Plane3D& Plane, <span class="keyword">const</span> BoundBox &Box)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">const</span> float3& Normal = Plane.Normal;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  float3 MaxPoint(</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  (Normal.x > 0) ? Box.fMaxX : Box.fMinX,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  (Normal.y > 0) ? Box.fMaxY : Box.fMinY,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  (Normal.z > 0) ? Box.fMaxZ : Box.fMinZ</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  );</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">float</span> DMax = dot( MaxPoint, Normal ) + Plane.Distance;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>( DMax < 0 )</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> BoxVisibility::Invisible;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (TestFullVisibility)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  float3 MinPoint(</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  (Normal.x > 0) ? Box.fMinX : Box.fMaxX,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  (Normal.y > 0) ? Box.fMinY : Box.fMaxY,</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  (Normal.z > 0) ? Box.fMinZ : Box.fMaxZ</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">float</span> DMin = dot(MinPoint, Normal) + Plane.Distance;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (DMin > 0)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> BoxVisibility::FullyVisible;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> BoxVisibility::Intersecting;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="comment">// Tests if bounding box is visible by the camera</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">template</span><<span class="keywordtype">bool</span> TestFullVisibility></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">inline</span> BoxVisibility GetBoxVisibility(<span class="keyword">const</span> ViewFrustum &ViewFrustum, <span class="keyword">const</span> BoundBox &Box)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">const</span> Plane3D *pPlanes = <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>Plane3D*<span class="keyword">></span>(&ViewFrustum);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">int</span> NumPlanesInside = 0;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iViewFrustumPlane = 0; iViewFrustumPlane < 6; iViewFrustumPlane++)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keyword">const</span> Plane3D &CurrPlane = pPlanes[iViewFrustumPlane];</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">auto</span> VisibilityAgainstPlane = GetBoxVisibilityAgainstPlane<TestFullVisibility>(CurrPlane, Box);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// If bounding box is "behind" one of the planes, it is definitely invisible</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (VisibilityAgainstPlane == BoxVisibility::Invisible)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> BoxVisibility::Invisible;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// Count total number of planes the bound box is inside</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span> (VisibilityAgainstPlane == BoxVisibility::FullyVisible)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  ++NumPlanesInside;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> (TestFullVisibility && NumPlanesInside == 6) ? BoxVisibility::FullyVisible : BoxVisibility::Intersecting;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="keyword">template</span><<span class="keywordtype">bool</span> TestFullVisibility></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keyword">inline</span> BoxVisibility GetBoxVisibility(<span class="keyword">const</span> ViewFrustumExt &ViewFrustumExt, <span class="keyword">const</span> BoundBox &Box)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">auto</span> Visibility = GetBoxVisibility<TestFullVisibility>(<span class="keyword">static_cast<</span><span class="keyword">const </span>ViewFrustum&<span class="keyword">></span>(ViewFrustumExt), Box);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span> (Visibility == BoxVisibility::FullyVisible || Visibility == BoxVisibility::Invisible)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> Visibility;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">// Additionally test if the whole frustum is outside one of </span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">// the the bounding box planes. This helps in the following situation:</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// </span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">//</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// .</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// / ' . . </span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">// / AABB / . ' |</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// / /. ' |</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// ' . / | |</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// * . | |</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="comment">// ' . |</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// ' . |</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// ' .</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iBoundBoxPlane = 0; iBoundBoxPlane < 6; ++iBoundBoxPlane)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// struct BoundBox</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="comment">// {</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="comment">// float fMinX, fMaxX, fMinY, fMaxY, fMinZ, fMaxZ;</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// };</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordtype">float</span> CurrPlaneCoord = <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">></span>(&Box)[iBoundBoxPlane];</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordtype">int</span> iCoordOrder = iBoundBoxPlane / 2; <span class="comment">// 0, 0, 1, 1, 2, 2</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordtype">float</span> fSign = (iBoundBoxPlane & 0x01) ? +1.f : -1.f;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">bool</span> bAllCornersOutside = <span class="keyword">true</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> iCorner=0; iCorner < 8; iCorner++)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordtype">float</span> CurrCornerCoord = ViewFrustumExt.FrustumCorners[iCorner][iCoordOrder];</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span>( fSign * (CurrPlaneCoord - CurrCornerCoord) > 0)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  { </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  bAllCornersOutside = <span class="keyword">false</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span>( bAllCornersOutside )</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> BoxVisibility::Invisible;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> BoxVisibility::Intersecting;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> GetPointToBoxDistance(<span class="keyword">const</span> BoundBox &BndBox, <span class="keyword">const</span> float3 &Pos)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  VERIFY_EXPR(BndBox.fMaxX >= BndBox.fMinX && </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  BndBox.fMaxY >= BndBox.fMinY && </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  BndBox.fMaxZ >= BndBox.fMinZ);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordtype">float</span> fdX = (Pos.x > BndBox.fMaxX) ? (Pos.x - BndBox.fMaxX) : ( (Pos.x < BndBox.fMinX) ? (BndBox.fMinX - Pos.x) : 0.f );</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordtype">float</span> fdY = (Pos.y > BndBox.fMaxY) ? (Pos.y - BndBox.fMaxY) : ( (Pos.y < BndBox.fMinY) ? (BndBox.fMinY - Pos.y) : 0.f );</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordtype">float</span> fdZ = (Pos.z > BndBox.fMaxZ) ? (Pos.z - BndBox.fMaxZ) : ( (Pos.z < BndBox.fMinZ) ? (BndBox.fMinZ - Pos.z) : 0.f );</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  VERIFY_EXPR(fdX >= 0 && fdY >= 0 && fdZ >= 0);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  float3 RangeVec(fdX, fdY, fdZ);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> length( RangeVec );</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Plane3D &p1, <span class="keyword">const</span> Plane3D &p2)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">return</span> p1.Normal == p2.Normal && </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  p1.Distance == p2.Distance;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> ViewFrustum &f1, <span class="keyword">const</span> ViewFrustum &f2)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">return</span> f1.LeftPlane == f2.LeftPlane && </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  f1.RightPlane == f2.RightPlane && </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  f1.BottomPlane == f2.BottomPlane &&</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  f1.TopPlane == f2.TopPlane &&</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  f1.NearPlane == f2.NearPlane &&</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  f1.FarPlane == f2.FarPlane;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> ViewFrustumExt &f1, <span class="keyword">const</span> ViewFrustumExt &f2)</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (! (static_cast<const ViewFrustum &>(f1) == static_cast<const ViewFrustum &>(f2)) )</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c = 0; c < _countof(f1.FrustumCorners); ++c)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span> (f1.FrustumCorners[c] != f2.FrustumCorners[c])</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">struct </span>hash<Plane3D></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Plane3D &Plane )<span class="keyword"> const</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(Plane.Normal, Plane.Distance);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  };</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keyword">struct </span>hash<ViewFrustum></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> ViewFrustum &Frustum )<span class="keyword"> const</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(Frustum.LeftPlane, Frustum.RightPlane, Frustum.BottomPlane, Frustum.TopPlane, Frustum.NearPlane, Frustum.FarPlane);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  };</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">struct </span>hash<ViewFrustumExt></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> ViewFrustumExt &Frustum )<span class="keyword"> const</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">auto</span> Seed = Diligent::ComputeHash(static_cast<const ViewFrustum&>(Frustum));</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> Corner = 0; Corner < _countof(Frustum.FrustumCorners); ++Corner)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  Diligent::HashCombine(Seed, Frustum.FrustumCorners[Corner]);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> Seed;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  };</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> }</div><div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_android_debug_8h_source.html b/doc/html/_android_debug_8h_source.html index 54e6c28f..f9720d75 100644 --- a/doc/html/_android_debug_8h_source.html +++ b/doc/html/_android_debug_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">AndroidDebug.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformDebug.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>AndroidDebug : <span class="keyword">public</span> BasicPlatformDebug</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> AssertionFailed( <span class="keyword">const</span> Diligent::Char *Message, <span class="keyword">const</span> <span class="keywordtype">char</span> *Function, <span class="keyword">const</span> <span class="keywordtype">char</span> *File, <span class="keywordtype">int</span> Line );</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> OutputDebugMessage( DebugMessageSeverity Severity, <span class="keyword">const</span> Diligent::Char *Message );</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> };</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformDebug.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>AndroidDebug : <span class="keyword">public</span> BasicPlatformDebug</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> AssertionFailed( <span class="keyword">const</span> Diligent::Char *Message, <span class="keyword">const</span> <span class="keywordtype">char</span> *Function, <span class="keyword">const</span> <span class="keywordtype">char</span> *File, <span class="keywordtype">int</span> Line );</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> OutputDebugMessage( DebugMessageSeverity Severity, <span class="keyword">const</span> Diligent::Char *Message );</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> };</div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_android_file_system_8h_source.html b/doc/html/_android_file_system_8h_source.html index 58d6cf57..fb975e7b 100644 --- a/doc/html/_android_file_system_8h_source.html +++ b/doc/html/_android_file_system_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">AndroidFileSystem.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicFileSystem.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>AndroidFile : <span class="keyword">public</span> BasicFile</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  AndroidFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~AndroidFile();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">void</span> Read( <a class="code" href="class_diligent_1_1_i_data_blob.html">Diligent::IDataBlob</a> *pData );</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> Read( <span class="keywordtype">void</span>* Data, <span class="keywordtype">size_t</span> BufferSize );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">bool</span> Write( <span class="keyword">const</span> <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> BufferSize );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">size_t</span> GetSize();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">size_t</span> GetPos();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">void</span> SetPos(<span class="keywordtype">size_t</span> Offset, FilePosOrigin Origin);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">//FILE *m_pFile;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">struct </span>AndroidFileSystem : <span class="keyword">public</span> BasicFileSystem</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">static</span> AndroidFile* OpenFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Diligent::Char GetSlashSymbol(){ <span class="keywordflow">return</span> <span class="charliteral">'/'</span>; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> FileExists( <span class="keyword">const</span> Diligent::Char *strFilePath );</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> PathExists( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> CreateDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ClearDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> DeleteFile( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">static</span> std::vector<std::unique_ptr<FindFileData>> Search(<span class="keyword">const</span> Diligent::Char *SearchPattern);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> };</div><div class="ttc" id="class_diligent_1_1_i_data_blob_html"><div class="ttname"><a href="class_diligent_1_1_i_data_blob.html">Diligent::IDataBlob</a></div><div class="ttdoc">Base interface for a file stream. </div><div class="ttdef"><b>Definition:</b> DataBlob.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicFileSystem.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>AndroidFile : <span class="keyword">public</span> BasicFile</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  AndroidFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~AndroidFile();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">void</span> Read( <a class="code" href="class_diligent_1_1_i_data_blob.html">Diligent::IDataBlob</a> *pData );</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> Read( <span class="keywordtype">void</span>* Data, <span class="keywordtype">size_t</span> BufferSize );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">bool</span> Write( <span class="keyword">const</span> <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> BufferSize );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">size_t</span> GetSize();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">size_t</span> GetPos();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">void</span> SetPos(<span class="keywordtype">size_t</span> Offset, FilePosOrigin Origin);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">//FILE *m_pFile;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">struct </span>AndroidFileSystem : <span class="keyword">public</span> BasicFileSystem</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">static</span> AndroidFile* OpenFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Diligent::Char GetSlashSymbol(){ <span class="keywordflow">return</span> <span class="charliteral">'/'</span>; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> FileExists( <span class="keyword">const</span> Diligent::Char *strFilePath );</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> PathExists( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> CreateDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ClearDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> DeleteFile( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">static</span> std::vector<std::unique_ptr<FindFileData>> Search(<span class="keyword">const</span> Diligent::Char *SearchPattern);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> };</div><div class="ttc" id="class_diligent_1_1_i_data_blob_html"><div class="ttname"><a href="class_diligent_1_1_i_data_blob.html">Diligent::IDataBlob</a></div><div class="ttdoc">Base interface for a file stream. </div><div class="ttdef"><b>Definition:</b> DataBlob.h:39</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_android_platform_definitions_8h_source.html b/doc/html/_android_platform_definitions_8h_source.html index efa75029..0e242ad7 100644 --- a/doc/html/_android_platform_definitions_8h_source.html +++ b/doc/html/_android_platform_definitions_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">AndroidPlatformDefinitions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstddef></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">template</span> <<span class="keyword">typename</span> _CountofType, std::<span class="keywordtype">size_t</span> _SizeOfArray></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> char (*__countof_helper(_CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define _countof(_Array) (sizeof(*__countof_helper(_Array)) + 0)</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstddef></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">template</span> <<span class="keyword">typename</span> _CountofType, std::<span class="keywordtype">size_t</span> _SizeOfArray></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> char (*__countof_helper(_CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define _countof(_Array) (sizeof(*__countof_helper(_Array)) + 0)</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_android_platform_misc_8h_source.html b/doc/html/_android_platform_misc_8h_source.html index 16870e5e..b7a1e57a 100644 --- a/doc/html/_android_platform_misc_8h_source.html +++ b/doc/html/_android_platform_misc_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">AndroidPlatformMisc.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformMisc.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">struct </span>AndroidMisc : <span class="keyword">public</span> BasicPlatformMisc</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetMSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Returns the number of leading 0-bits in x, starting at the </span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// most significant bit position. If x is 0, the result is undefined.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">auto</span> LeadingZeros = __builtin_clz(Val);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">auto</span> MSB = 31 - LeadingZeros;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  VERIFY_EXPR(MSB == BasicPlatformMisc::GetMSB(Val));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> MSB;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformMisc.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">struct </span>AndroidMisc : <span class="keyword">public</span> BasicPlatformMisc</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetMSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Returns the number of leading 0-bits in x, starting at the </span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// most significant bit position. If x is 0, the result is undefined.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">auto</span> LeadingZeros = __builtin_clz(Val);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">auto</span> MSB = 31 - LeadingZeros;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  VERIFY_EXPR(MSB == BasicPlatformMisc::GetMSB(Val));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> MSB;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_async_writable_resource_8h_source.html b/doc/html/_async_writable_resource_8h_source.html index 059f6b9a..018f20d8 100644 --- a/doc/html/_async_writable_resource_8h_source.html +++ b/doc/html/_async_writable_resource_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">AsyncWritableResource.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">class </span>AsyncWritableResource</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  AsyncWritableResource() : m_PendingMemoryBarriers( 0 ) {}</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">void</span> SetPendingMemoryBarriers( Uint32 Barriers ){ m_PendingMemoryBarriers |= Barriers; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  Uint32 GetPendingMemortBarriers(){ <span class="keywordflow">return</span> m_PendingMemoryBarriers;}</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">friend</span> <span class="keyword">class </span>GLContextState;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">void</span> ResetPendingMemoryBarriers( Uint32 Barriers ){ m_PendingMemoryBarriers = Barriers; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">void</span> ClearPendingMemoryBarriers( Uint32 Barriers ){ m_PendingMemoryBarriers &= ~Barriers; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// Buffer barriers:</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// GL_ELEMENT_ARRAY_BARRIER_BIT</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// GL_UNIFORM_BARRIER_BIT</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// GL_BUFFER_UPDATE_BARRIER_BIT </span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// GL_SHADER_STORAGE_BARRIER_BIT</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// Texture barriers:</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// GL_TEXTURE_FETCH_BARRIER_BIT</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// GL_SHADER_IMAGE_ACCESS_BARRIER_BIT</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// GL_PIXEL_BUFFER_BARRIER_BIT </span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// GL_TEXTURE_UPDATE_BARRIER_BIT </span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Misc barriers:</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// GL_FRAMEBUFFER_BARRIER_BIT </span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// GL_TRANSFORM_FEEDBACK_BARRIER_BIT </span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// GL_ATOMIC_COUNTER_BARRIER_BIT </span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// GL_QUERY_BUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  Uint32 m_PendingMemoryBarriers;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">class </span>AsyncWritableResource</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  AsyncWritableResource() : m_PendingMemoryBarriers( 0 ) {}</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">void</span> SetPendingMemoryBarriers( Uint32 Barriers ){ m_PendingMemoryBarriers |= Barriers; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  Uint32 GetPendingMemortBarriers(){ <span class="keywordflow">return</span> m_PendingMemoryBarriers;}</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">friend</span> <span class="keyword">class </span>GLContextState;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">void</span> ResetPendingMemoryBarriers( Uint32 Barriers ){ m_PendingMemoryBarriers = Barriers; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">void</span> ClearPendingMemoryBarriers( Uint32 Barriers ){ m_PendingMemoryBarriers &= ~Barriers; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// Buffer barriers:</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// GL_ELEMENT_ARRAY_BARRIER_BIT</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// GL_UNIFORM_BARRIER_BIT</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// GL_BUFFER_UPDATE_BARRIER_BIT </span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// GL_SHADER_STORAGE_BARRIER_BIT</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// Texture barriers:</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// GL_TEXTURE_FETCH_BARRIER_BIT</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// GL_SHADER_IMAGE_ACCESS_BARRIER_BIT</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// GL_PIXEL_BUFFER_BARRIER_BIT </span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// GL_TEXTURE_UPDATE_BARRIER_BIT </span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Misc barriers:</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// GL_FRAMEBUFFER_BARRIER_BIT </span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// GL_TRANSFORM_FEEDBACK_BARRIER_BIT </span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// GL_ATOMIC_COUNTER_BARRIER_BIT </span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// GL_QUERY_BUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  Uint32 m_PendingMemoryBarriers;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_atomics_8h_source.html b/doc/html/_atomics_8h_source.html index 420e8464..270b01b0 100644 --- a/doc/html/_atomics_8h_source.html +++ b/doc/html/_atomics_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">Atomics.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#if defined( PLATFORM_WIN32 ) || defined( PLATFORM_UNIVERSAL_WINDOWS )</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor"> #include "Win32Atomics.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">typedef</span> WindowsAtomics Atomics;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Use c++11 standard atomics</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"> #include "BasicAtomics.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">typedef</span> BasicAtomics Atomics;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#if defined( PLATFORM_WIN32 ) || defined( PLATFORM_UNIVERSAL_WINDOWS )</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor"> #include "Win32Atomics.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">typedef</span> WindowsAtomics Atomics;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Use c++11 standard atomics</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"> #include "BasicAtomics.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">typedef</span> BasicAtomics Atomics;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_base_interfaces_g_l_8h_source.html b/doc/html/_base_interfaces_g_l_8h_source.html index 75a77955..f9c8db3c 100644 --- a/doc/html/_base_interfaces_g_l_8h_source.html +++ b/doc/html/_base_interfaces_g_l_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">BaseInterfacesGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#if defined(PLATFORM_ANDROID)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"> #include "RenderDeviceGLES.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">using</span> IGLDeviceBaseInterface = IRenderDeviceGLES;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#elif defined(PLATFORM_WIN32) || defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"> #include "RenderDeviceGL.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">using</span> IGLDeviceBaseInterface = IRenderDeviceGL;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor"># error Unsupported platform</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "DeviceContextGL.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">using</span> IGLDeviceContextBaseInterface = IDeviceContextGL;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#if defined(PLATFORM_ANDROID)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"> #include "RenderDeviceGLES.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">using</span> IGLDeviceBaseInterface = IRenderDeviceGLES;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#elif defined(PLATFORM_WIN32) || defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"> #include "RenderDeviceGL.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">using</span> IGLDeviceBaseInterface = IRenderDeviceGL;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor"># error Unsupported platform</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "DeviceContextGL.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">using</span> IGLDeviceContextBaseInterface = IDeviceContextGL;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_basic_atomics_8h_source.html b/doc/html/_basic_atomics_8h_source.html index bb85bc64..f8e6b3d9 100644 --- a/doc/html/_basic_atomics_8h_source.html +++ b/doc/html/_basic_atomics_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">BasicAtomics.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <atomic></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>BasicAtomics</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">typedef</span> <span class="keywordtype">long</span> Long;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">typedef</span> std::atomic<Long> AtomicLong;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">typedef</span> std::atomic<int64_t> AtomicInt64;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// The function returns the resulting INCREMENTED value.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Type></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Type AtomicIncrement(std::atomic<Type> &Val)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> ++Val;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">// The function returns the resulting DECREMENTED value.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Type></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Type AtomicDecrement(std::atomic<Type> &Val)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> --Val;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// The function compares the Destination value with the Comparand value. If the Destination value is equal </span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// to the Comparand value, the Exchange value is stored in the address specified by Destination. </span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// Otherwise, no operation is performed.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// The function returns the initial value of the Destination parameter</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Type></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Type AtomicCompareExchange( std::atomic<Type> &Destination, Type Exchange, Type Comparand)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  Destination.compare_exchange_strong(Comparand, Exchange);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> Comparand;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Type></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Type AtomicAdd( std::atomic<Type> &Destination, Type Val)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> std::atomic_fetch_add(&Destination, Val);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> };</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <atomic></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>BasicAtomics</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">typedef</span> <span class="keywordtype">long</span> Long;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">typedef</span> std::atomic<Long> AtomicLong;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">typedef</span> std::atomic<int64_t> AtomicInt64;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// The function returns the resulting INCREMENTED value.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Type></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Type AtomicIncrement(std::atomic<Type> &Val)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> ++Val;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">// The function returns the resulting DECREMENTED value.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Type></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Type AtomicDecrement(std::atomic<Type> &Val)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> --Val;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// The function compares the Destination value with the Comparand value. If the Destination value is equal </span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// to the Comparand value, the Exchange value is stored in the address specified by Destination. </span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// Otherwise, no operation is performed.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// The function returns the initial value of the Destination parameter</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Type></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Type AtomicCompareExchange( std::atomic<Type> &Destination, Type Exchange, Type Comparand)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  Destination.compare_exchange_strong(Comparand, Exchange);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> Comparand;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Type></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Type AtomicAdd( std::atomic<Type> &Destination, Type Val)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> std::atomic_fetch_add(&Destination, Val);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> };</div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_basic_file_stream_8h_source.html b/doc/html/_basic_file_stream_8h_source.html index 3044f7e6..dd2d2cee 100644 --- a/doc/html/_basic_file_stream_8h_source.html +++ b/doc/html/_basic_file_stream_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BasicFileStream.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "FileStream.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RefCountedObjectImpl.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "FileWrapper.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_basic_file_stream.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_basic_file_stream.html">BasicFileStream</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><IFileStream></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<IFileStream></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_basic_file_stream.html">BasicFileStream</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> Char *Path, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  EFileAccessMode Access = EFileAccessMode::Read);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_basic_file_stream.html#af67151ca8818f96f64efb4e7167131eb">Read</a>( IDataBlob *pData )<span class="keyword">override</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_basic_file_stream.html#af67151ca8818f96f64efb4e7167131eb">Read</a>( <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> BufferSize )<span class="keyword">override</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_basic_file_stream.html#a5ed589fefc69ac4ce56180f121bdf648">Write</a>( <span class="keyword">const</span> <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> Size )<span class="keyword">override</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetSize()<span class="keyword">override</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsValid()<span class="keyword">override</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  FileWrapper m_FileWrpr;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> };</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "FileStream.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RefCountedObjectImpl.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "FileWrapper.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_basic_file_stream.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_basic_file_stream.html">BasicFileStream</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><IFileStream></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<IFileStream></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_basic_file_stream.html">BasicFileStream</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> Char *Path, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  EFileAccessMode Access = EFileAccessMode::Read);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_basic_file_stream.html#af67151ca8818f96f64efb4e7167131eb">Read</a>( IDataBlob *pData )<span class="keyword">override</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_basic_file_stream.html#af67151ca8818f96f64efb4e7167131eb">Read</a>( <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> BufferSize )<span class="keyword">override</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_basic_file_stream.html#a5ed589fefc69ac4ce56180f121bdf648">Write</a>( <span class="keyword">const</span> <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> Size )<span class="keyword">override</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetSize()<span class="keyword">override</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsValid()<span class="keyword">override</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  FileWrapper m_FileWrpr;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> };</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_basic_file_stream_html_a5ed589fefc69ac4ce56180f121bdf648"><div class="ttname"><a href="class_diligent_1_1_basic_file_stream.html#a5ed589fefc69ac4ce56180f121bdf648">Diligent::BasicFileStream::Write</a></div><div class="ttdeci">virtual bool Write(const void *Data, size_t Size) override</div><div class="ttdoc">Writes data to the stream. </div><div class="ttdef"><b>Definition:</b> BasicFileStream.cpp:49</div></div> <div class="ttc" id="class_diligent_1_1_basic_file_stream_html_af67151ca8818f96f64efb4e7167131eb"><div class="ttname"><a href="class_diligent_1_1_basic_file_stream.html#af67151ca8818f96f64efb4e7167131eb">Diligent::BasicFileStream::Read</a></div><div class="ttdeci">virtual void Read(IDataBlob *pData) override</div><div class="ttdoc">Reads data from the stream. </div></div> @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_basic_file_system_8h_source.html b/doc/html/_basic_file_system_8h_source.html index a05e53bf..f8585084 100644 --- a/doc/html/_basic_file_system_8h_source.html +++ b/doc/html/_basic_file_system_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">BasicFileSystem.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">enum class</span> EFileAccessMode</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  Read,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  Overwrite,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  Append</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> };</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">enum class</span> FilePosOrigin</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  Start,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  Curr,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  End</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> };</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">struct </span>FileOpenAttribs</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> Diligent::Char *strFilePath;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  EFileAccessMode AccessMode;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  FileOpenAttribs(<span class="keyword">const</span> Diligent::Char *Path = <span class="keyword">nullptr</span>, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  EFileAccessMode Access = EFileAccessMode::Read) :</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  strFilePath( Path ),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  AccessMode( Access )</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> };</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">class </span>BasicFile</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  BasicFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs, Diligent::Char SlashSymbol );</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> ~BasicFile();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">size_t</span> GetSize();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a>& GetPath(){ <span class="keywordflow">return</span> m_Path; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> GetOpenModeStr();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  FileOpenAttribs m_OpenAttribs;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> m_Path;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">struct </span>FindFileData</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> Diligent::Char* Name()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsDirectory()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> ~FindFileData(){}</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">struct </span>BasicFileSystem</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">static</span> BasicFile* OpenFile( FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ReleaseFile( BasicFile* );</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">static</span> std::string GetFullPath( <span class="keyword">const</span> Diligent::Char *strFilePath );</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> FileExists( <span class="keyword">const</span> Diligent::Char *strFilePath );</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> SetWorkingDirectory( <span class="keyword">const</span> Diligent::Char *strWorkingDir ){ m_strWorkingDirectory = strWorkingDir; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> &GetWorkingDirectory(){ <span class="keywordflow">return</span> m_strWorkingDirectory; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">static</span> Diligent::Char GetSlashSymbol();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> CorrectSlashes(<a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> &Path, Diligent::Char SlashSymbol);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> SplitFilePath(<span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a>& FullName,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> *Path, </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> *Name);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> m_strWorkingDirectory;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> };</div><div class="ttc" id="namespace_diligent_html_a3d23c2ee2a78504778603d8ef49ae314"><div class="ttname"><a href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a></div><div class="ttdeci">std::basic_string< Char > String</div><div class="ttdoc">String variable. </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:51</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">enum class</span> EFileAccessMode</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  Read,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  Overwrite,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  Append</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> };</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">enum class</span> FilePosOrigin</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  Start,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  Curr,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  End</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> };</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">struct </span>FileOpenAttribs</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> Diligent::Char *strFilePath;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  EFileAccessMode AccessMode;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  FileOpenAttribs(<span class="keyword">const</span> Diligent::Char *Path = <span class="keyword">nullptr</span>, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  EFileAccessMode Access = EFileAccessMode::Read) :</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  strFilePath( Path ),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  AccessMode( Access )</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> };</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">class </span>BasicFile</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  BasicFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs, Diligent::Char SlashSymbol );</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> ~BasicFile();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">size_t</span> GetSize();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a>& GetPath(){ <span class="keywordflow">return</span> m_Path; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> GetOpenModeStr();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  FileOpenAttribs m_OpenAttribs;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> m_Path;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">struct </span>FindFileData</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> Diligent::Char* Name()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsDirectory()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> ~FindFileData(){}</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">struct </span>BasicFileSystem</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">static</span> BasicFile* OpenFile( FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ReleaseFile( BasicFile* );</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">static</span> std::string GetFullPath( <span class="keyword">const</span> Diligent::Char *strFilePath );</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> FileExists( <span class="keyword">const</span> Diligent::Char *strFilePath );</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> SetWorkingDirectory( <span class="keyword">const</span> Diligent::Char *strWorkingDir ){ m_strWorkingDirectory = strWorkingDir; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> &GetWorkingDirectory(){ <span class="keywordflow">return</span> m_strWorkingDirectory; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">static</span> Diligent::Char GetSlashSymbol();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> CorrectSlashes(<a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> &Path, Diligent::Char SlashSymbol);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> SplitFilePath(<span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a>& FullName,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> *Path, </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> *Name);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> m_strWorkingDirectory;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> };</div><div class="ttc" id="namespace_diligent_html_a3d23c2ee2a78504778603d8ef49ae314"><div class="ttname"><a href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a></div><div class="ttdeci">std::basic_string< Char > String</div><div class="ttdoc">String variable. </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:51</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_basic_math_8h_source.html b/doc/html/_basic_math_8h_source.html index 60a4a745..3a9d25a4 100644 --- a/doc/html/_basic_math_8h_source.html +++ b/doc/html/_basic_math_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">BasicMath.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define _USE_MATH_DEFINES</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <math.h></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Common Constants</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define PI_F 3.1415927f</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// Template Vector & Matrix Classes</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Matrix4x4;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Vector4;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Vector2</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">union</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  T x;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  T y;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  T r;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  T g;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  T u;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  T v;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  };</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  Vector2 operator-(<span class="keyword">const</span> Vector2<T> &right)<span class="keyword">const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> Vector2(x - right.x, y - right.y);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Vector2& operator-=(<span class="keyword">const</span> Vector2<T> &right)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  x -= right.x;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  y -= right.y;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  Vector2 operator-()<span class="keyword">const</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> Vector2(-x, -y);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  Vector2 operator+(<span class="keyword">const</span> Vector2<T> &right)<span class="keyword">const</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> Vector2(x + right.x, y + right.y);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  Vector2& operator+=(<span class="keyword">const</span> Vector2<T> &right)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  x += right.x;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  y += right.y;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  Vector2 operator*(T s)<span class="keyword">const</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> Vector2(x * s, y * s);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Vector2 operator*(<span class="keyword">const</span> Vector2 &right)<span class="keyword">const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> Vector2(x * right.x, y * right.y);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  Vector2& operator*=( <span class="keyword">const</span> Vector2 &right)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  x *= right.x;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  y *= right.y;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Vector2& operator*=( T s)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  x *= s;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  y *= s;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  Vector2 operator/(<span class="keyword">const</span> Vector2 &right)<span class="keyword">const</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> Vector2(x / right.x, y / right.y);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Vector2& operator/=( <span class="keyword">const</span> Vector2 &right)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  x /= right.x;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  y /= right.y;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  Vector2 operator/(T s)<span class="keyword">const</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> Vector2(x / s, y / s);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  Vector2& operator/=( T s)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  x /= s;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  y /= s;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Vector2 &right)<span class="keyword">const</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> x == right.x && y == right.y;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> Vector2 &right)<span class="keyword">const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == right);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  Vector2 operator < ( <span class="keyword">const</span> Vector2 &right )<span class="keyword">const</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> Vector2(x < right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  y < right.y ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  Vector2 operator > ( <span class="keyword">const</span> Vector2 &right )<span class="keyword">const</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> Vector2(x > right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  y > right.y ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  Vector2 operator <= ( <span class="keyword">const</span> Vector2 &right )<span class="keyword">const</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> Vector2(x <= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  y <= right.y ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  Vector2 operator >= ( <span class="keyword">const</span> Vector2 &right )<span class="keyword">const</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> Vector2(x >= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  y >= right.y ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  T& operator[](<span class="keywordtype">size_t</span> index)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">const</span> T& operator[](<span class="keywordtype">size_t</span> index)<span class="keyword">const</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  Vector2(T _x = 0, T _y = 0) : x(_x), y(_y) { }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> };</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> Vector2<T> operator*(T s, <span class="keyword">const</span> Vector2<T> &a)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> a * s;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Vector3</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">union</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  T x;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  T y;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  T z;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  };</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  T r;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  T g;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  T b;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  };</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  T u;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  T v;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  T w;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  };</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  };</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  Vector3 operator-( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> Vector3(x - right.x, y - right.y, z - right.z);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  Vector3 operator-()<span class="keyword">const</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> Vector3(-x, -y, -z);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  Vector3& operator-=(<span class="keyword">const</span> Vector3<T> &right)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  x -= right.x;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  y -= right.y;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  z -= right.z;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  Vector3 operator+( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> Vector3(x + right.x, y + right.y, z + right.z);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  Vector3& operator+=(<span class="keyword">const</span> Vector3<T> &right)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  x += right.x;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  y += right.y;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  z += right.z;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  Vector3 operator*( T s )<span class="keyword">const</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> Vector3(x * s, y * s, z * s);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  Vector3& operator*=( T s)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  x *= s;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  y *= s;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  z *= s;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  Vector3 operator*( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> Vector3(x * right.x, y * right.y, z * right.z);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  Vector3 operator* (<span class="keyword">const</span> Matrix4x4<T>& m)<span class="keyword">const</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  Vector4<T> out4 = Vector4<T>(x, y, z, 1) * m;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> Vector3(out4.x / out4.w, out4.y / out4.w, out4.z / out4.w) ;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  Vector3& operator*=( <span class="keyword">const</span> Vector3 &right)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  x *= right.x;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  y *= right.y;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  z *= right.z;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  Vector3 operator/ ( T s)<span class="keyword">const</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> Vector3(x / s, y / s, z / s);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  Vector3& operator/=( T s)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  x /= s;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  y /= s;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  z /= s;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  Vector3 operator/( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">return</span> Vector3(x / right.x, y / right.y, z / right.z);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  Vector3& operator/=( <span class="keyword">const</span> Vector3 &right)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  x /= right.x;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  y /= right.y;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  z /= right.z;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Vector3 &right)<span class="keyword">const</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">return</span> x == right.x && y == right.y && z == right.z;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> Vector3 &right)<span class="keyword">const</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == right);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  Vector3 operator < ( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> Vector3(x < right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  y < right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  z < right.z ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  Vector3 operator > ( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> Vector3(x > right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  y > right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  z > right.z ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  Vector3 operator <= ( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> Vector3(x <= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  y <= right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  z <= right.z ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  Vector3 operator >= ( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">return</span> Vector3(x >= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  y >= right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  z >= right.z ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  T& operator[](<span class="keywordtype">size_t</span> index)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">const</span> T& operator[](<span class="keywordtype">size_t</span> index)<span class="keyword">const</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  Vector3(T _x = 0, T _y = 0, T _z = 0) : x(_x), y(_y), z(_z) { }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keyword">operator</span> Vector2<T>()<span class="keyword">const</span>{<span class="keywordflow">return</span> Vector2<T>(x,y);}</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> };</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> Vector3<T> operator*(T s, <span class="keyword">const</span> Vector3<T> &a)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">return</span> a * s;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Vector4</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">union</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  T x;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  T y;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  T z;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  T w;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  };</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  T r;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  T g;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  T b;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  T a;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  };</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  };</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  Vector4 operator-( <span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">return</span> Vector4(x - right.x, y - right.y, z - right.z, w - right.w);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  Vector4 operator-()<span class="keyword">const</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">return</span> Vector4(-x, -y, -z, -w);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  Vector4& operator-=(<span class="keyword">const</span> Vector4<T> &right)</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  x -= right.x;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  y -= right.y;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  z -= right.z;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  w -= right.w;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  Vector4 operator+( <span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> Vector4(x + right.x, y + right.y, z + right.z, w + right.w);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> </div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  Vector4& operator+=(<span class="keyword">const</span> Vector4<T> &right)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  x += right.x;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  y += right.y;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  z += right.z;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  w += right.w;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  Vector4 operator*( T s)<span class="keyword">const</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">return</span> Vector4(x * s, y * s, z * s, w * s);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  Vector4& operator*=( T s)</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  x *= s;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  y *= s;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  z *= s;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  w *= s;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  Vector4 operator*( <span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">return</span> Vector4(x * right.x, y * right.y, z * right.z, w * right.w);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  Vector4& operator*=( <span class="keyword">const</span> Vector4 &right)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  x *= right.x;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  y *= right.y;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  z *= right.z;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  w *= right.w;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  Vector4 operator/( T s)<span class="keyword">const</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">return</span> Vector4(x / s, y / s, z / s, w / s);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  Vector4& operator/=( T s)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  x /= s;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  y /= s;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  z /= s;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  w /= s;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  Vector4 operator/( <span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">return</span> Vector4(x / right.x, y / right.y, z / right.z, w / right.w);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  Vector4& operator/=( <span class="keyword">const</span> Vector4 &right)</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  x /= right.x;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  y /= right.y;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  z /= right.z;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  w /= right.w;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">return</span> x == right.x && y == right.y && z == right.z && w == right.w;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == right);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  Vector4 operator*(<span class="keyword">const</span> Matrix4x4<T>& m)<span class="keyword">const</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  Vector4 out;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  out[0] = x * m[0][0] + y * m[1][0] + z * m[2][0] + w * m[3][0];</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  out[1] = x * m[0][1] + y * m[1][1] + z * m[2][1] + w * m[3][1];</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  out[2] = x * m[0][2] + y * m[1][2] + z * m[2][2] + w * m[3][2];</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  out[3] = x * m[0][3] + y * m[1][3] + z * m[2][3] + w * m[3][3];</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  Vector4& operator = (<span class="keyword">const</span> Vector3<T> &v3)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  x = v3.x;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  y = v3.y;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  z = v3.z;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  w = 1;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  Vector4& operator = (<span class="keyword">const</span> Vector4 &) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  Vector4 operator < ( <span class="keyword">const</span> Vector4 &right )<span class="keyword">const</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">return</span> Vector4(x < right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  y < right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  z < right.z ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  w < right.w ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  Vector4 operator > ( <span class="keyword">const</span> Vector4 &right )<span class="keyword">const</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">return</span> Vector4(x > right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  y > right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  z > right.z ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  w > right.w ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  Vector4 operator <= ( <span class="keyword">const</span> Vector4 &right )<span class="keyword">const</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">return</span> Vector4(x <= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  y <= right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  z <= right.z ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  w <= right.w ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  Vector4 operator >= ( <span class="keyword">const</span> Vector4 &right )<span class="keyword">const</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">return</span> Vector4(x >= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  y >= right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  z >= right.z ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  w >= right.w ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  T& operator[](<span class="keywordtype">size_t</span> index)</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keyword">const</span> T& operator[](<span class="keywordtype">size_t</span> index)<span class="keyword">const</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  Vector4(T _x = 0, T _y = 0, T _z = 0, T _w = 0) : x(_x), y(_y), z(_z), w(_w) { }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> };</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> </div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> Vector4<T> operator*(T s, <span class="keyword">const</span> Vector4<T> &a)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">return</span> a * s;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Matrix3x3</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keyword">union</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  T _11; T _12; T _13;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  T _21; T _22; T _23;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  T _31; T _32; T _33;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  };</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  T _m00; T _m01; T _m02;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  T _m10; T _m11; T _m12;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  T _m20; T _m21; T _m22;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  };</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  };</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  Matrix3x3(T value = 0)</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  _11 = _12 = _13 =value;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  _21 = _22 = _23 =value;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  _31 = _32 = _33 =value;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  Matrix3x3(</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  T i11, T i12, T i13,</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  T i21, T i22, T i23,</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  T i31, T i32, T i33 )</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  _11 = i11; _12 = i12; _13 = i13;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  _21 = i21; _22 = i22; _23 = i23;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  _31 = i31; _32 = i32; _33 = i33;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> </div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Matrix3x3 &r)<span class="keyword">const</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 3; ++i )</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> j = 0; i < 3; ++i )</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">if</span>( (*<span class="keyword">this</span>)[i][j] != r[i][j] )</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> </div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> Matrix3x3 &r)<span class="keyword">const</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == r);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  }</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> </div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  T* operator[](<span class="keywordtype">size_t</span> index)</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">return</span> &(<span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index*3]);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> </div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keyword">const</span> T* operator[](<span class="keywordtype">size_t</span> index)<span class="keyword">const</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">return</span> &(<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index*3]);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> </div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  Matrix3x3& operator *=(T s)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 9; ++i )</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  (reinterpret_cast<T*>(<span class="keyword">this</span>))[i] *= s;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> };</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Matrix4x4</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keyword">union</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  T _11; T _12; T _13; T _14;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  T _21; T _22; T _23; T _24;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  T _31; T _32; T _33; T _34;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  T _41; T _42; T _43; T _44;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  };</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  T _m00; T _m01; T _m02; T _m03;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  T _m10; T _m11; T _m12; T _m13;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  T _m20; T _m21; T _m22; T _m23;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  T _m30; T _m31; T _m32; T _m33;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  };</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  };</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  Matrix4x4(T value = 0)</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  {</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  _11 = _12 = _13 = _14 = value;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  _21 = _22 = _23 = _24 = value;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  _31 = _32 = _33 = _34 = value;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  _41 = _42 = _43 = _44 = value;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> </div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  Matrix4x4(</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  T i11, T i12, T i13, T i14,</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  T i21, T i22, T i23, T i24,</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  T i31, T i32, T i33, T i34,</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  T i41, T i42, T i43, T i44</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  )</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  _11 = i11; _12 = i12; _13 = i13; _14 = i14;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  _21 = i21; _22 = i22; _23 = i23; _24 = i24;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  _31 = i31; _32 = i32; _33 = i33; _34 = i34;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  _41 = i41; _42 = i42; _43 = i43; _44 = i44;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  }</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Matrix4x4 &r)<span class="keyword">const</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 4; ++i )</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> j = 0; i < 4; ++i )</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">if</span>( (*<span class="keyword">this</span>)[i][j] != r[i][j] )</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> </div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> </div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> Matrix4x4 &r)<span class="keyword">const</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == r);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> </div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  T* operator[](<span class="keywordtype">size_t</span> index)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="keywordflow">return</span> &(<span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index*4]);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> </div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="keyword">const</span> T* operator[](<span class="keywordtype">size_t</span> index)<span class="keyword">const</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">return</span> &(<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index*4]);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  Matrix4x4& operator *=(T s)</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 16; ++i )</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  (reinterpret_cast<T*>(<span class="keyword">this</span>))[i] *= s;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> </div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> };</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="comment">// Template Vector Operations</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> </div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> T dot(<span class="keyword">const</span> Vector2<T> &a, <span class="keyword">const</span> Vector2<T> &b)</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keywordflow">return</span> a.x * b.x + a.y * b.y;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span> </div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> T dot(<span class="keyword">const</span> Vector3<T> &a, <span class="keyword">const</span> Vector3<T> &b)</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordflow">return</span> a.x * b.x + a.y * b.y + a.z * b.z;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> T dot(<span class="keyword">const</span> Vector4<T> &a, <span class="keyword">const</span> Vector4<T> &b)</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="keywordflow">return</span> a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> }</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> </div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="keyword">template</span> <<span class="keyword">class</span> VectorType></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="keyword">auto</span> length(<span class="keyword">const</span> VectorType &a)->decltype(dot(a,a))</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">return</span> sqrt( dot(a,a) );</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> </div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> </div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> Vector3<T> min(<span class="keyword">const</span> Vector3<T> &a, <span class="keyword">const</span> Vector3<T> &b)</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> {</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">return</span> Vector3<T>( std::min(a.x, b.x), std::min(a.y, b.y), std::min(a.z, b.z) );</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> }</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> </div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> Vector4<T> min(<span class="keyword">const</span> Vector4<T> &a, <span class="keyword">const</span> Vector4<T> &b)</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordflow">return</span> Vector4<T>( std::min(a.x, b.x), std::min(a.y, b.y), std::min(a.z, b.z), std::min(a.w, b.w) );</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> }</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> </div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> Vector3<T> max(<span class="keyword">const</span> Vector3<T> &a, <span class="keyword">const</span> Vector3<T> &b)</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">return</span> Vector3<T>( std::max(a.x, b.x), std::max(a.y, b.y), std::max(a.z, b.z) );</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> Vector4<T> max(<span class="keyword">const</span> Vector4<T> &a, <span class="keyword">const</span> Vector4<T> &b)</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">return</span> Vector4<T>( std::max(a.x, b.x), std::max(a.y, b.y), std::max(a.z, b.z), std::max(a.w, b.w) );</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> }</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> </div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> Vector2<T> abs(<span class="keyword">const</span> Vector2<T> &a)</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="comment">// WARNING: abs() on gcc is for integers only!</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">return</span> Vector2<T>( a.x < 0 ? -a.x : a.x, </div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  a.y < 0 ? -a.y : a.y);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> </div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> Vector3<T> abs(<span class="keyword">const</span> Vector3<T> &a)</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="comment">// WARNING: abs() on gcc is for integers only!</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordflow">return</span> Vector3<T>( a.x < 0 ? -a.x : a.x, </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  a.y < 0 ? -a.y : a.y,</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  a.z < 0 ? -a.z : a.z);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> }</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> </div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> Vector4<T> abs(<span class="keyword">const</span> Vector4<T> &a)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="comment">// WARNING: abs() on gcc is for integers only!</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">return</span> Vector4<T>( a.x < 0 ? -a.x : a.x, </div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  a.y < 0 ? -a.y : a.y,</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  a.z < 0 ? -a.z : a.z,</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  a.w < 0 ? -a.w : a.w);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> </div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> </div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> Vector3<T> cross(<span class="keyword">const</span> Vector3<T> &a, <span class="keyword">const</span> Vector3<T> &b)</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> {</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="comment">// | i j k |</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="comment">// | a.x a.y a.z |</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="comment">// | b.x b.y b.z |</span></div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">return</span> Vector3<T>((a.y*b.z)-(a.z*b.y), (a.z*b.x)-(a.x*b.z), (a.x*b.y)-(a.y*b.x));</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> }</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> </div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="keyword">template</span> <<span class="keyword">class</span> VectorType></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> VectorType normalize(<span class="keyword">const</span> VectorType &a)</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> {</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keyword">auto</span> len = length(a);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">return</span> a / len;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> </div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> <span class="comment">// Template Matrix Operations</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> Matrix4x4<T> transposeMatrix(<span class="keyword">const</span> Matrix4x4<T> &m)</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">return</span> Matrix4x4<T>(</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  m._11, m._21, m._31, m._41,</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  m._12, m._22, m._32, m._42,</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  m._13, m._23, m._33, m._43,</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  m._14, m._24, m._34, m._44</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  );</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> Matrix4x4<T> mul(<span class="keyword">const</span> Matrix4x4<T> &m1, <span class="keyword">const</span> Matrix4x4<T> &m2)</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> {</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  Matrix4x4<T> mOut;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 4; i++)</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < 4; j++)</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  {</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 0; k < 4; k++)</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  mOut[i][j] += m1[i][k] * m2[k][j];</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  }</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  }</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> }</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> </div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> Matrix4x4<T> operator* (<span class="keyword">const</span> Matrix4x4<T> &m1, <span class="keyword">const</span> Matrix4x4<T> &m2)</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">return</span> mul( m1, m2 );</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> </div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> </div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> Matrix3x3<T> transposeMatrix(<span class="keyword">const</span> Matrix3x3<T> &m)</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span> {</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">return</span> Matrix3x3<T>(</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  m._11, m._21, m._31,</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  m._12, m._22, m._32,</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  m._13, m._23, m._33</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  );</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> }</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> </div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> Matrix3x3<T> mul(<span class="keyword">const</span> Matrix3x3<T> &m1, <span class="keyword">const</span> Matrix3x3<T> &m2)</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> {</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  Matrix3x3<T> mOut;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> </div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 3; i++)</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  {</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < 3; j++)</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 0; k < 3; k++)</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  mOut[i][j] += m1[i][k] * m2[k][j];</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  }</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  }</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  }</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> </div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> }</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> </div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> Matrix3x3<T> operator* (<span class="keyword">const</span> Matrix3x3<T> &m1, <span class="keyword">const</span> Matrix3x3<T> &m2)</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">return</span> mul( m1, m2 );</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> }</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> </div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> <span class="comment">// Common HLSL-compatible vector typedefs</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> </div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uint;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> </div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> <span class="keyword">typedef</span> Vector2<float> float2;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> <span class="keyword">typedef</span> Vector3<float> float3;</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> <span class="keyword">typedef</span> Vector4<float> float4;</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> </div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="keyword">typedef</span> Matrix4x4<float> float4x4;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="keyword">typedef</span> Matrix3x3<float> float3x3;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> </div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="comment">// Standard Matrix Intializers</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> </div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="keyword">inline</span> float4x4 identityMatrix()</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">return</span> float4x4(1, 0, 0, 0,</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  0, 1, 0, 0,</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  0, 0, 1, 0,</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  0, 0, 0, 1);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> }</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> </div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> <span class="keyword">inline</span> float4x4 translationMatrix(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z)</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> {</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">return</span> float4x4 (1, 0, 0, 0,</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  0, 1, 0, 0,</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  0, 0, 1, 0,</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  x, y, z, 1);</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> }</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> </div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="keyword">inline</span> float4x4 translationMatrix( <span class="keyword">const</span> float3 &v )</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span> {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keywordflow">return</span> translationMatrix( v.x, v.y, v.z );</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> }</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> </div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> </div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="keyword">inline</span> float4x4 scaleMatrix(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z)</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> {</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">return</span> float4x4(x, 0, 0, 0,</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  0, y, 0, 0,</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  0, 0, z, 0, </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  0, 0, 0, 1);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> }</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> <span class="keyword">inline</span> float4x4 rotationX(<span class="keywordtype">float</span> angleInRadians)</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordtype">float</span> sinAngle = sinf(angleInRadians);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keywordtype">float</span> cosAngle = cosf(angleInRadians);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  float4x4 mOut;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> </div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  mOut._11 = 1.0f; mOut._12 = 0.0f; mOut._13 = 0.0f; mOut._14 = 0.0f;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  mOut._21 = 0.0f; mOut._22 = cosAngle; mOut._23 = -sinAngle; mOut._24 = 0.0f;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  mOut._31 = 0.0f; mOut._32 = sinAngle; mOut._33 = cosAngle; mOut._34 = 0.0f;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  mOut._41 = 0.0f; mOut._42 = 0.0f; mOut._43 = 0.0f; mOut._44 = 1.0f;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> </div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> }</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="keyword">inline</span> float4x4 rotationY(<span class="keywordtype">float</span> angleInRadians)</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> {</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordtype">float</span> sinAngle = sinf(angleInRadians);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordtype">float</span> cosAngle = cosf(angleInRadians);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> </div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  float4x4 mOut;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> </div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  mOut._11 = cosAngle; mOut._12 = 0.0f; mOut._13 = sinAngle; mOut._14 = 0.0f;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  mOut._21 = 0.0f; mOut._22 = 1.0f; mOut._23 = 0.0f; mOut._24 = 0.0f;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  mOut._31 = -sinAngle; mOut._32 = 0.0f; mOut._33 = cosAngle; mOut._34 = 0.0f;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  mOut._41 = 0.0f; mOut._42 = 0.0f; mOut._43 = 0.0f; mOut._44 = 1.0f;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> </div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> }</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> </div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="keyword">inline</span> float4x4 rotationZ(<span class="keywordtype">float</span> angleInRadians)</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> {</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordtype">float</span> sinAngle = sinf(angleInRadians);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordtype">float</span> cosAngle = cosf(angleInRadians);</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  float4x4 mOut;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> </div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  mOut._11 = cosAngle; mOut._12 = -sinAngle; mOut._13 = 0.0f; mOut._14 = 0.0f;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  mOut._21 = sinAngle; mOut._22 = cosAngle; mOut._23 = 0.0f; mOut._24 = 0.0f;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  mOut._31 = 0.0f; mOut._32 = 0.0f; mOut._33 = 1.0f; mOut._34 = 0.0f;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  mOut._41 = 0.0f; mOut._42 = 0.0f; mOut._43 = 0.0f; mOut._44 = 1.0f;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> }</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> </div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="comment">// 3D Rotation matrix for an arbitrary axis specified by x, y and z</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="keyword">inline</span> float4x4 rotationArbitrary(float3 axis, <span class="keywordtype">float</span> degree)</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  UNSUPPORTED(<span class="stringliteral">"This function is not tested, it might be incorrect"</span>);</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> </div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  axis = normalize(axis);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> </div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordtype">float</span> angleInRadians = degree * (PI_F / 180.0f);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span> </div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="keywordtype">float</span> sinAngle = sinf(angleInRadians);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="keywordtype">float</span> cosAngle = cosf(angleInRadians);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordtype">float</span> oneMinusCosAngle = 1 - cosAngle;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  float4x4 mOut;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> </div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  mOut._11 = 1.0f + oneMinusCosAngle * (axis.x * axis.x - 1.0f);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  mOut._12 = axis.z * sinAngle + oneMinusCosAngle * axis.x * axis.y;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  mOut._13 = -axis.y * sinAngle + oneMinusCosAngle * axis.x * axis.z;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  mOut._41 = 0.0f;</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> </div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  mOut._21 = -axis.z * sinAngle + oneMinusCosAngle * axis.y * axis.x;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  mOut._22 = 1.0f + oneMinusCosAngle * (axis.y * axis.y - 1.0f);</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  mOut._23 = axis.x * sinAngle + oneMinusCosAngle * axis.y * axis.z;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  mOut._24 = 0.0f;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> </div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  mOut._31 = axis.y * sinAngle + oneMinusCosAngle * axis.z * axis.x;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  mOut._32 = -axis.x * sinAngle + oneMinusCosAngle * axis.z * axis.y;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  mOut._33 = 1.0f + oneMinusCosAngle * (axis.z * axis.z - 1.0f);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  mOut._34 = 0.0f;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  mOut._41 = 0.0f;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  mOut._42 = 0.0f;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  mOut._43 = 0.0f;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  mOut._44 = 1.0f;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> </div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="keyword">inline</span> float4x4 ViewMatrixFromBasis( <span class="keyword">const</span> float3 &f3X, <span class="keyword">const</span> float3 &f3Y, <span class="keyword">const</span> float3 &f3Z )</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">return</span> float4x4( f3X.x, f3Y.x, f3Z.x, 0,</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  f3X.y, f3Y.y, f3Z.y, 0,</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  f3X.z, f3Y.z, f3Z.z, 0,</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  0, 0, 0, 1);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> }</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> SetNearFarClipPlanes( float4x4 &ProjMatrix, <span class="keywordtype">float</span> zNear, <span class="keywordtype">float</span> zFar, <span class="keywordtype">bool</span> bIsDirectX )</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> {</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  <span class="keywordflow">if</span>( bIsDirectX )</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  {</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  ProjMatrix._33 = zFar / (zFar - zNear);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  ProjMatrix._43 = -zNear * zFar / (zFar - zNear);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  ProjMatrix._34 = 1;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  }</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  {</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="comment">// https://www.opengl.org/sdk/docs/man2/xhtml/gluPerspective.xml</span></div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <span class="comment">// http://www.terathon.com/gdc07_lengyel.pdf</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="comment">// Note that OpenGL uses right-handed coordinate system, where</span></div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="comment">// camera is looking in negative z direction:</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="comment">// OO</span></div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="comment">// |__|<--------------------</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="comment">// -z +z</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="comment">// Consequently, OpenGL projection matrix given by these two</span></div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="comment">// references inverts z axis.</span></div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> </div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="comment">// We do not need to do this, because we use DX coordinate</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="comment">// system for the camera space. Thus we need to invert the </span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="comment">// sign of the values in the third column in the matrix </span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="comment">// from the references:</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> </div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  ProjMatrix._33 = -(-(zFar + zNear) / (zFar - zNear));</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  ProjMatrix._43 = -2.0f * zNear * zFar / (zFar - zNear);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  ProjMatrix._34 = -(-1);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  }</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> }</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> </div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> GetNearFarPlaneFromProjMatrix( <span class="keyword">const</span> float4x4 &ProjMatrix, <span class="keywordtype">float</span> &zNear, <span class="keywordtype">float</span> &zFar, <span class="keywordtype">bool</span> bIsDirectX )</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> {</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordflow">if</span>( bIsDirectX )</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  zNear = -ProjMatrix._43 / ProjMatrix._33;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  zFar = ProjMatrix._33 / (ProjMatrix._33 - 1) * zNear;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  }</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  {</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  zNear = ProjMatrix._43 / (-1.f - ProjMatrix._33);</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  zFar = ProjMatrix._43 / (+1.f - ProjMatrix._33);</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  }</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> }</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> </div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="keyword">inline</span> float4x4 Projection(<span class="keywordtype">float</span> fov, <span class="keywordtype">float</span> aspectRatio, <span class="keywordtype">float</span> zNear, <span class="keywordtype">float</span> zFar, <span class="keywordtype">bool</span> bIsDirectX) <span class="comment">// Left-handed projection</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> {</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  float4x4 mOut;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordtype">float</span> yScale = 1.0f / tan(fov / 2.0f);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordtype">float</span> xScale = yScale / aspectRatio;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  mOut._11 = xScale;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  mOut._22 = yScale;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> </div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  SetNearFarClipPlanes( mOut, zNear, zFar, bIsDirectX );</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  </div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> }</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> </div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <span class="keyword">struct </span>Quaternion</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> {</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="keywordtype">float</span> q[4];</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> };</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> </div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="keyword">inline</span> Quaternion RotationFromAxisAngle(<span class="keyword">const</span> float3& axis, <span class="keywordtype">float</span> angle)</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> {</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  Quaternion out;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keywordtype">float</span> norm = length(axis);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordtype">float</span> sina2 = sin(0.5f * angle);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  out.q[0] = sina2 * axis[0] / norm;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  out.q[1] = sina2 * axis[1] / norm;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  out.q[2] = sina2 * axis[2] / norm;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  out.q[3] = cos(0.5f * angle);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> }</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> </div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> AxisAngleFromRotation(float3& outAxis, <span class="keywordtype">float</span>& outAngle, <span class="keyword">const</span> Quaternion& quat)</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordtype">float</span> sina2 = sqrt(quat.q[0]*quat.q[0] + quat.q[1]*quat.q[1] + quat.q[2]*quat.q[2]);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  outAngle = 2.0f * atan2(sina2, quat.q[3]);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="keywordtype">float</span> r = (sina2 > 0) ? (1.0f / sina2) : 0;</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  outAxis[0] = r * quat.q[0];</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  outAxis[1] = r * quat.q[1];</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  outAxis[2] = r * quat.q[2]; </div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="keyword">inline</span> float4x4 QuaternionToMatrix(<span class="keyword">const</span> Quaternion& quat)</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> {</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  float4x4 out;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="keywordtype">float</span> yy2 = 2.0f * quat.q[1] * quat.q[1];</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <span class="keywordtype">float</span> xy2 = 2.0f * quat.q[0] * quat.q[1];</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordtype">float</span> xz2 = 2.0f * quat.q[0] * quat.q[2];</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="keywordtype">float</span> yz2 = 2.0f * quat.q[1] * quat.q[2];</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  <span class="keywordtype">float</span> zz2 = 2.0f * quat.q[2] * quat.q[2];</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordtype">float</span> wz2 = 2.0f * quat.q[3] * quat.q[2];</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keywordtype">float</span> wy2 = 2.0f * quat.q[3] * quat.q[1];</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordtype">float</span> wx2 = 2.0f * quat.q[3] * quat.q[0];</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keywordtype">float</span> xx2 = 2.0f * quat.q[0] * quat.q[0];</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  out[0][0] = - yy2 - zz2 + 1.0f;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  out[0][1] = xy2 + wz2;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  out[0][2] = xz2 - wy2;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  out[0][3] = 0;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  out[1][0] = xy2 - wz2;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  out[1][1] = - xx2 - zz2 + 1.0f;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  out[1][2] = yz2 + wx2;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  out[1][3] = 0;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  out[2][0] = xz2 + wy2;</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  out[2][1] = yz2 - wx2;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  out[2][2] = - xx2 - yy2 + 1.0f;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  out[2][3] = 0;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  out[3][0] = out[3][1] = out[3][2] = 0;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  out[3][3] = 1;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span> }</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> </div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> determinant( <span class="keyword">const</span> float3x3& m )</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="keywordtype">float</span> det = 0.f;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  det += m._11 * (m._22*m._33 - m._32*m._23);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  det -= m._12 * (m._21*m._33 - m._31*m._23);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  det += m._13 * (m._21*m._32 - m._31*m._22);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">return</span> det;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> }</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> </div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> determinant( <span class="keyword">const</span> float4x4& m )</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> {</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordtype">float</span> det = 0.f;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> </div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  det += m._11 * determinant( </div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  float3x3 ( m._22,m._23,m._24,</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  m._32,m._33,m._34,</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  m._42,m._43,m._44) );</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> </div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  det -= m._12 * determinant(</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  float3x3( m._21,m._23,m._24,</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  m._31,m._33,m._34,</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  m._41,m._43,m._44) );</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> </div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  det += m._13 * determinant(</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  float3x3( m._21,m._22,m._24,</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  m._31,m._32,m._34,</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  m._41,m._42,m._44) );</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> </div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  det -= m._14 * determinant(</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  float3x3( m._21,m._22,m._23,</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  m._31,m._32,m._33,</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  m._41,m._42,m._43) );</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> </div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="keywordflow">return</span> det;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> }</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> <span class="keyword">inline</span> float4x4 inverseMatrix(<span class="keyword">const</span> float4x4& m)</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> {</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  float4x4 inv;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> </div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="comment">// row 1</span></div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  inv._11 = determinant( </div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  float3x3( m._22, m._23, m._24,</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  m._32, m._33, m._34,</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  m._42, m._43, m._44 ) );</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> </div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  inv._12 = -determinant(</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  float3x3( m._21, m._23, m._24,</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  m._31, m._33, m._34,</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  m._41, m._43, m._44) );</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  inv._13 = determinant(</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  float3x3 ( m._21, m._22, m._24,</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  m._31, m._32, m._34,</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  m._41, m._42, m._44) );</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> </div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  inv._14 = -determinant(</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  float3x3 ( m._21, m._22, m._23,</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  m._31, m._32, m._33,</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  m._41, m._42, m._43) );</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> </div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="comment">// row 2</span></div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  inv._21 = -determinant(</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  float3x3( m._12, m._13, m._14,</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  m._32, m._33, m._34,</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  m._42, m._43, m._44) );</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> </div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  inv._22 = determinant(</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  float3x3( m._11, m._13, m._14,</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  m._31, m._33, m._34,</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  m._41, m._43, m._44) );</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> </div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  inv._23 = -determinant(</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  float3x3( m._11, m._12, m._14,</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  m._31, m._32, m._34,</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  m._41, m._42, m._44) );</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> </div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  inv._24 = determinant(</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  float3x3( m._11, m._12, m._13,</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  m._31, m._32, m._33,</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  m._41, m._42, m._43) );</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> </div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> </div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  <span class="comment">// row 3</span></div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  inv._31 = determinant(</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  float3x3( m._12,m._13,m._14,</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  m._22,m._23,m._24,</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  m._42,m._43,m._44) );</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> </div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  inv._32 = -determinant(</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  float3x3( m._11,m._13,m._14,</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  m._21,m._23,m._24,</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  m._41,m._43,m._44) );</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> </div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  inv._33 = determinant(</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  float3x3( m._11,m._12,m._14,</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  m._21,m._22,m._24,</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  m._41,m._42,m._44) );</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> </div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  inv._34 = -determinant(</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  float3x3( m._11,m._12,m._13,</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  m._21,m._22,m._23,</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  m._41,m._42,m._43) );</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> </div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <span class="comment">// row 4</span></div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  inv._41 = -determinant(</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  float3x3( m._12, m._13, m._14,</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  m._22, m._23, m._24,</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  m._32, m._33, m._34) );</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> </div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  inv._42 = determinant(</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  float3x3( m._11, m._13, m._14,</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  m._21, m._23, m._24,</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  m._31, m._33, m._34) );</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> </div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  inv._43 = -determinant(</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  float3x3( m._11, m._12, m._14,</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  m._21, m._22, m._24,</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  m._31, m._32, m._34) );</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> </div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  inv._44 = determinant(</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  float3x3( m._11, m._12, m._13,</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  m._21, m._22, m._23,</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  m._31, m._32, m._33) );</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  </div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  <span class="keyword">auto</span> det = m._11 * inv._11 + m._12 * inv._12 + m._13 * inv._13 + m._14 * inv._14;</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  inv = transposeMatrix(inv);</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  inv *= 1.0f/det;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> </div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  <span class="keywordflow">return</span> inv;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> }</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> </div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> {</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  Vector2<T> max( <span class="keyword">const</span> Vector2<T> &Left, <span class="keyword">const</span> Vector2<T> &Right )</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  {</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  <span class="keywordflow">return</span> Vector2<T>( </div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  std::max( Left.x, Right.x ), </div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  std::max( Left.y, Right.y ) </div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  );</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  }</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> </div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  Vector3<T> max( <span class="keyword">const</span> Vector3<T> &Left, <span class="keyword">const</span> Vector3<T> &Right )</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  {</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  <span class="keywordflow">return</span> Vector3<T>( </div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  std::max( Left.x, Right.x ), </div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  std::max( Left.y, Right.y ),</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  std::max( Left.z, Right.z )</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  );</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  }</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> </div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  Vector4<T> max( <span class="keyword">const</span> Vector4<T> &Left, <span class="keyword">const</span> Vector4<T> &Right )</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  {</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  <span class="keywordflow">return</span> Vector4<T>( </div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  std::max( Left.x, Right.x ), </div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  std::max( Left.y, Right.y ),</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  std::max( Left.z, Right.z ),</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  std::max( Left.w, Right.w )</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  );</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  }</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> </div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> </div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  Vector2<T> min( <span class="keyword">const</span> Vector2<T> &Left, <span class="keyword">const</span> Vector2<T> &Right )</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  {</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keywordflow">return</span> Vector2<T>( </div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  std::min( Left.x, Right.x ), </div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  std::min( Left.y, Right.y ) </div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  );</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  }</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  Vector3<T> min( <span class="keyword">const</span> Vector3<T> &Left, <span class="keyword">const</span> Vector3<T> &Right )</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  {</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <span class="keywordflow">return</span> Vector3<T>( </div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  std::min( Left.x, Right.x ), </div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  std::min( Left.y, Right.y ),</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  std::min( Left.z, Right.z )</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  );</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  }</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span> </div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  Vector4<T> min( <span class="keyword">const</span> Vector4<T> &Left, <span class="keyword">const</span> Vector4<T> &Right )</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  {</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  <span class="keywordflow">return</span> Vector4<T>( </div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  std::min( Left.x, Right.x ), </div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  std::min( Left.y, Right.y ),</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  std::min( Left.z, Right.z ),</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  std::min( Left.w, Right.w )</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  );</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  }</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> </div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> </div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  <span class="keyword">struct </span>hash<Vector2<T>></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  {</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Vector2<T> &v2 )<span class="keyword"> const</span></div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> <span class="keyword"> </span>{</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(v2.x, v2.y);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  }</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  };</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  <span class="keyword">struct </span>hash<Vector3<T>></div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  {</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Vector3<T> &v3 )<span class="keyword"> const</span></div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span> <span class="keyword"> </span>{</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(v3.x, v3.y, v3.z);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  }</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  };</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> </div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  <span class="keyword">struct </span>hash<Vector4<T>></div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  {</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Vector4<T> &v4 )<span class="keyword"> const</span></div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> <span class="keyword"> </span>{</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(v4.x, v4.y, v4.z, v4.w);</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  }</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  };</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> </div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  <span class="keyword">struct </span>hash<Matrix3x3<T>></div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  {</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Matrix3x3<T> &m )<span class="keyword"> const</span></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> <span class="keyword"> </span>{</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( </div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  m._m00, m._m01, m._m02,</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  m._m10, m._m11, m._m12,</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  m._m20, m._m21, m._m22</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  );</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  }</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  };</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> </div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  <span class="keyword">struct </span>hash<Matrix4x4<T>></div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  {</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Matrix4x4<T> &m )<span class="keyword"> const</span></div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> <span class="keyword"> </span>{</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( </div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  m._m00, m._m01, m._m02, m._m03,</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  m._m10, m._m11, m._m12, m._m13,</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  m._m20, m._m21, m._m22, m._m23,</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  m._m30, m._m31, m._m32, m._m33</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  );</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  }</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  };</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> }</div><div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define _USE_MATH_DEFINES</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <math.h></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Common Constants</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define PI_F 3.1415927f</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// Template Vector & Matrix Classes</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Matrix4x4;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Vector4;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Vector2</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">union</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  T x;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  T y;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  T r;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  T g;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  T u;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  T v;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  };</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  Vector2 operator-(<span class="keyword">const</span> Vector2<T> &right)<span class="keyword">const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> Vector2(x - right.x, y - right.y);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Vector2& operator-=(<span class="keyword">const</span> Vector2<T> &right)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  x -= right.x;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  y -= right.y;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  Vector2 operator-()<span class="keyword">const</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> Vector2(-x, -y);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  Vector2 operator+(<span class="keyword">const</span> Vector2<T> &right)<span class="keyword">const</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> Vector2(x + right.x, y + right.y);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  Vector2& operator+=(<span class="keyword">const</span> Vector2<T> &right)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  x += right.x;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  y += right.y;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  Vector2 operator*(T s)<span class="keyword">const</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> Vector2(x * s, y * s);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Vector2 operator*(<span class="keyword">const</span> Vector2 &right)<span class="keyword">const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> Vector2(x * right.x, y * right.y);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  Vector2& operator*=( <span class="keyword">const</span> Vector2 &right)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  x *= right.x;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  y *= right.y;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Vector2& operator*=( T s)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  x *= s;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  y *= s;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  Vector2 operator/(<span class="keyword">const</span> Vector2 &right)<span class="keyword">const</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> Vector2(x / right.x, y / right.y);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Vector2& operator/=( <span class="keyword">const</span> Vector2 &right)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  x /= right.x;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  y /= right.y;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  Vector2 operator/(T s)<span class="keyword">const</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> Vector2(x / s, y / s);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  Vector2& operator/=( T s)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  x /= s;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  y /= s;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Vector2 &right)<span class="keyword">const</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> x == right.x && y == right.y;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> Vector2 &right)<span class="keyword">const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == right);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  Vector2 operator < ( <span class="keyword">const</span> Vector2 &right )<span class="keyword">const</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> Vector2(x < right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  y < right.y ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  Vector2 operator > ( <span class="keyword">const</span> Vector2 &right )<span class="keyword">const</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> Vector2(x > right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  y > right.y ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  Vector2 operator <= ( <span class="keyword">const</span> Vector2 &right )<span class="keyword">const</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> Vector2(x <= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  y <= right.y ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  Vector2 operator >= ( <span class="keyword">const</span> Vector2 &right )<span class="keyword">const</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> Vector2(x >= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  y >= right.y ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  T& operator[](<span class="keywordtype">size_t</span> index)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">const</span> T& operator[](<span class="keywordtype">size_t</span> index)<span class="keyword">const</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  Vector2(T _x = 0, T _y = 0) : x(_x), y(_y) { }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> };</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> Vector2<T> operator*(T s, <span class="keyword">const</span> Vector2<T> &a)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> a * s;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Vector3</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">union</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  T x;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  T y;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  T z;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  };</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  T r;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  T g;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  T b;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  };</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  T u;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  T v;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  T w;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  };</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  };</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  Vector3 operator-( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> Vector3(x - right.x, y - right.y, z - right.z);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  Vector3 operator-()<span class="keyword">const</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> Vector3(-x, -y, -z);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  Vector3& operator-=(<span class="keyword">const</span> Vector3<T> &right)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  x -= right.x;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  y -= right.y;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  z -= right.z;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  Vector3 operator+( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> Vector3(x + right.x, y + right.y, z + right.z);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  Vector3& operator+=(<span class="keyword">const</span> Vector3<T> &right)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  x += right.x;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  y += right.y;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  z += right.z;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  Vector3 operator*( T s )<span class="keyword">const</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> Vector3(x * s, y * s, z * s);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  Vector3& operator*=( T s)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  x *= s;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  y *= s;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  z *= s;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  Vector3 operator*( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> Vector3(x * right.x, y * right.y, z * right.z);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  Vector3 operator* (<span class="keyword">const</span> Matrix4x4<T>& m)<span class="keyword">const</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  Vector4<T> out4 = Vector4<T>(x, y, z, 1) * m;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> Vector3(out4.x / out4.w, out4.y / out4.w, out4.z / out4.w) ;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  Vector3& operator*=( <span class="keyword">const</span> Vector3 &right)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  x *= right.x;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  y *= right.y;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  z *= right.z;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  Vector3 operator/ ( T s)<span class="keyword">const</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> Vector3(x / s, y / s, z / s);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  Vector3& operator/=( T s)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  x /= s;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  y /= s;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  z /= s;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  Vector3 operator/( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">return</span> Vector3(x / right.x, y / right.y, z / right.z);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  Vector3& operator/=( <span class="keyword">const</span> Vector3 &right)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  x /= right.x;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  y /= right.y;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  z /= right.z;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Vector3 &right)<span class="keyword">const</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">return</span> x == right.x && y == right.y && z == right.z;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> Vector3 &right)<span class="keyword">const</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == right);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  Vector3 operator < ( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> Vector3(x < right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  y < right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  z < right.z ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  Vector3 operator > ( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> Vector3(x > right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  y > right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  z > right.z ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  Vector3 operator <= ( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> Vector3(x <= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  y <= right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  z <= right.z ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  Vector3 operator >= ( <span class="keyword">const</span> Vector3 &right )<span class="keyword">const</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">return</span> Vector3(x >= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  y >= right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  z >= right.z ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  T& operator[](<span class="keywordtype">size_t</span> index)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">const</span> T& operator[](<span class="keywordtype">size_t</span> index)<span class="keyword">const</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  Vector3(T _x = 0, T _y = 0, T _z = 0) : x(_x), y(_y), z(_z) { }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keyword">operator</span> Vector2<T>()<span class="keyword">const</span>{<span class="keywordflow">return</span> Vector2<T>(x,y);}</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> };</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> Vector3<T> operator*(T s, <span class="keyword">const</span> Vector3<T> &a)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">return</span> a * s;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Vector4</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">union</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  T x;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  T y;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  T z;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  T w;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  };</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  T r;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  T g;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  T b;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  T a;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  };</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  };</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  Vector4 operator-( <span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">return</span> Vector4(x - right.x, y - right.y, z - right.z, w - right.w);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  Vector4 operator-()<span class="keyword">const</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">return</span> Vector4(-x, -y, -z, -w);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  Vector4& operator-=(<span class="keyword">const</span> Vector4<T> &right)</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  x -= right.x;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  y -= right.y;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  z -= right.z;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  w -= right.w;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  Vector4 operator+( <span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> Vector4(x + right.x, y + right.y, z + right.z, w + right.w);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> </div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  Vector4& operator+=(<span class="keyword">const</span> Vector4<T> &right)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  x += right.x;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  y += right.y;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  z += right.z;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  w += right.w;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  Vector4 operator*( T s)<span class="keyword">const</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">return</span> Vector4(x * s, y * s, z * s, w * s);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  Vector4& operator*=( T s)</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  x *= s;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  y *= s;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  z *= s;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  w *= s;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  Vector4 operator*( <span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">return</span> Vector4(x * right.x, y * right.y, z * right.z, w * right.w);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  Vector4& operator*=( <span class="keyword">const</span> Vector4 &right)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  x *= right.x;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  y *= right.y;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  z *= right.z;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  w *= right.w;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  Vector4 operator/( T s)<span class="keyword">const</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">return</span> Vector4(x / s, y / s, z / s, w / s);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  Vector4& operator/=( T s)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  x /= s;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  y /= s;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  z /= s;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  w /= s;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  Vector4 operator/( <span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">return</span> Vector4(x / right.x, y / right.y, z / right.z, w / right.w);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  Vector4& operator/=( <span class="keyword">const</span> Vector4 &right)</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  x /= right.x;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  y /= right.y;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  z /= right.z;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  w /= right.w;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">return</span> x == right.x && y == right.y && z == right.z && w == right.w;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> Vector4 &right)<span class="keyword">const</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == right);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  Vector4 operator*(<span class="keyword">const</span> Matrix4x4<T>& m)<span class="keyword">const</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  Vector4 out;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  out[0] = x * m[0][0] + y * m[1][0] + z * m[2][0] + w * m[3][0];</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  out[1] = x * m[0][1] + y * m[1][1] + z * m[2][1] + w * m[3][1];</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  out[2] = x * m[0][2] + y * m[1][2] + z * m[2][2] + w * m[3][2];</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  out[3] = x * m[0][3] + y * m[1][3] + z * m[2][3] + w * m[3][3];</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  Vector4& operator = (<span class="keyword">const</span> Vector3<T> &v3)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  x = v3.x;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  y = v3.y;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  z = v3.z;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  w = 1;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  }</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  Vector4& operator = (<span class="keyword">const</span> Vector4 &) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  Vector4 operator < ( <span class="keyword">const</span> Vector4 &right )<span class="keyword">const</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">return</span> Vector4(x < right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  y < right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  z < right.z ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  w < right.w ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  Vector4 operator > ( <span class="keyword">const</span> Vector4 &right )<span class="keyword">const</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">return</span> Vector4(x > right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  y > right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  z > right.z ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  w > right.w ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  Vector4 operator <= ( <span class="keyword">const</span> Vector4 &right )<span class="keyword">const</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">return</span> Vector4(x <= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  y <= right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  z <= right.z ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  w <= right.w ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  Vector4 operator >= ( <span class="keyword">const</span> Vector4 &right )<span class="keyword">const</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">return</span> Vector4(x >= right.x ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  y >= right.y ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  z >= right.z ? static_cast<T>(1) : static_cast<T>(0), </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  w >= right.w ? static_cast<T>(1) : static_cast<T>(0));</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  T& operator[](<span class="keywordtype">size_t</span> index)</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keyword">const</span> T& operator[](<span class="keywordtype">size_t</span> index)<span class="keyword">const</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index];</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  Vector4(T _x = 0, T _y = 0, T _z = 0, T _w = 0) : x(_x), y(_y), z(_z), w(_w) { }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> };</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> </div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> Vector4<T> operator*(T s, <span class="keyword">const</span> Vector4<T> &a)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">return</span> a * s;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Matrix3x3</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keyword">union</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  T _11; T _12; T _13;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  T _21; T _22; T _23;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  T _31; T _32; T _33;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  };</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  T _m00; T _m01; T _m02;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  T _m10; T _m11; T _m12;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  T _m20; T _m21; T _m22;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  };</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  };</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  Matrix3x3(T value = 0)</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  _11 = _12 = _13 =value;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  _21 = _22 = _23 =value;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  _31 = _32 = _33 =value;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  Matrix3x3(</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  T i11, T i12, T i13,</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  T i21, T i22, T i23,</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  T i31, T i32, T i33 )</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  _11 = i11; _12 = i12; _13 = i13;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  _21 = i21; _22 = i22; _23 = i23;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  _31 = i31; _32 = i32; _33 = i33;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> </div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Matrix3x3 &r)<span class="keyword">const</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 3; ++i )</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> j = 0; i < 3; ++i )</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">if</span>( (*<span class="keyword">this</span>)[i][j] != r[i][j] )</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> </div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> Matrix3x3 &r)<span class="keyword">const</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == r);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  }</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> </div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  T* operator[](<span class="keywordtype">size_t</span> index)</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">return</span> &(<span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index*3]);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> </div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keyword">const</span> T* operator[](<span class="keywordtype">size_t</span> index)<span class="keyword">const</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">return</span> &(<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index*3]);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> </div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  Matrix3x3& operator *=(T s)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 9; ++i )</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  (reinterpret_cast<T*>(<span class="keyword">this</span>))[i] *= s;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> };</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>Matrix4x4</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keyword">union</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  T _11; T _12; T _13; T _14;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  T _21; T _22; T _23; T _24;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  T _31; T _32; T _33; T _34;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  T _41; T _42; T _43; T _44;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  };</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  T _m00; T _m01; T _m02; T _m03;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  T _m10; T _m11; T _m12; T _m13;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  T _m20; T _m21; T _m22; T _m23;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  T _m30; T _m31; T _m32; T _m33;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  };</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  };</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  Matrix4x4(T value = 0)</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  {</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  _11 = _12 = _13 = _14 = value;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  _21 = _22 = _23 = _24 = value;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  _31 = _32 = _33 = _34 = value;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  _41 = _42 = _43 = _44 = value;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> </div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keyword">explicit</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  Matrix4x4(</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  T i11, T i12, T i13, T i14,</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  T i21, T i22, T i23, T i24,</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  T i31, T i32, T i33, T i34,</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  T i41, T i42, T i43, T i44</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  )</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  _11 = i11; _12 = i12; _13 = i13; _14 = i14;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  _21 = i21; _22 = i22; _23 = i23; _24 = i24;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  _31 = i31; _32 = i32; _33 = i33; _34 = i34;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  _41 = i41; _42 = i42; _43 = i43; _44 = i44;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  }</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> Matrix4x4 &r)<span class="keyword">const</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 4; ++i )</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> j = 0; i < 4; ++i )</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">if</span>( (*<span class="keyword">this</span>)[i][j] != r[i][j] )</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> </div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> </div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> Matrix4x4 &r)<span class="keyword">const</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == r);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> </div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  T* operator[](<span class="keywordtype">size_t</span> index)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="keywordflow">return</span> &(<span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index*4]);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> </div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="keyword">const</span> T* operator[](<span class="keywordtype">size_t</span> index)<span class="keyword">const</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">return</span> &(<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(<span class="keyword">this</span>)[index*4]);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  Matrix4x4& operator *=(T s)</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 16; ++i )</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  (reinterpret_cast<T*>(<span class="keyword">this</span>))[i] *= s;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> </div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> };</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="comment">// Template Vector Operations</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> </div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> T dot(<span class="keyword">const</span> Vector2<T> &a, <span class="keyword">const</span> Vector2<T> &b)</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keywordflow">return</span> a.x * b.x + a.y * b.y;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span> </div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> T dot(<span class="keyword">const</span> Vector3<T> &a, <span class="keyword">const</span> Vector3<T> &b)</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordflow">return</span> a.x * b.x + a.y * b.y + a.z * b.z;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> T dot(<span class="keyword">const</span> Vector4<T> &a, <span class="keyword">const</span> Vector4<T> &b)</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="keywordflow">return</span> a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> }</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> </div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="keyword">template</span> <<span class="keyword">class</span> VectorType></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="keyword">auto</span> length(<span class="keyword">const</span> VectorType &a)->decltype(dot(a,a))</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">return</span> sqrt( dot(a,a) );</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> </div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> </div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> Vector3<T> min(<span class="keyword">const</span> Vector3<T> &a, <span class="keyword">const</span> Vector3<T> &b)</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> {</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">return</span> Vector3<T>( std::min(a.x, b.x), std::min(a.y, b.y), std::min(a.z, b.z) );</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> }</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> </div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> Vector4<T> min(<span class="keyword">const</span> Vector4<T> &a, <span class="keyword">const</span> Vector4<T> &b)</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordflow">return</span> Vector4<T>( std::min(a.x, b.x), std::min(a.y, b.y), std::min(a.z, b.z), std::min(a.w, b.w) );</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> }</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> </div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> Vector3<T> max(<span class="keyword">const</span> Vector3<T> &a, <span class="keyword">const</span> Vector3<T> &b)</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">return</span> Vector3<T>( std::max(a.x, b.x), std::max(a.y, b.y), std::max(a.z, b.z) );</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> Vector4<T> max(<span class="keyword">const</span> Vector4<T> &a, <span class="keyword">const</span> Vector4<T> &b)</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">return</span> Vector4<T>( std::max(a.x, b.x), std::max(a.y, b.y), std::max(a.z, b.z), std::max(a.w, b.w) );</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> }</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> </div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> Vector2<T> abs(<span class="keyword">const</span> Vector2<T> &a)</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="comment">// WARNING: abs() on gcc is for integers only!</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">return</span> Vector2<T>( a.x < 0 ? -a.x : a.x, </div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  a.y < 0 ? -a.y : a.y);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> </div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> Vector3<T> abs(<span class="keyword">const</span> Vector3<T> &a)</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="comment">// WARNING: abs() on gcc is for integers only!</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordflow">return</span> Vector3<T>( a.x < 0 ? -a.x : a.x, </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  a.y < 0 ? -a.y : a.y,</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  a.z < 0 ? -a.z : a.z);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> }</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> </div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> Vector4<T> abs(<span class="keyword">const</span> Vector4<T> &a)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="comment">// WARNING: abs() on gcc is for integers only!</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">return</span> Vector4<T>( a.x < 0 ? -a.x : a.x, </div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  a.y < 0 ? -a.y : a.y,</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  a.z < 0 ? -a.z : a.z,</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  a.w < 0 ? -a.w : a.w);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> </div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> </div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> Vector3<T> cross(<span class="keyword">const</span> Vector3<T> &a, <span class="keyword">const</span> Vector3<T> &b)</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> {</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="comment">// | i j k |</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="comment">// | a.x a.y a.z |</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="comment">// | b.x b.y b.z |</span></div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">return</span> Vector3<T>((a.y*b.z)-(a.z*b.y), (a.z*b.x)-(a.x*b.z), (a.x*b.y)-(a.y*b.x));</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> }</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> </div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="keyword">template</span> <<span class="keyword">class</span> VectorType></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> VectorType normalize(<span class="keyword">const</span> VectorType &a)</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> {</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keyword">auto</span> len = length(a);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">return</span> a / len;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> </div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> <span class="comment">// Template Matrix Operations</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> Matrix4x4<T> transposeMatrix(<span class="keyword">const</span> Matrix4x4<T> &m)</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">return</span> Matrix4x4<T>(</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  m._11, m._21, m._31, m._41,</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  m._12, m._22, m._32, m._42,</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  m._13, m._23, m._33, m._43,</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  m._14, m._24, m._34, m._44</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  );</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> Matrix4x4<T> mul(<span class="keyword">const</span> Matrix4x4<T> &m1, <span class="keyword">const</span> Matrix4x4<T> &m2)</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> {</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  Matrix4x4<T> mOut;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 4; i++)</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < 4; j++)</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  {</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 0; k < 4; k++)</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  mOut[i][j] += m1[i][k] * m2[k][j];</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  }</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  }</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> }</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> </div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> Matrix4x4<T> operator* (<span class="keyword">const</span> Matrix4x4<T> &m1, <span class="keyword">const</span> Matrix4x4<T> &m2)</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">return</span> mul( m1, m2 );</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> </div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> </div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> Matrix3x3<T> transposeMatrix(<span class="keyword">const</span> Matrix3x3<T> &m)</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span> {</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">return</span> Matrix3x3<T>(</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  m._11, m._21, m._31,</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  m._12, m._22, m._32,</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  m._13, m._23, m._33</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  );</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> }</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> </div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> Matrix3x3<T> mul(<span class="keyword">const</span> Matrix3x3<T> &m1, <span class="keyword">const</span> Matrix3x3<T> &m2)</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> {</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  Matrix3x3<T> mOut;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> </div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 3; i++)</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  {</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < 3; j++)</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 0; k < 3; k++)</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  mOut[i][j] += m1[i][k] * m2[k][j];</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  }</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  }</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  }</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> </div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> }</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> </div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="keyword">template</span> <<span class="keyword">class</span> T></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> Matrix3x3<T> operator* (<span class="keyword">const</span> Matrix3x3<T> &m1, <span class="keyword">const</span> Matrix3x3<T> &m2)</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">return</span> mul( m1, m2 );</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> }</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> </div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> <span class="comment">// Common HLSL-compatible vector typedefs</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> </div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uint;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> </div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> <span class="keyword">typedef</span> Vector2<float> float2;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> <span class="keyword">typedef</span> Vector3<float> float3;</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> <span class="keyword">typedef</span> Vector4<float> float4;</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> </div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="keyword">typedef</span> Matrix4x4<float> float4x4;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="keyword">typedef</span> Matrix3x3<float> float3x3;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> </div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="comment">// Standard Matrix Intializers</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> </div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="keyword">inline</span> float4x4 identityMatrix()</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">return</span> float4x4(1, 0, 0, 0,</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  0, 1, 0, 0,</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  0, 0, 1, 0,</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  0, 0, 0, 1);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> }</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> </div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> <span class="keyword">inline</span> float4x4 translationMatrix(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z)</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> {</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">return</span> float4x4 (1, 0, 0, 0,</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  0, 1, 0, 0,</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  0, 0, 1, 0,</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  x, y, z, 1);</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> }</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> </div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="keyword">inline</span> float4x4 translationMatrix( <span class="keyword">const</span> float3 &v )</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span> {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keywordflow">return</span> translationMatrix( v.x, v.y, v.z );</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> }</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> </div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> </div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="keyword">inline</span> float4x4 scaleMatrix(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z)</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> {</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">return</span> float4x4(x, 0, 0, 0,</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  0, y, 0, 0,</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  0, 0, z, 0, </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  0, 0, 0, 1);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> }</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> <span class="keyword">inline</span> float4x4 rotationX(<span class="keywordtype">float</span> angleInRadians)</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordtype">float</span> sinAngle = sinf(angleInRadians);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keywordtype">float</span> cosAngle = cosf(angleInRadians);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  float4x4 mOut;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> </div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  mOut._11 = 1.0f; mOut._12 = 0.0f; mOut._13 = 0.0f; mOut._14 = 0.0f;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  mOut._21 = 0.0f; mOut._22 = cosAngle; mOut._23 = -sinAngle; mOut._24 = 0.0f;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  mOut._31 = 0.0f; mOut._32 = sinAngle; mOut._33 = cosAngle; mOut._34 = 0.0f;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  mOut._41 = 0.0f; mOut._42 = 0.0f; mOut._43 = 0.0f; mOut._44 = 1.0f;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> </div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> }</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="keyword">inline</span> float4x4 rotationY(<span class="keywordtype">float</span> angleInRadians)</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> {</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordtype">float</span> sinAngle = sinf(angleInRadians);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordtype">float</span> cosAngle = cosf(angleInRadians);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> </div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  float4x4 mOut;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> </div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  mOut._11 = cosAngle; mOut._12 = 0.0f; mOut._13 = sinAngle; mOut._14 = 0.0f;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  mOut._21 = 0.0f; mOut._22 = 1.0f; mOut._23 = 0.0f; mOut._24 = 0.0f;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  mOut._31 = -sinAngle; mOut._32 = 0.0f; mOut._33 = cosAngle; mOut._34 = 0.0f;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  mOut._41 = 0.0f; mOut._42 = 0.0f; mOut._43 = 0.0f; mOut._44 = 1.0f;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> </div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> }</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> </div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="keyword">inline</span> float4x4 rotationZ(<span class="keywordtype">float</span> angleInRadians)</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> {</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordtype">float</span> sinAngle = sinf(angleInRadians);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordtype">float</span> cosAngle = cosf(angleInRadians);</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  float4x4 mOut;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> </div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  mOut._11 = cosAngle; mOut._12 = -sinAngle; mOut._13 = 0.0f; mOut._14 = 0.0f;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  mOut._21 = sinAngle; mOut._22 = cosAngle; mOut._23 = 0.0f; mOut._24 = 0.0f;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  mOut._31 = 0.0f; mOut._32 = 0.0f; mOut._33 = 1.0f; mOut._34 = 0.0f;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  mOut._41 = 0.0f; mOut._42 = 0.0f; mOut._43 = 0.0f; mOut._44 = 1.0f;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> }</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> </div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="comment">// 3D Rotation matrix for an arbitrary axis specified by x, y and z</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="keyword">inline</span> float4x4 rotationArbitrary(float3 axis, <span class="keywordtype">float</span> degree)</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  UNSUPPORTED(<span class="stringliteral">"This function is not tested, it might be incorrect"</span>);</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> </div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  axis = normalize(axis);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> </div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordtype">float</span> angleInRadians = degree * (PI_F / 180.0f);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span> </div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="keywordtype">float</span> sinAngle = sinf(angleInRadians);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="keywordtype">float</span> cosAngle = cosf(angleInRadians);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordtype">float</span> oneMinusCosAngle = 1 - cosAngle;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  float4x4 mOut;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> </div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  mOut._11 = 1.0f + oneMinusCosAngle * (axis.x * axis.x - 1.0f);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  mOut._12 = axis.z * sinAngle + oneMinusCosAngle * axis.x * axis.y;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  mOut._13 = -axis.y * sinAngle + oneMinusCosAngle * axis.x * axis.z;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  mOut._41 = 0.0f;</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> </div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  mOut._21 = -axis.z * sinAngle + oneMinusCosAngle * axis.y * axis.x;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  mOut._22 = 1.0f + oneMinusCosAngle * (axis.y * axis.y - 1.0f);</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  mOut._23 = axis.x * sinAngle + oneMinusCosAngle * axis.y * axis.z;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  mOut._24 = 0.0f;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> </div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  mOut._31 = axis.y * sinAngle + oneMinusCosAngle * axis.z * axis.x;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  mOut._32 = -axis.x * sinAngle + oneMinusCosAngle * axis.z * axis.y;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  mOut._33 = 1.0f + oneMinusCosAngle * (axis.z * axis.z - 1.0f);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  mOut._34 = 0.0f;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  mOut._41 = 0.0f;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  mOut._42 = 0.0f;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  mOut._43 = 0.0f;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  mOut._44 = 1.0f;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> </div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="keyword">inline</span> float4x4 ViewMatrixFromBasis( <span class="keyword">const</span> float3 &f3X, <span class="keyword">const</span> float3 &f3Y, <span class="keyword">const</span> float3 &f3Z )</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">return</span> float4x4( f3X.x, f3Y.x, f3Z.x, 0,</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  f3X.y, f3Y.y, f3Z.y, 0,</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  f3X.z, f3Y.z, f3Z.z, 0,</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  0, 0, 0, 1);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> }</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> SetNearFarClipPlanes( float4x4 &ProjMatrix, <span class="keywordtype">float</span> zNear, <span class="keywordtype">float</span> zFar, <span class="keywordtype">bool</span> bIsDirectX )</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> {</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  <span class="keywordflow">if</span>( bIsDirectX )</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  {</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  ProjMatrix._33 = zFar / (zFar - zNear);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  ProjMatrix._43 = -zNear * zFar / (zFar - zNear);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  ProjMatrix._34 = 1;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  }</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  {</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="comment">// https://www.opengl.org/sdk/docs/man2/xhtml/gluPerspective.xml</span></div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <span class="comment">// http://www.terathon.com/gdc07_lengyel.pdf</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="comment">// Note that OpenGL uses right-handed coordinate system, where</span></div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="comment">// camera is looking in negative z direction:</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="comment">// OO</span></div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="comment">// |__|<--------------------</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="comment">// -z +z</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="comment">// Consequently, OpenGL projection matrix given by these two</span></div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="comment">// references inverts z axis.</span></div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> </div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="comment">// We do not need to do this, because we use DX coordinate</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="comment">// system for the camera space. Thus we need to invert the </span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="comment">// sign of the values in the third column in the matrix </span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="comment">// from the references:</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> </div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  ProjMatrix._33 = -(-(zFar + zNear) / (zFar - zNear));</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  ProjMatrix._43 = -2.0f * zNear * zFar / (zFar - zNear);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  ProjMatrix._34 = -(-1);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  }</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> }</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> </div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> GetNearFarPlaneFromProjMatrix( <span class="keyword">const</span> float4x4 &ProjMatrix, <span class="keywordtype">float</span> &zNear, <span class="keywordtype">float</span> &zFar, <span class="keywordtype">bool</span> bIsDirectX )</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> {</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordflow">if</span>( bIsDirectX )</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  zNear = -ProjMatrix._43 / ProjMatrix._33;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  zFar = ProjMatrix._33 / (ProjMatrix._33 - 1) * zNear;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  }</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  {</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  zNear = ProjMatrix._43 / (-1.f - ProjMatrix._33);</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  zFar = ProjMatrix._43 / (+1.f - ProjMatrix._33);</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  }</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> }</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> </div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="keyword">inline</span> float4x4 Projection(<span class="keywordtype">float</span> fov, <span class="keywordtype">float</span> aspectRatio, <span class="keywordtype">float</span> zNear, <span class="keywordtype">float</span> zFar, <span class="keywordtype">bool</span> bIsDirectX) <span class="comment">// Left-handed projection</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> {</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  float4x4 mOut;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordtype">float</span> yScale = 1.0f / tan(fov / 2.0f);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordtype">float</span> xScale = yScale / aspectRatio;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  mOut._11 = xScale;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  mOut._22 = yScale;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> </div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  SetNearFarClipPlanes( mOut, zNear, zFar, bIsDirectX );</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  </div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordflow">return</span> mOut;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> }</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> </div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <span class="keyword">struct </span>Quaternion</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> {</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="keywordtype">float</span> q[4];</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> };</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> </div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="keyword">inline</span> Quaternion RotationFromAxisAngle(<span class="keyword">const</span> float3& axis, <span class="keywordtype">float</span> angle)</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> {</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  Quaternion out;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keywordtype">float</span> norm = length(axis);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordtype">float</span> sina2 = sin(0.5f * angle);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  out.q[0] = sina2 * axis[0] / norm;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  out.q[1] = sina2 * axis[1] / norm;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  out.q[2] = sina2 * axis[2] / norm;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  out.q[3] = cos(0.5f * angle);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> }</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> </div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> AxisAngleFromRotation(float3& outAxis, <span class="keywordtype">float</span>& outAngle, <span class="keyword">const</span> Quaternion& quat)</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordtype">float</span> sina2 = sqrt(quat.q[0]*quat.q[0] + quat.q[1]*quat.q[1] + quat.q[2]*quat.q[2]);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  outAngle = 2.0f * atan2(sina2, quat.q[3]);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="keywordtype">float</span> r = (sina2 > 0) ? (1.0f / sina2) : 0;</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  outAxis[0] = r * quat.q[0];</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  outAxis[1] = r * quat.q[1];</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  outAxis[2] = r * quat.q[2]; </div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="keyword">inline</span> float4x4 QuaternionToMatrix(<span class="keyword">const</span> Quaternion& quat)</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> {</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  float4x4 out;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="keywordtype">float</span> yy2 = 2.0f * quat.q[1] * quat.q[1];</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <span class="keywordtype">float</span> xy2 = 2.0f * quat.q[0] * quat.q[1];</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordtype">float</span> xz2 = 2.0f * quat.q[0] * quat.q[2];</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="keywordtype">float</span> yz2 = 2.0f * quat.q[1] * quat.q[2];</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  <span class="keywordtype">float</span> zz2 = 2.0f * quat.q[2] * quat.q[2];</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordtype">float</span> wz2 = 2.0f * quat.q[3] * quat.q[2];</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keywordtype">float</span> wy2 = 2.0f * quat.q[3] * quat.q[1];</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordtype">float</span> wx2 = 2.0f * quat.q[3] * quat.q[0];</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keywordtype">float</span> xx2 = 2.0f * quat.q[0] * quat.q[0];</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  out[0][0] = - yy2 - zz2 + 1.0f;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  out[0][1] = xy2 + wz2;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  out[0][2] = xz2 - wy2;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  out[0][3] = 0;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  out[1][0] = xy2 - wz2;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  out[1][1] = - xx2 - zz2 + 1.0f;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  out[1][2] = yz2 + wx2;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  out[1][3] = 0;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  out[2][0] = xz2 + wy2;</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  out[2][1] = yz2 - wx2;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  out[2][2] = - xx2 - yy2 + 1.0f;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  out[2][3] = 0;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  out[3][0] = out[3][1] = out[3][2] = 0;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  out[3][3] = 1;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span> }</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> </div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> determinant( <span class="keyword">const</span> float3x3& m )</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="keywordtype">float</span> det = 0.f;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  det += m._11 * (m._22*m._33 - m._32*m._23);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  det -= m._12 * (m._21*m._33 - m._31*m._23);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  det += m._13 * (m._21*m._32 - m._31*m._22);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">return</span> det;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> }</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> </div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> determinant( <span class="keyword">const</span> float4x4& m )</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> {</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordtype">float</span> det = 0.f;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> </div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  det += m._11 * determinant( </div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  float3x3 ( m._22,m._23,m._24,</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  m._32,m._33,m._34,</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  m._42,m._43,m._44) );</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> </div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  det -= m._12 * determinant(</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  float3x3( m._21,m._23,m._24,</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  m._31,m._33,m._34,</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  m._41,m._43,m._44) );</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> </div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  det += m._13 * determinant(</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  float3x3( m._21,m._22,m._24,</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  m._31,m._32,m._34,</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  m._41,m._42,m._44) );</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> </div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  det -= m._14 * determinant(</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  float3x3( m._21,m._22,m._23,</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  m._31,m._32,m._33,</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  m._41,m._42,m._43) );</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> </div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="keywordflow">return</span> det;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> }</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> <span class="keyword">inline</span> float4x4 inverseMatrix(<span class="keyword">const</span> float4x4& m)</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> {</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  float4x4 inv;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> </div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="comment">// row 1</span></div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  inv._11 = determinant( </div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  float3x3( m._22, m._23, m._24,</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  m._32, m._33, m._34,</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  m._42, m._43, m._44 ) );</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> </div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  inv._12 = -determinant(</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  float3x3( m._21, m._23, m._24,</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  m._31, m._33, m._34,</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  m._41, m._43, m._44) );</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  inv._13 = determinant(</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  float3x3 ( m._21, m._22, m._24,</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  m._31, m._32, m._34,</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  m._41, m._42, m._44) );</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> </div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  inv._14 = -determinant(</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  float3x3 ( m._21, m._22, m._23,</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  m._31, m._32, m._33,</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  m._41, m._42, m._43) );</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> </div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="comment">// row 2</span></div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  inv._21 = -determinant(</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  float3x3( m._12, m._13, m._14,</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  m._32, m._33, m._34,</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  m._42, m._43, m._44) );</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> </div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  inv._22 = determinant(</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  float3x3( m._11, m._13, m._14,</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  m._31, m._33, m._34,</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  m._41, m._43, m._44) );</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> </div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  inv._23 = -determinant(</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  float3x3( m._11, m._12, m._14,</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  m._31, m._32, m._34,</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  m._41, m._42, m._44) );</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> </div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  inv._24 = determinant(</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  float3x3( m._11, m._12, m._13,</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  m._31, m._32, m._33,</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  m._41, m._42, m._43) );</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> </div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> </div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  <span class="comment">// row 3</span></div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  inv._31 = determinant(</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  float3x3( m._12,m._13,m._14,</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  m._22,m._23,m._24,</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  m._42,m._43,m._44) );</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> </div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  inv._32 = -determinant(</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  float3x3( m._11,m._13,m._14,</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  m._21,m._23,m._24,</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  m._41,m._43,m._44) );</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> </div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  inv._33 = determinant(</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  float3x3( m._11,m._12,m._14,</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  m._21,m._22,m._24,</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  m._41,m._42,m._44) );</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> </div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  inv._34 = -determinant(</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  float3x3( m._11,m._12,m._13,</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  m._21,m._22,m._23,</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  m._41,m._42,m._43) );</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> </div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <span class="comment">// row 4</span></div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  inv._41 = -determinant(</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  float3x3( m._12, m._13, m._14,</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  m._22, m._23, m._24,</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  m._32, m._33, m._34) );</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> </div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  inv._42 = determinant(</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  float3x3( m._11, m._13, m._14,</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  m._21, m._23, m._24,</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  m._31, m._33, m._34) );</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> </div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  inv._43 = -determinant(</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  float3x3( m._11, m._12, m._14,</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  m._21, m._22, m._24,</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  m._31, m._32, m._34) );</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> </div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  inv._44 = determinant(</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  float3x3( m._11, m._12, m._13,</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  m._21, m._22, m._23,</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  m._31, m._32, m._33) );</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  </div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  <span class="keyword">auto</span> det = m._11 * inv._11 + m._12 * inv._12 + m._13 * inv._13 + m._14 * inv._14;</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  inv = transposeMatrix(inv);</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  inv *= 1.0f/det;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> </div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  <span class="keywordflow">return</span> inv;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> }</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> </div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> {</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  Vector2<T> max( <span class="keyword">const</span> Vector2<T> &Left, <span class="keyword">const</span> Vector2<T> &Right )</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  {</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  <span class="keywordflow">return</span> Vector2<T>( </div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  std::max( Left.x, Right.x ), </div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  std::max( Left.y, Right.y ) </div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  );</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  }</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> </div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  Vector3<T> max( <span class="keyword">const</span> Vector3<T> &Left, <span class="keyword">const</span> Vector3<T> &Right )</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  {</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  <span class="keywordflow">return</span> Vector3<T>( </div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  std::max( Left.x, Right.x ), </div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  std::max( Left.y, Right.y ),</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  std::max( Left.z, Right.z )</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  );</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  }</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> </div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  Vector4<T> max( <span class="keyword">const</span> Vector4<T> &Left, <span class="keyword">const</span> Vector4<T> &Right )</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  {</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  <span class="keywordflow">return</span> Vector4<T>( </div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  std::max( Left.x, Right.x ), </div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  std::max( Left.y, Right.y ),</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  std::max( Left.z, Right.z ),</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  std::max( Left.w, Right.w )</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  );</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  }</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> </div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> </div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  Vector2<T> min( <span class="keyword">const</span> Vector2<T> &Left, <span class="keyword">const</span> Vector2<T> &Right )</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  {</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keywordflow">return</span> Vector2<T>( </div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  std::min( Left.x, Right.x ), </div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  std::min( Left.y, Right.y ) </div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  );</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  }</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  Vector3<T> min( <span class="keyword">const</span> Vector3<T> &Left, <span class="keyword">const</span> Vector3<T> &Right )</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  {</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <span class="keywordflow">return</span> Vector3<T>( </div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  std::min( Left.x, Right.x ), </div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  std::min( Left.y, Right.y ),</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  std::min( Left.z, Right.z )</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  );</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  }</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span> </div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  Vector4<T> min( <span class="keyword">const</span> Vector4<T> &Left, <span class="keyword">const</span> Vector4<T> &Right )</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  {</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  <span class="keywordflow">return</span> Vector4<T>( </div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  std::min( Left.x, Right.x ), </div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  std::min( Left.y, Right.y ),</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  std::min( Left.z, Right.z ),</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  std::min( Left.w, Right.w )</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  );</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  }</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> </div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> </div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  <span class="keyword">struct </span>hash<Vector2<T>></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  {</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Vector2<T> &v2 )<span class="keyword"> const</span></div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> <span class="keyword"> </span>{</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(v2.x, v2.y);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  }</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  };</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  <span class="keyword">struct </span>hash<Vector3<T>></div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  {</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Vector3<T> &v3 )<span class="keyword"> const</span></div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span> <span class="keyword"> </span>{</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(v3.x, v3.y, v3.z);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  }</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  };</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> </div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  <span class="keyword">struct </span>hash<Vector4<T>></div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  {</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Vector4<T> &v4 )<span class="keyword"> const</span></div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> <span class="keyword"> </span>{</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(v4.x, v4.y, v4.z, v4.w);</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  }</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  };</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> </div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  <span class="keyword">struct </span>hash<Matrix3x3<T>></div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  {</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Matrix3x3<T> &m )<span class="keyword"> const</span></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> <span class="keyword"> </span>{</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( </div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  m._m00, m._m01, m._m02,</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  m._m10, m._m11, m._m12,</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  m._m20, m._m21, m._m22</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  );</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  }</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  };</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> </div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  <span class="keyword">struct </span>hash<Matrix4x4<T>></div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  {</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Matrix4x4<T> &m )<span class="keyword"> const</span></div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> <span class="keyword"> </span>{</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( </div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  m._m00, m._m01, m._m02, m._m03,</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  m._m10, m._m11, m._m12, m._m13,</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  m._m20, m._m21, m._m22, m._m23,</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  m._m30, m._m31, m._m32, m._m33</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  );</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  }</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  };</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> }</div><div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_basic_platform_debug_8h_source.html b/doc/html/_basic_platform_debug_8h_source.html index 8fc56342..a5c1fa96 100644 --- a/doc/html/_basic_platform_debug_8h_source.html +++ b/doc/html/_basic_platform_debug_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">BasicPlatformDebug.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>BasicPlatformDebug</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">enum class</span> DebugMessageSeverity</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  Info,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  Warning,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Error,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FatalError</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> FormatAssertionFailedMessage(<span class="keyword">const</span> Diligent::Char* Message, <span class="keyword">const</span> <span class="keywordtype">char</span>* Function, <span class="keyword">const</span> <span class="keywordtype">char</span>* File, <span class="keywordtype">int</span> Line);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Forward declarations of platform-specific debug functions</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keywordtype">void</span> DebugAssertionFailed(<span class="keyword">const</span> Diligent::Char* Message, <span class="keyword">const</span> <span class="keywordtype">char</span>* Function, <span class="keyword">const</span> <span class="keywordtype">char</span>* File, <span class="keywordtype">int</span> Line);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">void</span> OutputDebugMessage(BasicPlatformDebug::DebugMessageSeverity Severity, <span class="keyword">const</span> Diligent::Char* Message);</div><div class="ttc" id="namespace_diligent_html_a3d23c2ee2a78504778603d8ef49ae314"><div class="ttname"><a href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a></div><div class="ttdeci">std::basic_string< Char > String</div><div class="ttdoc">String variable. </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:51</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>BasicPlatformDebug</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">enum class</span> DebugMessageSeverity</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  Info,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  Warning,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Error,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FatalError</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a> FormatAssertionFailedMessage(<span class="keyword">const</span> Diligent::Char* Message, <span class="keyword">const</span> <span class="keywordtype">char</span>* Function, <span class="keyword">const</span> <span class="keywordtype">char</span>* File, <span class="keywordtype">int</span> Line);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Forward declarations of platform-specific debug functions</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keywordtype">void</span> DebugAssertionFailed(<span class="keyword">const</span> Diligent::Char* Message, <span class="keyword">const</span> <span class="keywordtype">char</span>* Function, <span class="keyword">const</span> <span class="keywordtype">char</span>* File, <span class="keywordtype">int</span> Line);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">void</span> OutputDebugMessage(BasicPlatformDebug::DebugMessageSeverity Severity, <span class="keyword">const</span> Diligent::Char* Message);</div><div class="ttc" id="namespace_diligent_html_a3d23c2ee2a78504778603d8ef49ae314"><div class="ttname"><a href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a></div><div class="ttdeci">std::basic_string< Char > String</div><div class="ttdoc">String variable. </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:51</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_basic_platform_misc_8h_source.html b/doc/html/_basic_platform_misc_8h_source.html index baa4d35b..c61d1c37 100644 --- a/doc/html/_basic_platform_misc_8h_source.html +++ b/doc/html/_basic_platform_misc_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">BasicPlatformMisc.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>BasicPlatformMisc</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetMSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> MSB = 31;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">while</span>( !(Val & (1 << MSB)) )</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  --MSB;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> MSB;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetLSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> LSB = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">while</span>( !(Val & (1 << LSB)) )</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ++LSB;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> LSB;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>BasicPlatformMisc</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetMSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> MSB = 31;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">while</span>( !(Val & (1 << MSB)) )</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  --MSB;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> MSB;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetLSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> LSB = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">while</span>( !(Val & (1 << LSB)) )</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ++LSB;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> LSB;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_basic_shader_source_stream_factory_8h_source.html b/doc/html/_basic_shader_source_stream_factory_8h_source.html index 468b3421..222643ef 100644 --- a/doc/html/_basic_shader_source_stream_factory_8h_source.html +++ b/doc/html/_basic_shader_source_stream_factory_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">BasicShaderSourceStreamFactory.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicFileStream.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">class </span>BasicShaderSourceStreamFactory : <span class="keyword">public</span> IShaderSourceInputStreamFactory</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  BasicShaderSourceStreamFactory( <span class="keyword">const</span> Char *SearchDirectories = <span class="keyword">nullptr</span> );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateInputStream( <span class="keyword">const</span> Char *Name, IFileStream **ppStream )<span class="keyword">override</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  std::vector<String> m_SearchDirectories;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicFileStream.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">class </span>BasicShaderSourceStreamFactory : <span class="keyword">public</span> IShaderSourceInputStreamFactory</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  BasicShaderSourceStreamFactory( <span class="keyword">const</span> Char *SearchDirectories = <span class="keyword">nullptr</span> );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateInputStream( <span class="keyword">const</span> Char *Name, IFileStream **ppStream )<span class="keyword">override</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  std::vector<String> m_SearchDirectories;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_basic_types_8h_source.html b/doc/html/_basic_types_8h_source.html index 6276e7b9..cc030f13 100644 --- a/doc/html/_basic_types_8h_source.html +++ b/doc/html/_basic_types_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">BasicTypes.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstdint></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a32283d7134e62a58530ba1b0afb4e59e"> 31</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">float</span> <a class="code" href="namespace_diligent.html#a32283d7134e62a58530ba1b0afb4e59e">Float32</a>; </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e"> 33</a></span>  <span class="keyword">typedef</span> int64_t <a class="code" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Int64</a>; </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb"> 34</a></span>  <span class="keyword">typedef</span> int32_t <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a>; </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d5a3f689eb95c5f5c6cecf4d2c4acb9"> 35</a></span>  <span class="keyword">typedef</span> int16_t <a class="code" href="namespace_diligent.html#a8d5a3f689eb95c5f5c6cecf4d2c4acb9">Int16</a>; </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a70b89ad84f51b1f35d7156dca7596361"> 36</a></span>  <span class="keyword">typedef</span> int8_t <a class="code" href="namespace_diligent.html#a70b89ad84f51b1f35d7156dca7596361">Int8</a>; </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492"> 38</a></span>  <span class="keyword">typedef</span> uint64_t <a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a>; </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e"> 39</a></span>  <span class="keyword">typedef</span> uint32_t <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>; </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479"> 40</a></span>  <span class="keyword">typedef</span> uint16_t <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a>; </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db"> 41</a></span>  <span class="keyword">typedef</span> uint8_t <a class="code" href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db">Uint8</a>; </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> SizeType;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <span class="keywordtype">void</span>* PVoid;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056"> 46</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">bool</span> <a class="code" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Bool</a>; </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Bool</a> False = <span class="keyword">false</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Bool</a> True = <span class="keyword">true</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">typedef</span> <span class="keywordtype">char</span> Char;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314"> 51</a></span>  <span class="keyword">typedef</span> std::basic_string<Char> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a>; </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="ttc" id="namespace_diligent_html_a70b89ad84f51b1f35d7156dca7596361"><div class="ttname"><a href="namespace_diligent.html#a70b89ad84f51b1f35d7156dca7596361">Diligent::Int8</a></div><div class="ttdeci">int8_t Int8</div><div class="ttdoc">8-bit signed integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:36</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstdint></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a32283d7134e62a58530ba1b0afb4e59e"> 31</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">float</span> <a class="code" href="namespace_diligent.html#a32283d7134e62a58530ba1b0afb4e59e">Float32</a>; </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e"> 33</a></span>  <span class="keyword">typedef</span> int64_t <a class="code" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Int64</a>; </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb"> 34</a></span>  <span class="keyword">typedef</span> int32_t <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a>; </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d5a3f689eb95c5f5c6cecf4d2c4acb9"> 35</a></span>  <span class="keyword">typedef</span> int16_t <a class="code" href="namespace_diligent.html#a8d5a3f689eb95c5f5c6cecf4d2c4acb9">Int16</a>; </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a70b89ad84f51b1f35d7156dca7596361"> 36</a></span>  <span class="keyword">typedef</span> int8_t <a class="code" href="namespace_diligent.html#a70b89ad84f51b1f35d7156dca7596361">Int8</a>; </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492"> 38</a></span>  <span class="keyword">typedef</span> uint64_t <a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a>; </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e"> 39</a></span>  <span class="keyword">typedef</span> uint32_t <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>; </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479"> 40</a></span>  <span class="keyword">typedef</span> uint16_t <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a>; </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db"> 41</a></span>  <span class="keyword">typedef</span> uint8_t <a class="code" href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db">Uint8</a>; </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> SizeType;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <span class="keywordtype">void</span>* PVoid;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056"> 46</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">bool</span> <a class="code" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Bool</a>; </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Bool</a> False = <span class="keyword">false</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Bool</a> True = <span class="keyword">true</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">typedef</span> <span class="keywordtype">char</span> Char;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314"> 51</a></span>  <span class="keyword">typedef</span> std::basic_string<Char> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a>; </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="ttc" id="namespace_diligent_html_a70b89ad84f51b1f35d7156dca7596361"><div class="ttname"><a href="namespace_diligent.html#a70b89ad84f51b1f35d7156dca7596361">Diligent::Int8</a></div><div class="ttdeci">int8_t Int8</div><div class="ttdoc">8-bit signed integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:36</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a2d2b3a7301fd8731c6b997df30b6446e"><div class="ttname"><a href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Diligent::Int64</a></div><div class="ttdeci">int64_t Int64</div><div class="ttdoc">64-bit signed integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:33</div></div> <div class="ttc" id="namespace_diligent_html_a217aba875c8d4bd7843939762d6ff492"><div class="ttname"><a href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Diligent::Uint64</a></div><div class="ttdeci">uint64_t Uint64</div><div class="ttdoc">64-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:38</div></div> diff --git a/doc/html/_blend_state_8h_source.html b/doc/html/_blend_state_8h_source.html index dd15bbaf..0ce39de9 100644 --- a/doc/html/_blend_state_8h_source.html +++ b/doc/html/_blend_state_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BlendState.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1"> 43</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> : Int8</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a607e0164f4cc7dace2760c1074c760be"> 46</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a607e0164f4cc7dace2760c1074c760be">BLEND_FACTOR_UNDEFINED</a> = 0,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1aa78e79d5fc95c45698a965cb657a21b4"> 50</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1aa78e79d5fc95c45698a965cb657a21b4">BLEND_FACTOR_ZERO</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ab81b4c36868770ea6a97048bb46190f9"> 54</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ab81b4c36868770ea6a97048bb46190f9">BLEND_FACTOR_ONE</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a565d3f80967d8c90ca2613cbe5bf07e7"> 58</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a565d3f80967d8c90ca2613cbe5bf07e7">BLEND_FACTOR_SRC_COLOR</a>,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ae5bf98a17ed70db4950c1bd852000fe3"> 62</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ae5bf98a17ed70db4950c1bd852000fe3">BLEND_FACTOR_INV_SRC_COLOR</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a948b5c73475cba94c6c028092f2b9e3a"> 66</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a948b5c73475cba94c6c028092f2b9e3a">BLEND_FACTOR_SRC_ALPHA</a>,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a5bb6a5588766529cd50db693951fc976"> 70</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a5bb6a5588766529cd50db693951fc976">BLEND_FACTOR_INV_SRC_ALPHA</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a6ae74671ee262ba8d396e898f90398ee"> 74</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a6ae74671ee262ba8d396e898f90398ee">BLEND_FACTOR_DEST_ALPHA</a>,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a26b0fdff59e555e405da24bda789186b"> 78</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a26b0fdff59e555e405da24bda789186b">BLEND_FACTOR_INV_DEST_ALPHA</a>,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a874d7c0d6c6212a313a2565b8289edd3"> 82</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a874d7c0d6c6212a313a2565b8289edd3">BLEND_FACTOR_DEST_COLOR</a>,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a923de8f8b25551fb02c1265961bf2dcc"> 86</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a923de8f8b25551fb02c1265961bf2dcc">BLEND_FACTOR_INV_DEST_COLOR</a>,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1af63ab4a6d981c0f847faae9f68421028"> 91</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1af63ab4a6d981c0f847faae9f68421028">BLEND_FACTOR_SRC_ALPHA_SAT</a>,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a55990a5c0e48e2ecd81090e433e6ef06"> 95</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a55990a5c0e48e2ecd81090e433e6ef06">BLEND_FACTOR_BLEND_FACTOR</a>,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a636346de2f019fa3a3ae3392e37f1af8"> 99</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a636346de2f019fa3a3ae3392e37f1af8">BLEND_FACTOR_INV_BLEND_FACTOR</a>,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2a9de58773a193ca26dc5747ad15d5a0"> 103</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2a9de58773a193ca26dc5747ad15d5a0">BLEND_FACTOR_SRC1_COLOR</a>,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1abdb1924164eb185c9103ebb31558b81a"> 107</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1abdb1924164eb185c9103ebb31558b81a">BLEND_FACTOR_INV_SRC1_COLOR</a>,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2add20baaa9ee7598b28e83c0cf64c9b"> 111</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2add20baaa9ee7598b28e83c0cf64c9b">BLEND_FACTOR_SRC1_ALPHA</a>,</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1afd98dec225244fa1a213f528f4937615"> 115</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1afd98dec225244fa1a213f528f4937615">BLEND_FACTOR_INV_SRC1_ALPHA</a>, </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a4ac776a641c5abe06578c37c22e1c2a0"> 118</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a4ac776a641c5abe06578c37c22e1c2a0">BLEND_FACTOR_NUM_FACTORS</a></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> };</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3"> 130</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">BLEND_OPERATION</a> : Int8</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> {</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a987616518a77bdf05e92b26fc957d407"> 133</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a987616518a77bdf05e92b26fc957d407">BLEND_OPERATION_UNDEFINED</a> = 0,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a9e84f0b1a683c460a49427cdc716a531"> 137</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a9e84f0b1a683c460a49427cdc716a531">BLEND_OPERATION_ADD</a>,</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a1ed369e906a5f05ba38bb58dbb30faeb"> 141</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a1ed369e906a5f05ba38bb58dbb30faeb">BLEND_OPERATION_SUBTRACT</a>,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3aae2cc1969f4c2d769409d9aaf4e39c00"> 145</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3aae2cc1969f4c2d769409d9aaf4e39c00">BLEND_OPERATION_REV_SUBTRACT</a>,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a8842278a3b21bcc3ac743eb14cc34f15"> 149</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a8842278a3b21bcc3ac743eb14cc34f15">BLEND_OPERATION_MIN</a>,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a538393fe379730eeb9472350b8e6f01c"> 153</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a538393fe379730eeb9472350b8e6f01c">BLEND_OPERATION_MAX</a>,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a3cd17b3a0762e892dd7dfc842a968406"> 156</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a3cd17b3a0762e892dd7dfc842a968406">BLEND_OPERATION_NUM_OPERATIONS</a></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> };</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35c"> 163</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35c">COLOR_MASK</a> : Int32</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cab98fdb1a5bf1764c6c29e44adda56eec"> 166</a></span>  <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cab98fdb1a5bf1764c6c29e44adda56eec">COLOR_MASK_RED</a> = 1,</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca0c48f62df6e9f3dd4a13a0a8125a5176"> 169</a></span>  <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca0c48f62df6e9f3dd4a13a0a8125a5176">COLOR_MASK_GREEN</a> = 2,</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca96c4ad2861f747d80853e59ee8bc9f73"> 172</a></span>  <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca96c4ad2861f747d80853e59ee8bc9f73">COLOR_MASK_BLUE</a> = 4,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca8914c618d54477b9fa5f2b2323f0f726"> 175</a></span>  <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca8914c618d54477b9fa5f2b2323f0f726">COLOR_MASK_ALPHA</a> = 8,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cafd8cebfdaacbc52fff4edae2102ced91"> 178</a></span>  <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cafd8cebfdaacbc52fff4edae2102ced91">COLOR_MASK_ALL</a> = ( ( ( <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cab98fdb1a5bf1764c6c29e44adda56eec">COLOR_MASK_RED</a> | <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca0c48f62df6e9f3dd4a13a0a8125a5176">COLOR_MASK_GREEN</a> ) | <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca96c4ad2861f747d80853e59ee8bc9f73">COLOR_MASK_BLUE</a> ) | <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca8914c618d54477b9fa5f2b2323f0f726">COLOR_MASK_ALPHA</a> ) </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> };</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92"> 189</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92">LOGIC_OPERATION</a> : Int8</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92afdfe9ad9094bc9f6a8a6e4f4f0b8a7f1"> 193</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92afdfe9ad9094bc9f6a8a6e4f4f0b8a7f1">LOGIC_OP_CLEAR</a> = 0,</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92aa0344ccea43ed2d74b7e0696bf8e7d73"> 197</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92aa0344ccea43ed2d74b7e0696bf8e7d73">LOGIC_OP_SET</a>,</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92ac325ef2bf88d625c2432a827eb8c9782"> 201</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92ac325ef2bf88d625c2432a827eb8c9782">LOGIC_OP_COPY</a>,</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92afb3a7e7949a22c09536c6cd737e8b5d3"> 205</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92afb3a7e7949a22c09536c6cd737e8b5d3">LOGIC_OP_COPY_INVERTED</a>,</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a5216c93bdfa3dc7dbfa88d2464c1e1ad"> 209</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a5216c93bdfa3dc7dbfa88d2464c1e1ad">LOGIC_OP_NOOP</a>,</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92aeb49b6fa869a72df66d0d428e4d00b8c"> 213</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92aeb49b6fa869a72df66d0d428e4d00b8c">LOGIC_OP_INVERT</a>,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a184dfeec861cffe26bcc2fc3b136d66d"> 217</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a184dfeec861cffe26bcc2fc3b136d66d">LOGIC_OP_AND</a>,</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a91ebfea4ef01f358acd0ea79a074b972"> 221</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a91ebfea4ef01f358acd0ea79a074b972">LOGIC_OP_NAND</a>,</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a484dd041a2933b222acdbc3887ec784f"> 225</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a484dd041a2933b222acdbc3887ec784f">LOGIC_OP_OR</a>,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a9f05b80e9e1de862d726c07d0dc8d29f"> 229</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a9f05b80e9e1de862d726c07d0dc8d29f">LOGIC_OP_NOR</a>,</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92addf9c2927105ccdc9178d4d7524f6c4b"> 233</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92addf9c2927105ccdc9178d4d7524f6c4b">LOGIC_OP_XOR</a>,</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a1e38fa7811a232000ef9ccd0d77ce92b"> 237</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a1e38fa7811a232000ef9ccd0d77ce92b">LOGIC_OP_EQUIV</a>,</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a5e6b8778dc983d17194906f8642c3732"> 241</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a5e6b8778dc983d17194906f8642c3732">LOGIC_OP_AND_REVERSE</a>,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92ae21d1e9fb3eed77ddd76d4dce2c2d9fc"> 245</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92ae21d1e9fb3eed77ddd76d4dce2c2d9fc">LOGIC_OP_AND_INVERTED</a>,</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a2a82409fb240a540401f2f94171e7079"> 249</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a2a82409fb240a540401f2f94171e7079">LOGIC_OP_OR_REVERSE</a>,</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a20295cc262bf10f294531ec8d5d684e6"> 253</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a20295cc262bf10f294531ec8d5d684e6">LOGIC_OP_OR_INVERTED</a>,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a10885b91cf3d8c584a2a692a2acdf946"> 256</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a10885b91cf3d8c584a2a692a2acdf946">LOGIC_OP_NUM_OPERATIONS</a></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> };</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html"> 263</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_render_target_blend_desc.html">RenderTargetBlendDesc</a></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#ae0e8734189e8344cd49121e0de5bfb3b"> 266</a></span>  Bool <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ae0e8734189e8344cd49121e0de5bfb3b">BlendEnable</a>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a975387a5370bd04a00d97d7a159398e6"> 269</a></span>  Bool <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a975387a5370bd04a00d97d7a159398e6">LogicOperationEnable</a>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#afebc07d02d747007045f9c120a08bc31"> 272</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afebc07d02d747007045f9c120a08bc31">SrcBlend</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a2ce13abe089b2d4a38e1ccc547d6ef29"> 275</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a2ce13abe089b2d4a38e1ccc547d6ef29">DestBlend</a>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a9e425a2913f4ce256c0cd2dd02db67c4"> 279</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">BLEND_OPERATION</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a9e425a2913f4ce256c0cd2dd02db67c4">BlendOp</a>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#ac1ee935ffe66f5fb5aaa14f0234e5c30"> 283</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ac1ee935ffe66f5fb5aaa14f0234e5c30">SrcBlendAlpha</a>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a99cd9ca2244c4cf01717fde3daceba3a"> 287</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a99cd9ca2244c4cf01717fde3daceba3a">DestBlendAlpha</a>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a7d8a84d41c3fe0edf0682bcd58331848"> 291</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">BLEND_OPERATION</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a7d8a84d41c3fe0edf0682bcd58331848">BlendOpAlpha</a>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a6b1ca6f5409cb0df8c7091bd7238ca74"> 294</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92">LOGIC_OPERATION</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a6b1ca6f5409cb0df8c7091bd7238ca74">LogicOp</a>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#afedb3e5e95720375c80ef7a14bad13f1"> 297</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afedb3e5e95720375c80ef7a14bad13f1">RenderTargetWriteMask</a>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#aa68723c4aa403b498b0f110fec65e4a3"> 313</a></span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#aa68723c4aa403b498b0f110fec65e4a3">RenderTargetBlendDesc</a>() :</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ae0e8734189e8344cd49121e0de5bfb3b">BlendEnable</a> ( False ),</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a975387a5370bd04a00d97d7a159398e6">LogicOperationEnable</a>(False),</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afebc07d02d747007045f9c120a08bc31">SrcBlend</a> ( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ab81b4c36868770ea6a97048bb46190f9">BLEND_FACTOR_ONE</a> ),</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a2ce13abe089b2d4a38e1ccc547d6ef29">DestBlend</a> ( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1aa78e79d5fc95c45698a965cb657a21b4">BLEND_FACTOR_ZERO</a> ),</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a9e425a2913f4ce256c0cd2dd02db67c4">BlendOp</a> ( <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a9e84f0b1a683c460a49427cdc716a531">BLEND_OPERATION_ADD</a> ),</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ac1ee935ffe66f5fb5aaa14f0234e5c30">SrcBlendAlpha</a> ( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ab81b4c36868770ea6a97048bb46190f9">BLEND_FACTOR_ONE</a> ),</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a99cd9ca2244c4cf01717fde3daceba3a">DestBlendAlpha</a> ( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1aa78e79d5fc95c45698a965cb657a21b4">BLEND_FACTOR_ZERO</a> ),</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a7d8a84d41c3fe0edf0682bcd58331848">BlendOpAlpha</a> ( <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a9e84f0b1a683c460a49427cdc716a531">BLEND_OPERATION_ADD</a> ),</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a6b1ca6f5409cb0df8c7091bd7238ca74">LogicOp</a> ( <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a5216c93bdfa3dc7dbfa88d2464c1e1ad">LOGIC_OP_NOOP</a> ),</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afedb3e5e95720375c80ef7a14bad13f1">RenderTargetWriteMask</a>( <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cafd8cebfdaacbc52fff4edae2102ced91">COLOR_MASK_ALL</a> )</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {}</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#ac397a773166c5bbe3c4156cf02d28df5"> 333</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ac397a773166c5bbe3c4156cf02d28df5">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html">RenderTargetBlendDesc</a>& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ae0e8734189e8344cd49121e0de5bfb3b">BlendEnable</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ae0e8734189e8344cd49121e0de5bfb3b">BlendEnable</a> &&</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a975387a5370bd04a00d97d7a159398e6">LogicOperationEnable</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a975387a5370bd04a00d97d7a159398e6">LogicOperationEnable</a> &&</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afebc07d02d747007045f9c120a08bc31">SrcBlend</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afebc07d02d747007045f9c120a08bc31">SrcBlend</a> &&</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a2ce13abe089b2d4a38e1ccc547d6ef29">DestBlend</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a2ce13abe089b2d4a38e1ccc547d6ef29">DestBlend</a> &&</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a9e425a2913f4ce256c0cd2dd02db67c4">BlendOp</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a9e425a2913f4ce256c0cd2dd02db67c4">BlendOp</a> &&</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ac1ee935ffe66f5fb5aaa14f0234e5c30">SrcBlendAlpha</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ac1ee935ffe66f5fb5aaa14f0234e5c30">SrcBlendAlpha</a> &&</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a99cd9ca2244c4cf01717fde3daceba3a">DestBlendAlpha</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a99cd9ca2244c4cf01717fde3daceba3a">DestBlendAlpha</a> &&</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a7d8a84d41c3fe0edf0682bcd58331848">BlendOpAlpha</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a7d8a84d41c3fe0edf0682bcd58331848">BlendOpAlpha</a> &&</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a6b1ca6f5409cb0df8c7091bd7238ca74">LogicOp</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a6b1ca6f5409cb0df8c7091bd7238ca74">LogicOp</a> &&</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afedb3e5e95720375c80ef7a14bad13f1">RenderTargetWriteMask</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afedb3e5e95720375c80ef7a14bad13f1">RenderTargetWriteMask</a>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> };</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html"> 351</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_blend_state_desc.html">BlendStateDesc</a></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> {</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d"> 355</a></span>  Bool <a class="code" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d">AlphaToCoverageEnable</a>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed"> 359</a></span>  Bool <a class="code" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed">IndependentBlendEnable</a>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#a7668a548a9b1760370514670791b0fb0"> 362</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> <a class="code" href="struct_diligent_1_1_blend_state_desc.html#a7668a548a9b1760370514670791b0fb0">MaxRenderTargets</a> = 8;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#aae5a5ae252633121a1499db0d6d67462"> 366</a></span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html">RenderTargetBlendDesc</a> <a class="code" href="struct_diligent_1_1_blend_state_desc.html#aae5a5ae252633121a1499db0d6d67462">RenderTargets</a>[<a class="code" href="struct_diligent_1_1_blend_state_desc.html#a7668a548a9b1760370514670791b0fb0">MaxRenderTargets</a>];</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#a8f602b74a29dab38856658f92d08cbc3"> 377</a></span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html#a8f602b74a29dab38856658f92d08cbc3">BlendStateDesc</a>() : </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d">AlphaToCoverageEnable</a>(False),</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed">IndependentBlendEnable</a>(False)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#afa384964ca7075462619b724d53f710e"> 393</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_blend_state_desc.html#afa384964ca7075462619b724d53f710e">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_blend_state_desc.html">BlendStateDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordtype">bool</span> bRTsEqual = <span class="keyword">true</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < <a class="code" href="struct_diligent_1_1_blend_state_desc.html#a7668a548a9b1760370514670791b0fb0">MaxRenderTargets</a>; ++i )</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">if</span>( !(<a class="code" href="struct_diligent_1_1_blend_state_desc.html#aae5a5ae252633121a1499db0d6d67462">RenderTargets</a>[i] == RHS.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#aae5a5ae252633121a1499db0d6d67462">RenderTargets</a>[i]) )</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  bRTsEqual = <span class="keyword">false</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">return</span> bRTsEqual &&</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d">AlphaToCoverageEnable</a> == RHS.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d">AlphaToCoverageEnable</a> &&</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed">IndependentBlendEnable</a>== RHS.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed">IndependentBlendEnable</a>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> };</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> }</div><div class="ttc" id="namespace_diligent_html_a9d388fa6bbd172d43718f7f4ff5dcf92a2a82409fb240a540401f2f94171e7079"><div class="ttname"><a href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a2a82409fb240a540401f2f94171e7079">Diligent::LOGIC_OP_OR_REVERSE</a></div><div class="ttdoc">Perform a logical OR and reverse operation on the render target. Direct3D12 counterpart: D3D12_LOGIC...</div><div class="ttdef"><b>Definition:</b> BlendState.h:249</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1"> 43</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> : Int8</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a607e0164f4cc7dace2760c1074c760be"> 46</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a607e0164f4cc7dace2760c1074c760be">BLEND_FACTOR_UNDEFINED</a> = 0,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1aa78e79d5fc95c45698a965cb657a21b4"> 50</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1aa78e79d5fc95c45698a965cb657a21b4">BLEND_FACTOR_ZERO</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ab81b4c36868770ea6a97048bb46190f9"> 54</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ab81b4c36868770ea6a97048bb46190f9">BLEND_FACTOR_ONE</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a565d3f80967d8c90ca2613cbe5bf07e7"> 58</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a565d3f80967d8c90ca2613cbe5bf07e7">BLEND_FACTOR_SRC_COLOR</a>,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ae5bf98a17ed70db4950c1bd852000fe3"> 62</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ae5bf98a17ed70db4950c1bd852000fe3">BLEND_FACTOR_INV_SRC_COLOR</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a948b5c73475cba94c6c028092f2b9e3a"> 66</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a948b5c73475cba94c6c028092f2b9e3a">BLEND_FACTOR_SRC_ALPHA</a>,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a5bb6a5588766529cd50db693951fc976"> 70</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a5bb6a5588766529cd50db693951fc976">BLEND_FACTOR_INV_SRC_ALPHA</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a6ae74671ee262ba8d396e898f90398ee"> 74</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a6ae74671ee262ba8d396e898f90398ee">BLEND_FACTOR_DEST_ALPHA</a>,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a26b0fdff59e555e405da24bda789186b"> 78</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a26b0fdff59e555e405da24bda789186b">BLEND_FACTOR_INV_DEST_ALPHA</a>,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a874d7c0d6c6212a313a2565b8289edd3"> 82</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a874d7c0d6c6212a313a2565b8289edd3">BLEND_FACTOR_DEST_COLOR</a>,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a923de8f8b25551fb02c1265961bf2dcc"> 86</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a923de8f8b25551fb02c1265961bf2dcc">BLEND_FACTOR_INV_DEST_COLOR</a>,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1af63ab4a6d981c0f847faae9f68421028"> 91</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1af63ab4a6d981c0f847faae9f68421028">BLEND_FACTOR_SRC_ALPHA_SAT</a>,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a55990a5c0e48e2ecd81090e433e6ef06"> 95</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a55990a5c0e48e2ecd81090e433e6ef06">BLEND_FACTOR_BLEND_FACTOR</a>,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a636346de2f019fa3a3ae3392e37f1af8"> 99</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a636346de2f019fa3a3ae3392e37f1af8">BLEND_FACTOR_INV_BLEND_FACTOR</a>,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2a9de58773a193ca26dc5747ad15d5a0"> 103</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2a9de58773a193ca26dc5747ad15d5a0">BLEND_FACTOR_SRC1_COLOR</a>,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1abdb1924164eb185c9103ebb31558b81a"> 107</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1abdb1924164eb185c9103ebb31558b81a">BLEND_FACTOR_INV_SRC1_COLOR</a>,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2add20baaa9ee7598b28e83c0cf64c9b"> 111</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2add20baaa9ee7598b28e83c0cf64c9b">BLEND_FACTOR_SRC1_ALPHA</a>,</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1afd98dec225244fa1a213f528f4937615"> 115</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1afd98dec225244fa1a213f528f4937615">BLEND_FACTOR_INV_SRC1_ALPHA</a>, </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a4ac776a641c5abe06578c37c22e1c2a0"> 118</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a4ac776a641c5abe06578c37c22e1c2a0">BLEND_FACTOR_NUM_FACTORS</a></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> };</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3"> 130</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">BLEND_OPERATION</a> : Int8</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> {</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a987616518a77bdf05e92b26fc957d407"> 133</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a987616518a77bdf05e92b26fc957d407">BLEND_OPERATION_UNDEFINED</a> = 0,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a9e84f0b1a683c460a49427cdc716a531"> 137</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a9e84f0b1a683c460a49427cdc716a531">BLEND_OPERATION_ADD</a>,</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a1ed369e906a5f05ba38bb58dbb30faeb"> 141</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a1ed369e906a5f05ba38bb58dbb30faeb">BLEND_OPERATION_SUBTRACT</a>,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3aae2cc1969f4c2d769409d9aaf4e39c00"> 145</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3aae2cc1969f4c2d769409d9aaf4e39c00">BLEND_OPERATION_REV_SUBTRACT</a>,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a8842278a3b21bcc3ac743eb14cc34f15"> 149</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a8842278a3b21bcc3ac743eb14cc34f15">BLEND_OPERATION_MIN</a>,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a538393fe379730eeb9472350b8e6f01c"> 153</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a538393fe379730eeb9472350b8e6f01c">BLEND_OPERATION_MAX</a>,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a3cd17b3a0762e892dd7dfc842a968406"> 156</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a3cd17b3a0762e892dd7dfc842a968406">BLEND_OPERATION_NUM_OPERATIONS</a></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> };</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35c"> 163</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35c">COLOR_MASK</a> : Int32</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cab98fdb1a5bf1764c6c29e44adda56eec"> 166</a></span>  <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cab98fdb1a5bf1764c6c29e44adda56eec">COLOR_MASK_RED</a> = 1,</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca0c48f62df6e9f3dd4a13a0a8125a5176"> 169</a></span>  <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca0c48f62df6e9f3dd4a13a0a8125a5176">COLOR_MASK_GREEN</a> = 2,</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca96c4ad2861f747d80853e59ee8bc9f73"> 172</a></span>  <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca96c4ad2861f747d80853e59ee8bc9f73">COLOR_MASK_BLUE</a> = 4,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca8914c618d54477b9fa5f2b2323f0f726"> 175</a></span>  <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca8914c618d54477b9fa5f2b2323f0f726">COLOR_MASK_ALPHA</a> = 8,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cafd8cebfdaacbc52fff4edae2102ced91"> 178</a></span>  <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cafd8cebfdaacbc52fff4edae2102ced91">COLOR_MASK_ALL</a> = ( ( ( <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cab98fdb1a5bf1764c6c29e44adda56eec">COLOR_MASK_RED</a> | <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca0c48f62df6e9f3dd4a13a0a8125a5176">COLOR_MASK_GREEN</a> ) | <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca96c4ad2861f747d80853e59ee8bc9f73">COLOR_MASK_BLUE</a> ) | <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca8914c618d54477b9fa5f2b2323f0f726">COLOR_MASK_ALPHA</a> ) </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> };</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92"> 189</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92">LOGIC_OPERATION</a> : Int8</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92afdfe9ad9094bc9f6a8a6e4f4f0b8a7f1"> 193</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92afdfe9ad9094bc9f6a8a6e4f4f0b8a7f1">LOGIC_OP_CLEAR</a> = 0,</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92aa0344ccea43ed2d74b7e0696bf8e7d73"> 197</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92aa0344ccea43ed2d74b7e0696bf8e7d73">LOGIC_OP_SET</a>,</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92ac325ef2bf88d625c2432a827eb8c9782"> 201</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92ac325ef2bf88d625c2432a827eb8c9782">LOGIC_OP_COPY</a>,</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92afb3a7e7949a22c09536c6cd737e8b5d3"> 205</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92afb3a7e7949a22c09536c6cd737e8b5d3">LOGIC_OP_COPY_INVERTED</a>,</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a5216c93bdfa3dc7dbfa88d2464c1e1ad"> 209</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a5216c93bdfa3dc7dbfa88d2464c1e1ad">LOGIC_OP_NOOP</a>,</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92aeb49b6fa869a72df66d0d428e4d00b8c"> 213</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92aeb49b6fa869a72df66d0d428e4d00b8c">LOGIC_OP_INVERT</a>,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a184dfeec861cffe26bcc2fc3b136d66d"> 217</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a184dfeec861cffe26bcc2fc3b136d66d">LOGIC_OP_AND</a>,</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a91ebfea4ef01f358acd0ea79a074b972"> 221</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a91ebfea4ef01f358acd0ea79a074b972">LOGIC_OP_NAND</a>,</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a484dd041a2933b222acdbc3887ec784f"> 225</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a484dd041a2933b222acdbc3887ec784f">LOGIC_OP_OR</a>,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a9f05b80e9e1de862d726c07d0dc8d29f"> 229</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a9f05b80e9e1de862d726c07d0dc8d29f">LOGIC_OP_NOR</a>,</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92addf9c2927105ccdc9178d4d7524f6c4b"> 233</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92addf9c2927105ccdc9178d4d7524f6c4b">LOGIC_OP_XOR</a>,</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a1e38fa7811a232000ef9ccd0d77ce92b"> 237</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a1e38fa7811a232000ef9ccd0d77ce92b">LOGIC_OP_EQUIV</a>,</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a5e6b8778dc983d17194906f8642c3732"> 241</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a5e6b8778dc983d17194906f8642c3732">LOGIC_OP_AND_REVERSE</a>,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92ae21d1e9fb3eed77ddd76d4dce2c2d9fc"> 245</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92ae21d1e9fb3eed77ddd76d4dce2c2d9fc">LOGIC_OP_AND_INVERTED</a>,</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a2a82409fb240a540401f2f94171e7079"> 249</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a2a82409fb240a540401f2f94171e7079">LOGIC_OP_OR_REVERSE</a>,</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a20295cc262bf10f294531ec8d5d684e6"> 253</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a20295cc262bf10f294531ec8d5d684e6">LOGIC_OP_OR_INVERTED</a>,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a10885b91cf3d8c584a2a692a2acdf946"> 256</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a10885b91cf3d8c584a2a692a2acdf946">LOGIC_OP_NUM_OPERATIONS</a></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> };</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html"> 263</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_render_target_blend_desc.html">RenderTargetBlendDesc</a></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#ae0e8734189e8344cd49121e0de5bfb3b"> 266</a></span>  Bool <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ae0e8734189e8344cd49121e0de5bfb3b">BlendEnable</a>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a975387a5370bd04a00d97d7a159398e6"> 269</a></span>  Bool <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a975387a5370bd04a00d97d7a159398e6">LogicOperationEnable</a>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#afebc07d02d747007045f9c120a08bc31"> 272</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afebc07d02d747007045f9c120a08bc31">SrcBlend</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a2ce13abe089b2d4a38e1ccc547d6ef29"> 275</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a2ce13abe089b2d4a38e1ccc547d6ef29">DestBlend</a>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a9e425a2913f4ce256c0cd2dd02db67c4"> 279</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">BLEND_OPERATION</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a9e425a2913f4ce256c0cd2dd02db67c4">BlendOp</a>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#ac1ee935ffe66f5fb5aaa14f0234e5c30"> 283</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ac1ee935ffe66f5fb5aaa14f0234e5c30">SrcBlendAlpha</a>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a99cd9ca2244c4cf01717fde3daceba3a"> 287</a></span>  <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a99cd9ca2244c4cf01717fde3daceba3a">DestBlendAlpha</a>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a7d8a84d41c3fe0edf0682bcd58331848"> 291</a></span>  <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">BLEND_OPERATION</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a7d8a84d41c3fe0edf0682bcd58331848">BlendOpAlpha</a>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#a6b1ca6f5409cb0df8c7091bd7238ca74"> 294</a></span>  <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92">LOGIC_OPERATION</a> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a6b1ca6f5409cb0df8c7091bd7238ca74">LogicOp</a>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#afedb3e5e95720375c80ef7a14bad13f1"> 297</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afedb3e5e95720375c80ef7a14bad13f1">RenderTargetWriteMask</a>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#aa68723c4aa403b498b0f110fec65e4a3"> 313</a></span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#aa68723c4aa403b498b0f110fec65e4a3">RenderTargetBlendDesc</a>() :</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ae0e8734189e8344cd49121e0de5bfb3b">BlendEnable</a> ( False ),</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a975387a5370bd04a00d97d7a159398e6">LogicOperationEnable</a>(False),</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afebc07d02d747007045f9c120a08bc31">SrcBlend</a> ( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ab81b4c36868770ea6a97048bb46190f9">BLEND_FACTOR_ONE</a> ),</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a2ce13abe089b2d4a38e1ccc547d6ef29">DestBlend</a> ( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1aa78e79d5fc95c45698a965cb657a21b4">BLEND_FACTOR_ZERO</a> ),</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a9e425a2913f4ce256c0cd2dd02db67c4">BlendOp</a> ( <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a9e84f0b1a683c460a49427cdc716a531">BLEND_OPERATION_ADD</a> ),</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ac1ee935ffe66f5fb5aaa14f0234e5c30">SrcBlendAlpha</a> ( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ab81b4c36868770ea6a97048bb46190f9">BLEND_FACTOR_ONE</a> ),</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a99cd9ca2244c4cf01717fde3daceba3a">DestBlendAlpha</a> ( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1aa78e79d5fc95c45698a965cb657a21b4">BLEND_FACTOR_ZERO</a> ),</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a7d8a84d41c3fe0edf0682bcd58331848">BlendOpAlpha</a> ( <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a9e84f0b1a683c460a49427cdc716a531">BLEND_OPERATION_ADD</a> ),</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a6b1ca6f5409cb0df8c7091bd7238ca74">LogicOp</a> ( <a class="code" href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a5216c93bdfa3dc7dbfa88d2464c1e1ad">LOGIC_OP_NOOP</a> ),</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afedb3e5e95720375c80ef7a14bad13f1">RenderTargetWriteMask</a>( <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cafd8cebfdaacbc52fff4edae2102ced91">COLOR_MASK_ALL</a> )</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {}</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_render_target_blend_desc.html#ac397a773166c5bbe3c4156cf02d28df5"> 333</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ac397a773166c5bbe3c4156cf02d28df5">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html">RenderTargetBlendDesc</a>& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ae0e8734189e8344cd49121e0de5bfb3b">BlendEnable</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ae0e8734189e8344cd49121e0de5bfb3b">BlendEnable</a> &&</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a975387a5370bd04a00d97d7a159398e6">LogicOperationEnable</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a975387a5370bd04a00d97d7a159398e6">LogicOperationEnable</a> &&</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afebc07d02d747007045f9c120a08bc31">SrcBlend</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afebc07d02d747007045f9c120a08bc31">SrcBlend</a> &&</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a2ce13abe089b2d4a38e1ccc547d6ef29">DestBlend</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a2ce13abe089b2d4a38e1ccc547d6ef29">DestBlend</a> &&</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a9e425a2913f4ce256c0cd2dd02db67c4">BlendOp</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a9e425a2913f4ce256c0cd2dd02db67c4">BlendOp</a> &&</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ac1ee935ffe66f5fb5aaa14f0234e5c30">SrcBlendAlpha</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#ac1ee935ffe66f5fb5aaa14f0234e5c30">SrcBlendAlpha</a> &&</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a99cd9ca2244c4cf01717fde3daceba3a">DestBlendAlpha</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a99cd9ca2244c4cf01717fde3daceba3a">DestBlendAlpha</a> &&</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a7d8a84d41c3fe0edf0682bcd58331848">BlendOpAlpha</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a7d8a84d41c3fe0edf0682bcd58331848">BlendOpAlpha</a> &&</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a6b1ca6f5409cb0df8c7091bd7238ca74">LogicOp</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#a6b1ca6f5409cb0df8c7091bd7238ca74">LogicOp</a> &&</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afedb3e5e95720375c80ef7a14bad13f1">RenderTargetWriteMask</a> == rhs.<a class="code" href="struct_diligent_1_1_render_target_blend_desc.html#afedb3e5e95720375c80ef7a14bad13f1">RenderTargetWriteMask</a>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> };</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html"> 351</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_blend_state_desc.html">BlendStateDesc</a></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> {</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d"> 355</a></span>  Bool <a class="code" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d">AlphaToCoverageEnable</a>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed"> 359</a></span>  Bool <a class="code" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed">IndependentBlendEnable</a>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#a7668a548a9b1760370514670791b0fb0"> 362</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> <a class="code" href="struct_diligent_1_1_blend_state_desc.html#a7668a548a9b1760370514670791b0fb0">MaxRenderTargets</a> = 8;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#aae5a5ae252633121a1499db0d6d67462"> 366</a></span>  <a class="code" href="struct_diligent_1_1_render_target_blend_desc.html">RenderTargetBlendDesc</a> <a class="code" href="struct_diligent_1_1_blend_state_desc.html#aae5a5ae252633121a1499db0d6d67462">RenderTargets</a>[<a class="code" href="struct_diligent_1_1_blend_state_desc.html#a7668a548a9b1760370514670791b0fb0">MaxRenderTargets</a>];</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#a8f602b74a29dab38856658f92d08cbc3"> 377</a></span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html#a8f602b74a29dab38856658f92d08cbc3">BlendStateDesc</a>() : </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d">AlphaToCoverageEnable</a>(False),</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed">IndependentBlendEnable</a>(False)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_blend_state_desc.html#afa384964ca7075462619b724d53f710e"> 393</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_blend_state_desc.html#afa384964ca7075462619b724d53f710e">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_blend_state_desc.html">BlendStateDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordtype">bool</span> bRTsEqual = <span class="keyword">true</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < <a class="code" href="struct_diligent_1_1_blend_state_desc.html#a7668a548a9b1760370514670791b0fb0">MaxRenderTargets</a>; ++i )</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">if</span>( !(<a class="code" href="struct_diligent_1_1_blend_state_desc.html#aae5a5ae252633121a1499db0d6d67462">RenderTargets</a>[i] == RHS.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#aae5a5ae252633121a1499db0d6d67462">RenderTargets</a>[i]) )</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  bRTsEqual = <span class="keyword">false</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">return</span> bRTsEqual &&</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d">AlphaToCoverageEnable</a> == RHS.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d">AlphaToCoverageEnable</a> &&</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed">IndependentBlendEnable</a>== RHS.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed">IndependentBlendEnable</a>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> };</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> }</div><div class="ttc" id="namespace_diligent_html_a9d388fa6bbd172d43718f7f4ff5dcf92a2a82409fb240a540401f2f94171e7079"><div class="ttname"><a href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a2a82409fb240a540401f2f94171e7079">Diligent::LOGIC_OP_OR_REVERSE</a></div><div class="ttdoc">Perform a logical OR and reverse operation on the render target. Direct3D12 counterpart: D3D12_LOGIC...</div><div class="ttdef"><b>Definition:</b> BlendState.h:249</div></div> <div class="ttc" id="namespace_diligent_html_a1a15723d053d87194d02437ffd2f55f3"><div class="ttname"><a href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">Diligent::BLEND_OPERATION</a></div><div class="ttdeci">BLEND_OPERATION</div><div class="ttdoc">Blending operation. </div><div class="ttdef"><b>Definition:</b> BlendState.h:130</div></div> <div class="ttc" id="namespace_diligent_html_a781bf760ca4b6e5258059a857c2f70b1a607e0164f4cc7dace2760c1074c760be"><div class="ttname"><a href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a607e0164f4cc7dace2760c1074c760be">Diligent::BLEND_FACTOR_UNDEFINED</a></div><div class="ttdoc">Undefined blend factor. </div><div class="ttdef"><b>Definition:</b> BlendState.h:46</div></div> <div class="ttc" id="namespace_diligent_html_a9d388fa6bbd172d43718f7f4ff5dcf92a484dd041a2933b222acdbc3887ec784f"><div class="ttname"><a href="namespace_diligent.html#a9d388fa6bbd172d43718f7f4ff5dcf92a484dd041a2933b222acdbc3887ec784f">Diligent::LOGIC_OP_OR</a></div><div class="ttdoc">Perform a logical OR operation on the render target. Direct3D12 counterpart: D3D12_LOGIC_OP_OR. </div><div class="ttdef"><b>Definition:</b> BlendState.h:225</div></div> @@ -147,7 +147,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_8h_source.html b/doc/html/_buffer_8h_source.html index 0353f698..b66f1053 100644 --- a/doc/html/_buffer_8h_source.html +++ b/doc/html/_buffer_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">Buffer.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {EC47EAD3-A2C4-44F2-81C5-5248D14F10E4}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_Buffer =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xec47ead3, 0xa2c4, 0x44f2, { 0x81, 0xc5, 0x52, 0x48, 0xd1, 0x4f, 0x10, 0xe4 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7da"> 41</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7da">BUFFER_MODE</a> : Int32</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa3d5865d8818d99627ffe6775c4c219b2"> 44</a></span>  <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa3d5865d8818d99627ffe6775c4c219b2">BUFFER_MODE_UNDEFINED</a> = 0,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daafd0744a938df39ac9cd93fdbf9bb704e"> 47</a></span>  <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daafd0744a938df39ac9cd93fdbf9bb704e">BUFFER_MODE_FORMATTED</a>,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa8795c0e51bc4091c1efab4f65e5062e7"> 50</a></span>  <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa8795c0e51bc4091c1efab4f65e5062e7">BUFFER_MODE_STRUCTURED</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa1ef9cfe62f24d6763f691281ef6c09f5"> 53</a></span>  <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa1ef9cfe62f24d6763f691281ef6c09f5">BUFFER_MODE_NUM_MODES</a></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html"> 57</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#a544e39f4d04894bc88237f22fc26fda8"> 60</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_desc.html#a544e39f4d04894bc88237f22fc26fda8">uiSizeInBytes</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06"> 68</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d"> 71</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> <a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#ae8db3e539cbbaca87fd437d67f26eb80"> 75</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_desc.html#ae8db3e539cbbaca87fd437d67f26eb80">CPUAccessFlags</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7"> 78</a></span>  <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7da">BUFFER_MODE</a> <a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html"> 81</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html">BufferFormat</a></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9"> 84</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab"> 88</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a1050af245b83f52523bdc7cfed2ffd71"> 95</a></span>  Bool <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a1050af245b83f52523bdc7cfed2ffd71">IsNormalized</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#abb64063c84bbb65eb392d4b13a1f1455"> 105</a></span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#abb64063c84bbb65eb392d4b13a1f1455">BufferFormat</a>() :</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a>( <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">VT_UNDEFINED</a> ),</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a>( 0 ),</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a1050af245b83f52523bdc7cfed2ffd71">IsNormalized</a>(True)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {}</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ad605a62df9b246a10f5870f9e904b50e"> 112</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ad605a62df9b246a10f5870f9e904b50e">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html">BufferFormat</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a> && </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a> &&</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a1050af245b83f52523bdc7cfed2ffd71">IsNormalized</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a1050af245b83f52523bdc7cfed2ffd71">IsNormalized</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296"> 124</a></span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html">BufferFormat</a> <a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb"> 131</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#a9587fb107cfd98028a10b59a88b8aee1"> 145</a></span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#a9587fb107cfd98028a10b59a88b8aee1">BufferDesc</a>() : </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#a544e39f4d04894bc88237f22fc26fda8">uiSizeInBytes</a>(0),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a>(0),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a>(<a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#ae8db3e539cbbaca87fd437d67f26eb80">CPUAccessFlags</a>(0),</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a>( <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa3d5865d8818d99627ffe6775c4c219b2">BUFFER_MODE_UNDEFINED</a> ),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a>(0)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {}</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#a5e2319a1a627e82958d3b13343e62c46"> 163</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html#a5e2319a1a627e82958d3b13343e62c46">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html#a544e39f4d04894bc88237f22fc26fda8">uiSizeInBytes</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#a544e39f4d04894bc88237f22fc26fda8">uiSizeInBytes</a> && </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> &&</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a> &&</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#ae8db3e539cbbaca87fd437d67f26eb80">CPUAccessFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#ae8db3e539cbbaca87fd437d67f26eb80">CPUAccessFlags</a> &&</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a> &&</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a> &&</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> };</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_data.html"> 176</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> {</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_data.html#a26cc7ca53f891a63ed1846e27b8e50d8"> 179</a></span>  <span class="keyword">const</span> <span class="keywordtype">void</span>* <a class="code" href="struct_diligent_1_1_buffer_data.html#a26cc7ca53f891a63ed1846e27b8e50d8">pData</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_data.html#a2384ba674fecafae7464d42290d6a7e3"> 182</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_data.html#a2384ba674fecafae7464d42290d6a7e3">DataSize</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_data.html#abbe1e758f160037334661f5a4decee2e"> 191</a></span>  <a class="code" href="struct_diligent_1_1_buffer_data.html#abbe1e758f160037334661f5a4decee2e">BufferData</a>() : </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="struct_diligent_1_1_buffer_data.html#a26cc7ca53f891a63ed1846e27b8e50d8">pData</a>(nullptr),</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="struct_diligent_1_1_buffer_data.html#a2384ba674fecafae7464d42290d6a7e3">DataSize</a>(0)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  {}</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> };</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer.html"> 200</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#a25c1c634bbfb6338d13579e494e3d575">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& <a class="code" href="class_diligent_1_1_i_buffer.html#a7c88d0d7059bea7d530e112579cef1e2">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#a555a93cbf1811ea5bbf9222aacbaf4bc">UpdateData</a>( <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData) = 0;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#a9f52c4f87b976cba6be125a37fa8a02a">CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size ) = 0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#af7715744014ebca78a20fa9a92ddf9ae">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData ) = 0;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#a086169aac806b3a0b6f3b69a53c7bfa8">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags ) = 0;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#aa295fc943c9cfbd4d9a65465d4200be3">CreateView</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> **ppView ) = 0;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a>* <a class="code" href="class_diligent_1_1_i_buffer.html#ac858cc8ed157efaecb34648a447bafa7">GetDefaultView</a>( <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> ViewType ) = 0;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_i_buffer.html#ac733f2223d82d4679d001d91235bc806">GetNativeHandle</a>() = 0;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> };</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_desc_html_a5e2319a1a627e82958d3b13343e62c46"><div class="ttname"><a href="struct_diligent_1_1_buffer_desc.html#a5e2319a1a627e82958d3b13343e62c46">Diligent::BufferDesc::operator==</a></div><div class="ttdeci">bool operator==(const BufferDesc &RHS) const</div><div class="ttdoc">Tests if two structures are equivalent. </div><div class="ttdef"><b>Definition:</b> Buffer.h:163</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {EC47EAD3-A2C4-44F2-81C5-5248D14F10E4}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_Buffer =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xec47ead3, 0xa2c4, 0x44f2, { 0x81, 0xc5, 0x52, 0x48, 0xd1, 0x4f, 0x10, 0xe4 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7da"> 41</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7da">BUFFER_MODE</a> : Int32</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa3d5865d8818d99627ffe6775c4c219b2"> 44</a></span>  <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa3d5865d8818d99627ffe6775c4c219b2">BUFFER_MODE_UNDEFINED</a> = 0,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daafd0744a938df39ac9cd93fdbf9bb704e"> 47</a></span>  <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daafd0744a938df39ac9cd93fdbf9bb704e">BUFFER_MODE_FORMATTED</a>,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa8795c0e51bc4091c1efab4f65e5062e7"> 50</a></span>  <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa8795c0e51bc4091c1efab4f65e5062e7">BUFFER_MODE_STRUCTURED</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa1ef9cfe62f24d6763f691281ef6c09f5"> 53</a></span>  <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa1ef9cfe62f24d6763f691281ef6c09f5">BUFFER_MODE_NUM_MODES</a></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html"> 57</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#a544e39f4d04894bc88237f22fc26fda8"> 60</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_desc.html#a544e39f4d04894bc88237f22fc26fda8">uiSizeInBytes</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06"> 68</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d"> 71</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> <a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#ae8db3e539cbbaca87fd437d67f26eb80"> 75</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_desc.html#ae8db3e539cbbaca87fd437d67f26eb80">CPUAccessFlags</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7"> 78</a></span>  <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7da">BUFFER_MODE</a> <a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html"> 81</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html">BufferFormat</a></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9"> 84</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab"> 88</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a1050af245b83f52523bdc7cfed2ffd71"> 95</a></span>  Bool <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a1050af245b83f52523bdc7cfed2ffd71">IsNormalized</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#abb64063c84bbb65eb392d4b13a1f1455"> 105</a></span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#abb64063c84bbb65eb392d4b13a1f1455">BufferFormat</a>() :</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a>( <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">VT_UNDEFINED</a> ),</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a>( 0 ),</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a1050af245b83f52523bdc7cfed2ffd71">IsNormalized</a>(True)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {}</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ad605a62df9b246a10f5870f9e904b50e"> 112</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ad605a62df9b246a10f5870f9e904b50e">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html">BufferFormat</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a> && </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a> &&</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a1050af245b83f52523bdc7cfed2ffd71">IsNormalized</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a1050af245b83f52523bdc7cfed2ffd71">IsNormalized</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296"> 124</a></span>  <a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html">BufferFormat</a> <a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb"> 131</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#a9587fb107cfd98028a10b59a88b8aee1"> 145</a></span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#a9587fb107cfd98028a10b59a88b8aee1">BufferDesc</a>() : </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#a544e39f4d04894bc88237f22fc26fda8">uiSizeInBytes</a>(0),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a>(0),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a>(<a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#ae8db3e539cbbaca87fd437d67f26eb80">CPUAccessFlags</a>(0),</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a>( <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa3d5865d8818d99627ffe6775c4c219b2">BUFFER_MODE_UNDEFINED</a> ),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a>(0)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {}</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_desc.html#a5e2319a1a627e82958d3b13343e62c46"> 163</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html#a5e2319a1a627e82958d3b13343e62c46">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html#a544e39f4d04894bc88237f22fc26fda8">uiSizeInBytes</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#a544e39f4d04894bc88237f22fc26fda8">uiSizeInBytes</a> && </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> &&</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a> &&</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#ae8db3e539cbbaca87fd437d67f26eb80">CPUAccessFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#ae8db3e539cbbaca87fd437d67f26eb80">CPUAccessFlags</a> &&</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a> &&</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a> &&</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> };</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_data.html"> 176</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> {</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_data.html#a26cc7ca53f891a63ed1846e27b8e50d8"> 179</a></span>  <span class="keyword">const</span> <span class="keywordtype">void</span>* <a class="code" href="struct_diligent_1_1_buffer_data.html#a26cc7ca53f891a63ed1846e27b8e50d8">pData</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_data.html#a2384ba674fecafae7464d42290d6a7e3"> 182</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_data.html#a2384ba674fecafae7464d42290d6a7e3">DataSize</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_data.html#abbe1e758f160037334661f5a4decee2e"> 191</a></span>  <a class="code" href="struct_diligent_1_1_buffer_data.html#abbe1e758f160037334661f5a4decee2e">BufferData</a>() : </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="struct_diligent_1_1_buffer_data.html#a26cc7ca53f891a63ed1846e27b8e50d8">pData</a>(nullptr),</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="struct_diligent_1_1_buffer_data.html#a2384ba674fecafae7464d42290d6a7e3">DataSize</a>(0)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  {}</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> };</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer.html"> 200</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#a25c1c634bbfb6338d13579e494e3d575">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& <a class="code" href="class_diligent_1_1_i_buffer.html#a7c88d0d7059bea7d530e112579cef1e2">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#a555a93cbf1811ea5bbf9222aacbaf4bc">UpdateData</a>( <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData) = 0;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#a9f52c4f87b976cba6be125a37fa8a02a">CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size ) = 0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#af7715744014ebca78a20fa9a92ddf9ae">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData ) = 0;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#a086169aac806b3a0b6f3b69a53c7bfa8">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags ) = 0;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer.html#aa295fc943c9cfbd4d9a65465d4200be3">CreateView</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> **ppView ) = 0;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a>* <a class="code" href="class_diligent_1_1_i_buffer.html#ac858cc8ed157efaecb34648a447bafa7">GetDefaultView</a>( <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> ViewType ) = 0;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_i_buffer.html#ac733f2223d82d4679d001d91235bc806">GetNativeHandle</a>() = 0;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> };</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_desc_html_a5e2319a1a627e82958d3b13343e62c46"><div class="ttname"><a href="struct_diligent_1_1_buffer_desc.html#a5e2319a1a627e82958d3b13343e62c46">Diligent::BufferDesc::operator==</a></div><div class="ttdeci">bool operator==(const BufferDesc &RHS) const</div><div class="ttdoc">Tests if two structures are equivalent. </div><div class="ttdef"><b>Definition:</b> Buffer.h:163</div></div> <div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> <div class="ttc" id="namespace_diligent_html_afbdac277dbbb5b93d32b3ffd7df8b7daa1ef9cfe62f24d6763f691281ef6c09f5"><div class="ttname"><a href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa1ef9cfe62f24d6763f691281ef6c09f5">Diligent::BUFFER_MODE_NUM_MODES</a></div><div class="ttdoc">Helper value storing the total number of modes in the enumeration. </div><div class="ttdef"><b>Definition:</b> Buffer.h:53</div></div> <div class="ttc" id="struct_diligent_1_1_buffer_data_html_abbe1e758f160037334661f5a4decee2e"><div class="ttname"><a href="struct_diligent_1_1_buffer_data.html#abbe1e758f160037334661f5a4decee2e">Diligent::BufferData::BufferData</a></div><div class="ttdeci">BufferData()</div><div class="ttdoc">Initializes the structure members with default values. </div><div class="ttdef"><b>Definition:</b> Buffer.h:191</div></div> @@ -121,7 +121,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_base_8h_source.html b/doc/html/_buffer_base_8h_source.html index d40fea4c..616eceea 100644 --- a/doc/html/_buffer_base_8h_source.html +++ b/doc/html/_buffer_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a> < BaseInterface, BufferDesc></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, BufferDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#adf6f4c230332562c56285371c20f416c"> 58</a></span>  <a class="code" href="class_diligent_1_1_buffer_base.html#adf6f4c230332562c56285371c20f416c">BufferBase</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  TBuffViewObjAllocator &BuffViewObjAllocator, </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> bIsDeviceInternal) :</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, BuffDesc, bIsDeviceInternal),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> #ifdef _DEBUG</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_dbgBuffViewAllocator(BuffViewObjAllocator),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> #endif</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="class_diligent_1_1_buffer_base.html#af638f9c10f9c317845f1d73e35dccfdf">m_pDefaultUAV</a>(nullptr, STDDeleter<BufferViewImplType, TBuffViewObjAllocator>(BuffViewObjAllocator) ),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="class_diligent_1_1_buffer_base.html#a07d78ac464ec5c8a05900bb4819d164d">m_pDefaultSRV</a>(nullptr, STDDeleter<BufferViewImplType, TBuffViewObjAllocator>(BuffViewObjAllocator) )</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#define VERIFY_BUFFER(Expr, ...) VERIFY(Expr, "Buffer \"", this->m_Desc.Name ? this->m_Desc.Name : "", "\": ", ##__VA_ARGS__)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  Uint32 AllowedBindFlags =</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c">BIND_VERTEX_BUFFER</a> | <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03">BIND_INDEX_BUFFER</a> | <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9">BIND_UNIFORM_BUFFER</a> |</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a> | <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea6e78d02c83dd86d2706c23cb7dc30222">BIND_STREAM_OUTPUT</a> | <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a> |</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea059916f0a480fa57e6e417f8d0acf67f">BIND_INDIRECT_DRAW_ARGS</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">const</span> Char* strAllowedBindFlags =</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="stringliteral">"BIND_VERTEX_BUFFER (1), BIND_INDEX_BUFFER (2), BIND_UNIFORM_BUFFER (4), "</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="stringliteral">"BIND_SHADER_RESOURCE (8), BIND_STREAM_OUTPUT (16), BIND_UNORDERED_ACCESS (128), "</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="stringliteral">"BIND_INDIRECT_DRAW_ARGS (256)"</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  VERIFY_BUFFER( (BuffDesc.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> & ~AllowedBindFlags) == 0, <span class="stringliteral">"Incorrect bind flags specified ("</span>, BuffDesc.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> & ~AllowedBindFlags, <span class="stringliteral">"). Only the following flags are allowed:\n"</span>, strAllowedBindFlags );</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>( (this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a>) ||</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  (this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a>) )</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  VERIFY_BUFFER( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a> > <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa3d5865d8818d99627ffe6775c4c219b2">BUFFER_MODE_UNDEFINED</a> && this->m_Desc.Mode < <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa1ef9cfe62f24d6763f691281ef6c09f5">BUFFER_MODE_NUM_MODES</a>, <span class="stringliteral">"Buffer mode ("</span>, this->m_Desc.Mode, <span class="stringliteral">") is not correct"</span> );</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a> == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa8795c0e51bc4091c1efab4f65e5062e7">BUFFER_MODE_STRUCTURED</a> )</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  VERIFY_BUFFER( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a> != 0, <span class="stringliteral">"Element stride cannot be zero for structured buffer"</span> );</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a> == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daafd0744a938df39ac9cd93fdbf9bb704e">BUFFER_MODE_FORMATTED</a> )</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  VERIFY_BUFFER( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a>.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a> != <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">VT_UNDEFINED</a>, <span class="stringliteral">"Value type is not specified for a formatted buffer"</span> );</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  VERIFY_BUFFER( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a>.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a> != 0, <span class="stringliteral">"Num components cannot be zero in a formatted buffer"</span> );</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a> == 0 )</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a> = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(GetValueSize( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a>.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a> )) * this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a>.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_Buffer, TDeviceObjectBase )</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#ad470fd908943c4408afcfc4c17abd129">UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a33ba03da302bb9b1dc72a20704574b5c">CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a138ba26c24c34b78ea4a0990b77fc14a">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData )<span class="keyword">override</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a36a0b578084d631a5d5547221f1f3eb4">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#ac67b656289f82ba476c4eaaa4f23fb2f">CreateView</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc, <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> **ppView )<span class="keyword">override</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a>* <a class="code" href="class_diligent_1_1_buffer_base.html#a5a63d5d9b3ee50aa33bbfd48204f0108">GetDefaultView</a>( <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> ViewType )<span class="keyword">override</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a324143f93e68357ee89c5b3116c2cd6b">CreateDefaultViews</a>();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a1a89eae526881930d09a249521af2ed5">CreateViewInternal</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc, <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> **ppView, <span class="keywordtype">bool</span> bIsDefaultView ) = 0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a92e192b277bb3ee894bec156a3aa4ff1">CorrectBufferViewDesc</a>( <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc );</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  TBuffViewObjAllocator &m_dbgBuffViewAllocator;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#af638f9c10f9c317845f1d73e35dccfdf"> 147</a></span>  std::unique_ptr<BufferViewImplType, STDDeleter<BufferViewImplType, TBuffViewObjAllocator> > <a class="code" href="class_diligent_1_1_buffer_base.html#af638f9c10f9c317845f1d73e35dccfdf">m_pDefaultUAV</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a07d78ac464ec5c8a05900bb4819d164d"> 150</a></span>  std::unique_ptr<BufferViewImplType, STDDeleter<BufferViewImplType, TBuffViewObjAllocator> > <a class="code" href="class_diligent_1_1_buffer_base.html#a07d78ac464ec5c8a05900bb4819d164d">m_pDefaultSRV</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> };</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#ad470fd908943c4408afcfc4c17abd129"> 154</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#ad470fd908943c4408afcfc4c17abd129">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData )</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  VERIFY_BUFFER( this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>, <span class="stringliteral">"Only default usage buffers can be updated with UpdateData()"</span> );</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  VERIFY_BUFFER( Offset < this->m_Desc.uiSizeInBytes, <span class="stringliteral">"Offset ("</span>, Offset, <span class="stringliteral">") exceeds the buffer size ("</span>, this->m_Desc.uiSizeInBytes, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  VERIFY_BUFFER( Size + Offset <= this->m_Desc.uiSizeInBytes, <span class="stringliteral">"Update region ["</span>, Offset, <span class="stringliteral">","</span>, Size + Offset, <span class="stringliteral">") is out of buffer bounds [0,"</span>,this->m_Desc.uiSizeInBytes,<span class="stringliteral">")"</span> );</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a33ba03da302bb9b1dc72a20704574b5c"> 162</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a33ba03da302bb9b1dc72a20704574b5c">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size )</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  VERIFY_BUFFER( DstOffset + Size <= this->m_Desc.uiSizeInBytes, <span class="stringliteral">"Destination range ["</span>, DstOffset, <span class="stringliteral">","</span>, DstOffset + Size, <span class="stringliteral">") is out of buffer bounds [0,"</span>,this->m_Desc.uiSizeInBytes,<span class="stringliteral">")"</span> );</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  VERIFY_BUFFER( SrcOffset + Size <= pSrcBuffer->GetDesc().uiSizeInBytes, <span class="stringliteral">"Source range ["</span>, SrcOffset, <span class="stringliteral">","</span>, SrcOffset + Size, <span class="stringliteral">") is out of buffer bounds [0,"</span>,this->m_Desc.uiSizeInBytes,<span class="stringliteral">")"</span> );</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a138ba26c24c34b78ea4a0990b77fc14a"> 170</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a138ba26c24c34b78ea4a0990b77fc14a">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData )</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">switch</span>( MapType )</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357a65436444d4034265e317ebc832a56cd4">MAP_READ</a>:</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  VERIFY_BUFFER( this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>, <span class="stringliteral">"Only buffers with usage USAGE_CPU_ACCESSIBLE can be read from"</span> );</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  VERIFY_BUFFER( (this->m_Desc.CPUAccessFlags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364">CPU_ACCESS_READ</a>), <span class="stringliteral">"Buffer being mapped for reading was not created with CPU_ACCESS_READ flag"</span> );</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  VERIFY_BUFFER( (MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a>) == 0, <span class="stringliteral">"MAP_FLAG_DISCARD is not valid when mapping buffer for reading"</span> );</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab">MAP_WRITE</a>:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  VERIFY_BUFFER( this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a> || this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>, <span class="stringliteral">"Only buffers with usage USAGE_CPU_ACCESSIBLE or USAGE_DYNAMIC can be mapped for writing"</span> );</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  VERIFY_BUFFER( (this->m_Desc.CPUAccessFlags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a>), <span class="stringliteral">"Buffer being mapped for writing was not created with CPU_ACCESS_WRITE flag"</span> );</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357af0effcf3a0f2ac99c954744ea9a09f85">MAP_READ_WRITE</a>:</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  VERIFY_BUFFER( this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>, <span class="stringliteral">"Only buffers with usage USAGE_CPU_ACCESSIBLE can be mapped for reading and writing"</span> );</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  VERIFY_BUFFER( (this->m_Desc.CPUAccessFlags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a>), <span class="stringliteral">"Buffer being mapped for reading & writing was not created with CPU_ACCESS_WRITE flag"</span> );</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  VERIFY_BUFFER( (this->m_Desc.CPUAccessFlags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364">CPU_ACCESS_READ</a>), <span class="stringliteral">"Buffer being mapped for reading & writing was not created with CPU_ACCESS_READ flag"</span> );</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  VERIFY_BUFFER( (MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a>) == 0, <span class="stringliteral">"MAP_FLAG_DISCARD is not valid when mapping buffer for reading and writing"</span> );</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknown map type"</span> );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span> (this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  VERIFY((MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a>) != 0 && MapType == <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab">MAP_WRITE</a>, <span class="stringliteral">"Dynamic buffers can only be mapped for writing with discard flag"</span>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span> ( (MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a>) != 0 )</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  VERIFY_BUFFER( this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a> || this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>, <span class="stringliteral">"Only dynamic and staging buffers can be mapped with discard flag"</span> );</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  VERIFY_BUFFER( MapType == <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab">MAP_WRITE</a>, <span class="stringliteral">"MAP_FLAG_DISCARD is only valid when mapping buffer for writing"</span> );</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a36a0b578084d631a5d5547221f1f3eb4"> 208</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a36a0b578084d631a5d5547221f1f3eb4">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#ac67b656289f82ba476c4eaaa4f23fb2f"> 215</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#ac67b656289f82ba476c4eaaa4f23fb2f">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: CreateView</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc, <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> **ppView )</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  CreateViewInternal( ViewDesc, ppView, <span class="keyword">false</span> );</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a92e192b277bb3ee894bec156a3aa4ff1"> 222</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a92e192b277bb3ee894bec156a3aa4ff1">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: CorrectBufferViewDesc</a>( <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc )</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span>( ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a> == 0 )</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a> = this->m_Desc.uiSizeInBytes;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>( ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a> + ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a> > this->m_Desc.uiSizeInBytes )</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  LOG_ERROR_AND_THROW( <span class="stringliteral">"Buffer view range ["</span>, ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a>, <span class="stringliteral">", "</span>, ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a> + ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a>, <span class="stringliteral">") is out of the buffer boundaries [0, "</span>, this->m_Desc.uiSizeInBytes, <span class="stringliteral">")."</span> );</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span>( (this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a>) ||</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  (this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a>) )</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  VERIFY( this->m_Desc.ElementByteStride != 0, <span class="stringliteral">"Element byte stride is zero"</span> );</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>( (ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a> % this->m_Desc.ElementByteStride) != 0 )</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  LOG_ERROR_AND_THROW( <span class="stringliteral">"Buffer view byte offset ("</span>, ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a>, <span class="stringliteral">") is not multiple of element byte stride ("</span>, this->m_Desc.ElementByteStride, <span class="stringliteral">")."</span> );</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span>( (ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a> % this->m_Desc.ElementByteStride) != 0 )</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  LOG_ERROR_AND_THROW( <span class="stringliteral">"Buffer view byte width ("</span>, ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a>, <span class="stringliteral">") is not multiple of element byte stride ("</span>, this->m_Desc.ElementByteStride, <span class="stringliteral">")."</span> );</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a5a63d5d9b3ee50aa33bbfd48204f0108"> 240</a></span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a>* <a class="code" href="class_diligent_1_1_buffer_base.html#a5a63d5d9b3ee50aa33bbfd48204f0108">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> ::GetDefaultView</a>( <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> ViewType )</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">switch</span>( ViewType )</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b">BUFFER_VIEW_SHADER_RESOURCE</a>: <span class="keywordflow">return</span> m_pDefaultSRV.get();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a">BUFFER_VIEW_UNORDERED_ACCESS</a>: <span class="keywordflow">return</span> m_pDefaultUAV.get();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknown view type"</span> ); <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a324143f93e68357ee89c5b3116c2cd6b"> 251</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a324143f93e68357ee89c5b3116c2cd6b">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: CreateDefaultViews</a>()</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>( this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a> )</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> ViewDesc;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a> = <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a">BUFFER_VIEW_UNORDERED_ACCESS</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> *pUAV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  CreateViewInternal( ViewDesc, &pUAV, <span class="keyword">true</span> );</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_pDefaultUAV.reset( static_cast<BufferViewImplType*>(pUAV) );</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  VERIFY( m_pDefaultUAV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a">BUFFER_VIEW_UNORDERED_ACCESS</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">if</span>( this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a> )</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> ViewDesc;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a> = <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b">BUFFER_VIEW_SHADER_RESOURCE</a>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a>* pSRV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  CreateViewInternal( ViewDesc, &pSRV, <span class="keyword">true</span> );</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_pDefaultSRV.reset( static_cast<BufferViewImplType*>(pSRV) );</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  VERIFY( m_pDefaultSRV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b">BUFFER_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> }</div><div class="ttc" id="class_diligent_1_1_buffer_base_html_a92e192b277bb3ee894bec156a3aa4ff1"><div class="ttname"><a href="class_diligent_1_1_buffer_base.html#a92e192b277bb3ee894bec156a3aa4ff1">Diligent::BufferBase::CorrectBufferViewDesc</a></div><div class="ttdeci">void CorrectBufferViewDesc(struct BufferViewDesc &ViewDesc)</div><div class="ttdoc">Corrects buffer view description and validates view parameters. </div><div class="ttdef"><b>Definition:</b> BufferBase.h:222</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a> < BaseInterface, BufferDesc></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, BufferDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#adf6f4c230332562c56285371c20f416c"> 58</a></span>  <a class="code" href="class_diligent_1_1_buffer_base.html#adf6f4c230332562c56285371c20f416c">BufferBase</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  TBuffViewObjAllocator &BuffViewObjAllocator, </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> bIsDeviceInternal) :</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, BuffDesc, bIsDeviceInternal),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> #ifdef _DEBUG</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_dbgBuffViewAllocator(BuffViewObjAllocator),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> #endif</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="class_diligent_1_1_buffer_base.html#af638f9c10f9c317845f1d73e35dccfdf">m_pDefaultUAV</a>(nullptr, STDDeleter<BufferViewImplType, TBuffViewObjAllocator>(BuffViewObjAllocator) ),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="class_diligent_1_1_buffer_base.html#a07d78ac464ec5c8a05900bb4819d164d">m_pDefaultSRV</a>(nullptr, STDDeleter<BufferViewImplType, TBuffViewObjAllocator>(BuffViewObjAllocator) )</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#define VERIFY_BUFFER(Expr, ...) VERIFY(Expr, "Buffer \"", this->m_Desc.Name ? this->m_Desc.Name : "", "\": ", ##__VA_ARGS__)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  Uint32 AllowedBindFlags =</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c">BIND_VERTEX_BUFFER</a> | <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03">BIND_INDEX_BUFFER</a> | <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9">BIND_UNIFORM_BUFFER</a> |</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a> | <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea6e78d02c83dd86d2706c23cb7dc30222">BIND_STREAM_OUTPUT</a> | <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a> |</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea059916f0a480fa57e6e417f8d0acf67f">BIND_INDIRECT_DRAW_ARGS</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">const</span> Char* strAllowedBindFlags =</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="stringliteral">"BIND_VERTEX_BUFFER (1), BIND_INDEX_BUFFER (2), BIND_UNIFORM_BUFFER (4), "</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="stringliteral">"BIND_SHADER_RESOURCE (8), BIND_STREAM_OUTPUT (16), BIND_UNORDERED_ACCESS (128), "</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="stringliteral">"BIND_INDIRECT_DRAW_ARGS (256)"</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  VERIFY_BUFFER( (BuffDesc.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> & ~AllowedBindFlags) == 0, <span class="stringliteral">"Incorrect bind flags specified ("</span>, BuffDesc.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> & ~AllowedBindFlags, <span class="stringliteral">"). Only the following flags are allowed:\n"</span>, strAllowedBindFlags );</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>( (this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a>) ||</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  (this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a>) )</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  VERIFY_BUFFER( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a> > <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa3d5865d8818d99627ffe6775c4c219b2">BUFFER_MODE_UNDEFINED</a> && this->m_Desc.Mode < <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa1ef9cfe62f24d6763f691281ef6c09f5">BUFFER_MODE_NUM_MODES</a>, <span class="stringliteral">"Buffer mode ("</span>, this->m_Desc.Mode, <span class="stringliteral">") is not correct"</span> );</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a> == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa8795c0e51bc4091c1efab4f65e5062e7">BUFFER_MODE_STRUCTURED</a> )</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  VERIFY_BUFFER( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a> != 0, <span class="stringliteral">"Element stride cannot be zero for structured buffer"</span> );</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#accc3f239b5408d849414bcb6baabf6a7">Mode</a> == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daafd0744a938df39ac9cd93fdbf9bb704e">BUFFER_MODE_FORMATTED</a> )</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  VERIFY_BUFFER( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a>.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a> != <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">VT_UNDEFINED</a>, <span class="stringliteral">"Value type is not specified for a formatted buffer"</span> );</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  VERIFY_BUFFER( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a>.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a> != 0, <span class="stringliteral">"Num components cannot be zero in a formatted buffer"</span> );</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a> == 0 )</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#acb6ed74dcef3d9f2e585dff0d69c29cb">ElementByteStride</a> = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(GetValueSize( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a>.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#a014b1706b85db02a1be3799fd74ed9e9">ValueType</a> )) * this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aad6e61d2cd4d66ad3c9fda10e275e296">Format</a>.<a class="code" href="struct_diligent_1_1_buffer_desc_1_1_buffer_format.html#ae037802569e9d4f5c811dbf7c155f0ab">NumComponents</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_Buffer, TDeviceObjectBase )</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#ad470fd908943c4408afcfc4c17abd129">UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a33ba03da302bb9b1dc72a20704574b5c">CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a138ba26c24c34b78ea4a0990b77fc14a">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData )<span class="keyword">override</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a36a0b578084d631a5d5547221f1f3eb4">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#ac67b656289f82ba476c4eaaa4f23fb2f">CreateView</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc, <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> **ppView )<span class="keyword">override</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a>* <a class="code" href="class_diligent_1_1_buffer_base.html#a5a63d5d9b3ee50aa33bbfd48204f0108">GetDefaultView</a>( <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> ViewType )<span class="keyword">override</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a324143f93e68357ee89c5b3116c2cd6b">CreateDefaultViews</a>();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a1a89eae526881930d09a249521af2ed5">CreateViewInternal</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc, <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> **ppView, <span class="keywordtype">bool</span> bIsDefaultView ) = 0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a92e192b277bb3ee894bec156a3aa4ff1">CorrectBufferViewDesc</a>( <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc );</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  TBuffViewObjAllocator &m_dbgBuffViewAllocator;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#af638f9c10f9c317845f1d73e35dccfdf"> 147</a></span>  std::unique_ptr<BufferViewImplType, STDDeleter<BufferViewImplType, TBuffViewObjAllocator> > <a class="code" href="class_diligent_1_1_buffer_base.html#af638f9c10f9c317845f1d73e35dccfdf">m_pDefaultUAV</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a07d78ac464ec5c8a05900bb4819d164d"> 150</a></span>  std::unique_ptr<BufferViewImplType, STDDeleter<BufferViewImplType, TBuffViewObjAllocator> > <a class="code" href="class_diligent_1_1_buffer_base.html#a07d78ac464ec5c8a05900bb4819d164d">m_pDefaultSRV</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> };</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#ad470fd908943c4408afcfc4c17abd129"> 154</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#ad470fd908943c4408afcfc4c17abd129">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData )</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  VERIFY_BUFFER( this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>, <span class="stringliteral">"Only default usage buffers can be updated with UpdateData()"</span> );</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  VERIFY_BUFFER( Offset < this->m_Desc.uiSizeInBytes, <span class="stringliteral">"Offset ("</span>, Offset, <span class="stringliteral">") exceeds the buffer size ("</span>, this->m_Desc.uiSizeInBytes, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  VERIFY_BUFFER( Size + Offset <= this->m_Desc.uiSizeInBytes, <span class="stringliteral">"Update region ["</span>, Offset, <span class="stringliteral">","</span>, Size + Offset, <span class="stringliteral">") is out of buffer bounds [0,"</span>,this->m_Desc.uiSizeInBytes,<span class="stringliteral">")"</span> );</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a33ba03da302bb9b1dc72a20704574b5c"> 162</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a33ba03da302bb9b1dc72a20704574b5c">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size )</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  VERIFY_BUFFER( DstOffset + Size <= this->m_Desc.uiSizeInBytes, <span class="stringliteral">"Destination range ["</span>, DstOffset, <span class="stringliteral">","</span>, DstOffset + Size, <span class="stringliteral">") is out of buffer bounds [0,"</span>,this->m_Desc.uiSizeInBytes,<span class="stringliteral">")"</span> );</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  VERIFY_BUFFER( SrcOffset + Size <= pSrcBuffer->GetDesc().uiSizeInBytes, <span class="stringliteral">"Source range ["</span>, SrcOffset, <span class="stringliteral">","</span>, SrcOffset + Size, <span class="stringliteral">") is out of buffer bounds [0,"</span>,this->m_Desc.uiSizeInBytes,<span class="stringliteral">")"</span> );</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a138ba26c24c34b78ea4a0990b77fc14a"> 170</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a138ba26c24c34b78ea4a0990b77fc14a">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData )</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">switch</span>( MapType )</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357a65436444d4034265e317ebc832a56cd4">MAP_READ</a>:</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  VERIFY_BUFFER( this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>, <span class="stringliteral">"Only buffers with usage USAGE_CPU_ACCESSIBLE can be read from"</span> );</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  VERIFY_BUFFER( (this->m_Desc.CPUAccessFlags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364">CPU_ACCESS_READ</a>), <span class="stringliteral">"Buffer being mapped for reading was not created with CPU_ACCESS_READ flag"</span> );</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  VERIFY_BUFFER( (MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a>) == 0, <span class="stringliteral">"MAP_FLAG_DISCARD is not valid when mapping buffer for reading"</span> );</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab">MAP_WRITE</a>:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  VERIFY_BUFFER( this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a> || this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>, <span class="stringliteral">"Only buffers with usage USAGE_CPU_ACCESSIBLE or USAGE_DYNAMIC can be mapped for writing"</span> );</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  VERIFY_BUFFER( (this->m_Desc.CPUAccessFlags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a>), <span class="stringliteral">"Buffer being mapped for writing was not created with CPU_ACCESS_WRITE flag"</span> );</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357af0effcf3a0f2ac99c954744ea9a09f85">MAP_READ_WRITE</a>:</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  VERIFY_BUFFER( this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>, <span class="stringliteral">"Only buffers with usage USAGE_CPU_ACCESSIBLE can be mapped for reading and writing"</span> );</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  VERIFY_BUFFER( (this->m_Desc.CPUAccessFlags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a>), <span class="stringliteral">"Buffer being mapped for reading & writing was not created with CPU_ACCESS_WRITE flag"</span> );</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  VERIFY_BUFFER( (this->m_Desc.CPUAccessFlags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364">CPU_ACCESS_READ</a>), <span class="stringliteral">"Buffer being mapped for reading & writing was not created with CPU_ACCESS_READ flag"</span> );</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  VERIFY_BUFFER( (MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a>) == 0, <span class="stringliteral">"MAP_FLAG_DISCARD is not valid when mapping buffer for reading and writing"</span> );</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknown map type"</span> );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span> (this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  VERIFY((MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a>) != 0 && MapType == <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab">MAP_WRITE</a>, <span class="stringliteral">"Dynamic buffers can only be mapped for writing with discard flag"</span>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span> ( (MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a>) != 0 )</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  VERIFY_BUFFER( this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a> || this->m_Desc.Usage == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>, <span class="stringliteral">"Only dynamic and staging buffers can be mapped with discard flag"</span> );</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  VERIFY_BUFFER( MapType == <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab">MAP_WRITE</a>, <span class="stringliteral">"MAP_FLAG_DISCARD is only valid when mapping buffer for writing"</span> );</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a36a0b578084d631a5d5547221f1f3eb4"> 208</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a36a0b578084d631a5d5547221f1f3eb4">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#ac67b656289f82ba476c4eaaa4f23fb2f"> 215</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#ac67b656289f82ba476c4eaaa4f23fb2f">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: CreateView</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc, <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> **ppView )</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  CreateViewInternal( ViewDesc, ppView, <span class="keyword">false</span> );</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a92e192b277bb3ee894bec156a3aa4ff1"> 222</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a92e192b277bb3ee894bec156a3aa4ff1">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: CorrectBufferViewDesc</a>( <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc )</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span>( ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a> == 0 )</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a> = this->m_Desc.uiSizeInBytes;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>( ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a> + ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a> > this->m_Desc.uiSizeInBytes )</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  LOG_ERROR_AND_THROW( <span class="stringliteral">"Buffer view range ["</span>, ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a>, <span class="stringliteral">", "</span>, ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a> + ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a>, <span class="stringliteral">") is out of the buffer boundaries [0, "</span>, this->m_Desc.uiSizeInBytes, <span class="stringliteral">")."</span> );</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span>( (this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a>) ||</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  (this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a>) )</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  VERIFY( this->m_Desc.ElementByteStride != 0, <span class="stringliteral">"Element byte stride is zero"</span> );</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>( (ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a> % this->m_Desc.ElementByteStride) != 0 )</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  LOG_ERROR_AND_THROW( <span class="stringliteral">"Buffer view byte offset ("</span>, ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a>, <span class="stringliteral">") is not multiple of element byte stride ("</span>, this->m_Desc.ElementByteStride, <span class="stringliteral">")."</span> );</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span>( (ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a> % this->m_Desc.ElementByteStride) != 0 )</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  LOG_ERROR_AND_THROW( <span class="stringliteral">"Buffer view byte width ("</span>, ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a>, <span class="stringliteral">") is not multiple of element byte stride ("</span>, this->m_Desc.ElementByteStride, <span class="stringliteral">")."</span> );</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a5a63d5d9b3ee50aa33bbfd48204f0108"> 240</a></span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a>* <a class="code" href="class_diligent_1_1_buffer_base.html#a5a63d5d9b3ee50aa33bbfd48204f0108">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> ::GetDefaultView</a>( <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> ViewType )</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">switch</span>( ViewType )</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b">BUFFER_VIEW_SHADER_RESOURCE</a>: <span class="keywordflow">return</span> m_pDefaultSRV.get();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a">BUFFER_VIEW_UNORDERED_ACCESS</a>: <span class="keywordflow">return</span> m_pDefaultUAV.get();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknown view type"</span> ); <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> BufferViewImplType, <span class="keyword">class</span> TBuffViewObjAllocator></div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_base.html#a324143f93e68357ee89c5b3116c2cd6b"> 251</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_base.html#a324143f93e68357ee89c5b3116c2cd6b">BufferBase<BaseInterface, BufferViewImplType, TBuffViewObjAllocator> :: CreateDefaultViews</a>()</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>( this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a> )</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> ViewDesc;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a> = <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a">BUFFER_VIEW_UNORDERED_ACCESS</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> *pUAV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  CreateViewInternal( ViewDesc, &pUAV, <span class="keyword">true</span> );</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_pDefaultUAV.reset( static_cast<BufferViewImplType*>(pUAV) );</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  VERIFY( m_pDefaultUAV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a">BUFFER_VIEW_UNORDERED_ACCESS</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">if</span>( this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a> )</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> ViewDesc;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a> = <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b">BUFFER_VIEW_SHADER_RESOURCE</a>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a>* pSRV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  CreateViewInternal( ViewDesc, &pSRV, <span class="keyword">true</span> );</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_pDefaultSRV.reset( static_cast<BufferViewImplType*>(pSRV) );</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  VERIFY( m_pDefaultSRV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b">BUFFER_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> }</div><div class="ttc" id="class_diligent_1_1_buffer_base_html_a92e192b277bb3ee894bec156a3aa4ff1"><div class="ttname"><a href="class_diligent_1_1_buffer_base.html#a92e192b277bb3ee894bec156a3aa4ff1">Diligent::BufferBase::CorrectBufferViewDesc</a></div><div class="ttdeci">void CorrectBufferViewDesc(struct BufferViewDesc &ViewDesc)</div><div class="ttdoc">Corrects buffer view description and validates view parameters. </div><div class="ttdef"><b>Definition:</b> BufferBase.h:222</div></div> <div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html_ae7f3af81f195fd5c6c25ee9cc274bc55"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">Diligent::BufferViewDesc::ViewType</a></div><div class="ttdeci">BUFFER_VIEW_TYPE ViewType</div><div class="ttdoc">View type. See Diligent::BUFFER_VIEW_TYPE for details. </div><div class="ttdef"><b>Definition:</b> BufferView.h:42</div></div> <div class="ttc" id="class_diligent_1_1_buffer_base_html_a324143f93e68357ee89c5b3116c2cd6b"><div class="ttname"><a href="class_diligent_1_1_buffer_base.html#a324143f93e68357ee89c5b3116c2cd6b">Diligent::BufferBase::CreateDefaultViews</a></div><div class="ttdeci">void CreateDefaultViews()</div><div class="ttdoc">Creates default buffer views. </div><div class="ttdef"><b>Definition:</b> BufferBase.h:251</div></div> <div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> @@ -130,7 +130,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_d3_d11_8h_source.html b/doc/html/_buffer_d3_d11_8h_source.html index f16ed415..d4144857 100644 --- a/doc/html/_buffer_d3_d11_8h_source.html +++ b/doc/html/_buffer_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {4A696D2E-44BB-4C4B-9DE2-3AF7C94DCFC0}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x4a696d2e, 0x44bb, 0x4c4b, { 0x9d, 0xe2, 0x3a, 0xf7, 0xc9, 0x4d, 0xcf, 0xc0 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_d3_d11.html">IBufferD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11Buffer *<a class="code" href="class_diligent_1_1_i_buffer_d3_d11.html#a6d6191d4dfb4bca11e686e45d0fdab10">GetD3D11Buffer</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {4A696D2E-44BB-4C4B-9DE2-3AF7C94DCFC0}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x4a696d2e, 0x44bb, 0x4c4b, { 0x9d, 0xe2, 0x3a, 0xf7, 0xc9, 0x4d, 0xcf, 0xc0 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_d3_d11.html">IBufferD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11Buffer *<a class="code" href="class_diligent_1_1_i_buffer_d3_d11.html#a6d6191d4dfb4bca11e686e45d0fdab10">GetD3D11Buffer</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_d3_d11_html_a6d6191d4dfb4bca11e686e45d0fdab10"><div class="ttname"><a href="class_diligent_1_1_i_buffer_d3_d11.html#a6d6191d4dfb4bca11e686e45d0fdab10">Diligent::IBufferD3D11::GetD3D11Buffer</a></div><div class="ttdeci">virtual ID3D11Buffer * GetD3D11Buffer()=0</div><div class="ttdoc">Returns a pointer to the ID3D11Buffer interface of the internal Direct3D11 object. </div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer.html">Diligent::IBuffer</a></div><div class="ttdoc">Buffer interface. </div><div class="ttdef"><b>Definition:</b> Buffer.h:200</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer_d3_d11.html">Diligent::IBufferD3D11</a></div><div class="ttdoc">Interface to the buffer object implemented in D3D11. </div><div class="ttdef"><b>Definition:</b> BufferD3D11.h:39</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_d3_d11_impl_8h_source.html b/doc/html/_buffer_d3_d11_impl_8h_source.html index 9dbc233c..69a4c95f 100644 --- a/doc/html/_buffer_d3_d11_impl_8h_source.html +++ b/doc/html/_buffer_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BufferBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "BufferViewD3D11Impl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespace_diligent.html"> 34</a></span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">enum class</span> D3D11BufferState</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Undefined = 0x00,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ShaderResource = 0x01,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ConstantBuffer = 0x02,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  VertexBuffer = 0x04,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  IndexBuffer = 0x08,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  UnorderedAccess = 0x10,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  AnyInput = ShaderResource | ConstantBuffer | VertexBuffer | IndexBuffer</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d11_impl.html"> 51</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase</a><IBufferD3D11, BufferViewD3D11Impl, FixedBlockMemoryAllocator></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase<IBufferD3D11, BufferViewD3D11Impl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_buffer_base.html">TBufferBase</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData = <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a>());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  ID3D11Buffer *pd3d11Buffer);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  ~<a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a>();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#a1af9d84c737cae597ffef439e9840508">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#ad05f05b7354d4b03ff042853a5283cda">UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#aad53f09b8042f1293af3298c3997c5d3">CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#a5c77d5f307b1016aa9bbc3324caaa311">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#a3d0b88970c8762a4fd91e0ee96f96d42">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d11_impl.html#ac026d9d84f69c56110b42b4a9e9428f6"> 74</a></span>  <span class="keyword">virtual</span> ID3D11Buffer *<a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#ac026d9d84f69c56110b42b4a9e9428f6">GetD3D11Buffer</a>()override final{ <span class="keywordflow">return</span> m_pd3d11Buffer; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d11_impl.html#a30d720ab9f8db17215ed1894c13943b0"> 76</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#a30d720ab9f8db17215ed1894c13943b0">GetNativeHandle</a>()override final { <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#ac026d9d84f69c56110b42b4a9e9428f6">GetD3D11Buffer</a>(); }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">void</span> ResetState(D3D11BufferState State){m_State = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(State);}</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">void</span> AddState(D3D11BufferState State){m_State |= <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(State);}</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> ClearState(D3D11BufferState State){m_State &= ~static_cast<Uint32>(State);}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">bool</span> CheckState(D3D11BufferState State){<span class="keywordflow">return</span> (m_State & static_cast<Uint32>(State)) ? true : <span class="keyword">false</span>;}</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateViewInternal( <span class="keyword">const</span> <span class="keyword">struct</span> BufferViewDesc &ViewDesc, IBufferView **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> CreateUAV( <span class="keyword">struct</span> BufferViewDesc &UAVDesc, ID3D11UnorderedAccessView **ppD3D11UAV );</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> CreateSRV( <span class="keyword">struct</span> BufferViewDesc &SRVDesc, ID3D11ShaderResourceView **ppD3D11SRV );</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">friend</span> <span class="keyword">class </span>DeviceContextD3D11Impl;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  CComPtr<ID3D11Buffer> m_pd3d11Buffer; </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  Uint32 m_State = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(D3D11BufferState::Undefined);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> };</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_data_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_data.html">Diligent::BufferData</a></div><div class="ttdoc">Describes the buffer initial data. </div><div class="ttdef"><b>Definition:</b> Buffer.h:176</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BufferBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "BufferViewD3D11Impl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespace_diligent.html"> 34</a></span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">enum class</span> D3D11BufferState</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Undefined = 0x00,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ShaderResource = 0x01,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ConstantBuffer = 0x02,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  VertexBuffer = 0x04,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  IndexBuffer = 0x08,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  UnorderedAccess = 0x10,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  AnyInput = ShaderResource | ConstantBuffer | VertexBuffer | IndexBuffer</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d11_impl.html"> 51</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase</a><IBufferD3D11, BufferViewD3D11Impl, FixedBlockMemoryAllocator></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase<IBufferD3D11, BufferViewD3D11Impl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_buffer_base.html">TBufferBase</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData = <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a>());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  ID3D11Buffer *pd3d11Buffer);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  ~<a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a>();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#a1af9d84c737cae597ffef439e9840508">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#ad05f05b7354d4b03ff042853a5283cda">UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#aad53f09b8042f1293af3298c3997c5d3">CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#a5c77d5f307b1016aa9bbc3324caaa311">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#a3d0b88970c8762a4fd91e0ee96f96d42">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d11_impl.html#ac026d9d84f69c56110b42b4a9e9428f6"> 74</a></span>  <span class="keyword">virtual</span> ID3D11Buffer *<a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#ac026d9d84f69c56110b42b4a9e9428f6">GetD3D11Buffer</a>()override final{ <span class="keywordflow">return</span> m_pd3d11Buffer; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d11_impl.html#a30d720ab9f8db17215ed1894c13943b0"> 76</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#a30d720ab9f8db17215ed1894c13943b0">GetNativeHandle</a>()override final { <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html#ac026d9d84f69c56110b42b4a9e9428f6">GetD3D11Buffer</a>(); }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">void</span> ResetState(D3D11BufferState State){m_State = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(State);}</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">void</span> AddState(D3D11BufferState State){m_State |= <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(State);}</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> ClearState(D3D11BufferState State){m_State &= ~static_cast<Uint32>(State);}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">bool</span> CheckState(D3D11BufferState State){<span class="keywordflow">return</span> (m_State & static_cast<Uint32>(State)) ? true : <span class="keyword">false</span>;}</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateViewInternal( <span class="keyword">const</span> <span class="keyword">struct</span> BufferViewDesc &ViewDesc, IBufferView **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> CreateUAV( <span class="keyword">struct</span> BufferViewDesc &UAVDesc, ID3D11UnorderedAccessView **ppD3D11UAV );</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> CreateSRV( <span class="keyword">struct</span> BufferViewDesc &SRVDesc, ID3D11ShaderResourceView **ppD3D11SRV );</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">friend</span> <span class="keyword">class </span>DeviceContextD3D11Impl;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  CComPtr<ID3D11Buffer> m_pd3d11Buffer; </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  Uint32 m_State = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(D3D11BufferState::Undefined);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> };</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_data_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_data.html">Diligent::BufferData</a></div><div class="ttdoc">Describes the buffer initial data. </div><div class="ttdef"><b>Definition:</b> Buffer.h:176</div></div> <div class="ttc" id="class_diligent_1_1_buffer_d3_d11_impl_html_aad53f09b8042f1293af3298c3997c5d3"><div class="ttname"><a href="class_diligent_1_1_buffer_d3_d11_impl.html#aad53f09b8042f1293af3298c3997c5d3">Diligent::BufferD3D11Impl::CopyData</a></div><div class="ttdeci">virtual void CopyData(IDeviceContext *pContext, IBuffer *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size) override final</div><div class="ttdoc">Base implementation of IBuffer::CopyData(); validates input parameters. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.cpp:175</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_buffer_base_html"><div class="ttname"><a href="class_diligent_1_1_buffer_base.html">Diligent::BufferBase</a></div><div class="ttdoc">Template class implementing base functionality for a buffer object. </div><div class="ttdef"><b>Definition:</b> BufferBase.h:46</div></div> @@ -91,7 +91,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_d3_d12_8h_source.html b/doc/html/_buffer_d3_d12_8h_source.html index d878e4ce..14ddf2e7 100644 --- a/doc/html/_buffer_d3_d12_8h_source.html +++ b/doc/html/_buffer_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {3E9B15ED-A289-48DC-8214-C6E3E6177378}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x3e9b15ed, 0xa289, 0x48dc, { 0x82, 0x14, 0xc6, 0xe3, 0xe6, 0x17, 0x73, 0x78 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_d3_d12.html">IBufferD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> ID3D12Resource* <a class="code" href="class_diligent_1_1_i_buffer_d3_d12.html#ab72ec95da670a47d5e973cef765d8c13">GetD3D12Buffer</a>(<span class="keywordtype">size_t</span> &DataStartByteOffset, Uint32 ContextId) = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer_d3_d12.html#a5f6a7c18da3755cbeb63e300a58f593f">SetD3D12ResourceState</a>(D3D12_RESOURCE_STATES state) = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {3E9B15ED-A289-48DC-8214-C6E3E6177378}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x3e9b15ed, 0xa289, 0x48dc, { 0x82, 0x14, 0xc6, 0xe3, 0xe6, 0x17, 0x73, 0x78 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_d3_d12.html">IBufferD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> ID3D12Resource* <a class="code" href="class_diligent_1_1_i_buffer_d3_d12.html#ab72ec95da670a47d5e973cef765d8c13">GetD3D12Buffer</a>(<span class="keywordtype">size_t</span> &DataStartByteOffset, Uint32 ContextId) = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer_d3_d12.html#a5f6a7c18da3755cbeb63e300a58f593f">SetD3D12ResourceState</a>(D3D12_RESOURCE_STATES state) = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_d3_d12_html_ab72ec95da670a47d5e973cef765d8c13"><div class="ttname"><a href="class_diligent_1_1_i_buffer_d3_d12.html#ab72ec95da670a47d5e973cef765d8c13">Diligent::IBufferD3D12::GetD3D12Buffer</a></div><div class="ttdeci">virtual ID3D12Resource * GetD3D12Buffer(size_t &DataStartByteOffset, Uint32 ContextId)=0</div><div class="ttdoc">Returns a pointer to the ID3D12Resource interface of the internal Direct3D12 object. </div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_d3_d12_html_a5f6a7c18da3755cbeb63e300a58f593f"><div class="ttname"><a href="class_diligent_1_1_i_buffer_d3_d12.html#a5f6a7c18da3755cbeb63e300a58f593f">Diligent::IBufferD3D12::SetD3D12ResourceState</a></div><div class="ttdeci">virtual void SetD3D12ResourceState(D3D12_RESOURCE_STATES state)=0</div><div class="ttdoc">Sets the buffer usage state. </div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer.html">Diligent::IBuffer</a></div><div class="ttdoc">Buffer interface. </div><div class="ttdef"><b>Definition:</b> Buffer.h:200</div></div> @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_d3_d12_impl_8h_source.html b/doc/html/_buffer_d3_d12_impl_8h_source.html index b556ffb7..e8314f4b 100644 --- a/doc/html/_buffer_d3_d12_impl_8h_source.html +++ b/doc/html/_buffer_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BufferBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "BufferViewD3D12Impl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "D3D12ResourceBase.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "DynamicUploadHeap.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d12_impl.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase</a><IBufferD3D12, BufferViewD3D12Impl, FixedBlockMemoryAllocator>, <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_d3_d12_resource_base.html">D3D12ResourceBase</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase<IBufferD3D12, BufferViewD3D12Impl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_buffer_base.html">TBufferBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData = <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a>());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator, </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  ID3D12Resource *pd3d12Buffer);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  ~<a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#abd50d823e814256453b8a95f31e64947">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#abcf79071aa2bd6cf5c6559cf9a819348">UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData )<span class="keyword">override</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#a957dcdd040cfbdddb6fce196825227f7">CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size )<span class="keyword">override</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#a88f5c5e31ceaba1e8302415f9579fbd0">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData )<span class="keyword">override</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#a82bc5519edc10eebb0d193ac449339c0">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">void</span> DbgVerifyDynamicAllocation(Uint32 ContextId);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d12_impl.html#af4784a3d597ca9e6e0da4dd6f86532a3"> 69</a></span>  <span class="keyword">virtual</span> ID3D12Resource *<a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#af4784a3d597ca9e6e0da4dd6f86532a3">GetD3D12Buffer</a>(<span class="keywordtype">size_t</span> &DataStartByteOffset, Uint32 ContextId)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  { </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">auto</span> *pd3d12Resource = GetD3D12Resource();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(pd3d12Resource != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  VERIFY(<a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a> != <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a> || (<a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> | (<a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a>|<a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a>)) != 0, <span class="stringliteral">"Expected non-dynamic buffer or a buffer with SRV or UAV bind flags"</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  DataStartByteOffset = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> pd3d12Resource; </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  VERIFY(<a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a> == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>, <span class="stringliteral">"Dynamic buffer is expected"</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  DbgVerifyDynamicAllocation(ContextId);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  DataStartByteOffset = m_DynamicData[ContextId].Offset;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> m_DynamicData[ContextId].pBuffer;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d12_impl.html#ab7bceac628b84b1375fb43180e33edf0"> 90</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#ab7bceac628b84b1375fb43180e33edf0">GetNativeHandle</a>()override final</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  { </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  VERIFY(GetD3D12Resource() != <span class="keyword">nullptr</span>, <span class="stringliteral">"The buffer is dynamic and has no pointer to D3D12 resource"</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">size_t</span> DataStartByteOffset = 0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">auto</span> *pd3d12Buffer = <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#af4784a3d597ca9e6e0da4dd6f86532a3">GetD3D12Buffer</a>(DataStartByteOffset, 0); </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  VERIFY(DataStartByteOffset == 0, <span class="stringliteral">"0 offset expected"</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> pd3d12Buffer;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d12_impl.html#afc837f7cc6419b74be0c269d7b1969be"> 99</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#afc837f7cc6419b74be0c269d7b1969be">SetD3D12ResourceState</a>(D3D12_RESOURCE_STATES state)<span class="keyword">override</span> <span class="keyword">final</span>{ SetState(state); }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  D3D12_GPU_VIRTUAL_ADDRESS GetGPUAddress(Uint32 ContextId)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(<a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a> == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  DbgVerifyDynamicAllocation(ContextId);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> m_DynamicData[ContextId].GPUAddress;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> GetD3D12Resource()->GetGPUVirtualAddress();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  D3D12_CPU_DESCRIPTOR_HANDLE GetCBVHandle(){<span class="keywordflow">return</span> m_CBVDescriptorAllocation.GetCpuHandle();}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateViewInternal( <span class="keyword">const</span> <span class="keyword">struct</span> BufferViewDesc &ViewDesc, IBufferView **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> CreateUAV( <span class="keyword">struct</span> BufferViewDesc &UAVDesc, D3D12_CPU_DESCRIPTOR_HANDLE UAVDescriptor );</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> CreateSRV( <span class="keyword">struct</span> BufferViewDesc &SRVDesc, D3D12_CPU_DESCRIPTOR_HANDLE SRVDescriptor );</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">void</span> CreateCBV( D3D12_CPU_DESCRIPTOR_HANDLE CBVDescriptor );</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  DescriptorHeapAllocation m_CBVDescriptorAllocation;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  std::vector< std::pair<MAP_TYPE, Uint32>, STDAllocatorRawMem<std::pair<MAP_TYPE, Uint32>> > m_DbgMapType;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">friend</span> <span class="keyword">class </span>DeviceContextD3D12Impl;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// Array of dynamic allocations for every device context</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  std::vector<DynamicAllocation, STDAllocatorRawMem<DynamicAllocation> > m_DynamicData;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> };</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_data_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_data.html">Diligent::BufferData</a></div><div class="ttdoc">Describes the buffer initial data. </div><div class="ttdef"><b>Definition:</b> Buffer.h:176</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BufferBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "BufferViewD3D12Impl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "D3D12ResourceBase.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "DynamicUploadHeap.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d12_impl.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase</a><IBufferD3D12, BufferViewD3D12Impl, FixedBlockMemoryAllocator>, <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_d3_d12_resource_base.html">D3D12ResourceBase</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase<IBufferD3D12, BufferViewD3D12Impl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_buffer_base.html">TBufferBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData = <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a>());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator, </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  ID3D12Resource *pd3d12Buffer);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  ~<a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#abd50d823e814256453b8a95f31e64947">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#abcf79071aa2bd6cf5c6559cf9a819348">UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData )<span class="keyword">override</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#a957dcdd040cfbdddb6fce196825227f7">CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size )<span class="keyword">override</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#a88f5c5e31ceaba1e8302415f9579fbd0">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData )<span class="keyword">override</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#a82bc5519edc10eebb0d193ac449339c0">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">void</span> DbgVerifyDynamicAllocation(Uint32 ContextId);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d12_impl.html#af4784a3d597ca9e6e0da4dd6f86532a3"> 69</a></span>  <span class="keyword">virtual</span> ID3D12Resource *<a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#af4784a3d597ca9e6e0da4dd6f86532a3">GetD3D12Buffer</a>(<span class="keywordtype">size_t</span> &DataStartByteOffset, Uint32 ContextId)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  { </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">auto</span> *pd3d12Resource = GetD3D12Resource();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(pd3d12Resource != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  VERIFY(<a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a> != <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a> || (<a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#aa03cc2547017b124a690a50611f20b06">BindFlags</a> | (<a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a>|<a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a>)) != 0, <span class="stringliteral">"Expected non-dynamic buffer or a buffer with SRV or UAV bind flags"</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  DataStartByteOffset = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> pd3d12Resource; </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  VERIFY(<a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a> == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>, <span class="stringliteral">"Dynamic buffer is expected"</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  DbgVerifyDynamicAllocation(ContextId);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  DataStartByteOffset = m_DynamicData[ContextId].Offset;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> m_DynamicData[ContextId].pBuffer;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d12_impl.html#ab7bceac628b84b1375fb43180e33edf0"> 90</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#ab7bceac628b84b1375fb43180e33edf0">GetNativeHandle</a>()override final</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  { </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  VERIFY(GetD3D12Resource() != <span class="keyword">nullptr</span>, <span class="stringliteral">"The buffer is dynamic and has no pointer to D3D12 resource"</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">size_t</span> DataStartByteOffset = 0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">auto</span> *pd3d12Buffer = <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#af4784a3d597ca9e6e0da4dd6f86532a3">GetD3D12Buffer</a>(DataStartByteOffset, 0); </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  VERIFY(DataStartByteOffset == 0, <span class="stringliteral">"0 offset expected"</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> pd3d12Buffer;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_d3_d12_impl.html#afc837f7cc6419b74be0c269d7b1969be"> 99</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html#afc837f7cc6419b74be0c269d7b1969be">SetD3D12ResourceState</a>(D3D12_RESOURCE_STATES state)<span class="keyword">override</span> <span class="keyword">final</span>{ SetState(state); }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  D3D12_GPU_VIRTUAL_ADDRESS GetGPUAddress(Uint32 ContextId)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(<a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_buffer_desc.html#a6f7b6c6ec7a2d6fd986ae2c2af9f315d">Usage</a> == <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  DbgVerifyDynamicAllocation(ContextId);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> m_DynamicData[ContextId].GPUAddress;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> GetD3D12Resource()->GetGPUVirtualAddress();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  D3D12_CPU_DESCRIPTOR_HANDLE GetCBVHandle(){<span class="keywordflow">return</span> m_CBVDescriptorAllocation.GetCpuHandle();}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateViewInternal( <span class="keyword">const</span> <span class="keyword">struct</span> BufferViewDesc &ViewDesc, IBufferView **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> CreateUAV( <span class="keyword">struct</span> BufferViewDesc &UAVDesc, D3D12_CPU_DESCRIPTOR_HANDLE UAVDescriptor );</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> CreateSRV( <span class="keyword">struct</span> BufferViewDesc &SRVDesc, D3D12_CPU_DESCRIPTOR_HANDLE SRVDescriptor );</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">void</span> CreateCBV( D3D12_CPU_DESCRIPTOR_HANDLE CBVDescriptor );</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  DescriptorHeapAllocation m_CBVDescriptorAllocation;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  std::vector< std::pair<MAP_TYPE, Uint32>, STDAllocatorRawMem<std::pair<MAP_TYPE, Uint32>> > m_DbgMapType;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">friend</span> <span class="keyword">class </span>DeviceContextD3D12Impl;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// Array of dynamic allocations for every device context</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  std::vector<DynamicAllocation, STDAllocatorRawMem<DynamicAllocation> > m_DynamicData;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> };</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_data_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_data.html">Diligent::BufferData</a></div><div class="ttdoc">Describes the buffer initial data. </div><div class="ttdef"><b>Definition:</b> Buffer.h:176</div></div> <div class="ttc" id="class_diligent_1_1_buffer_d3_d12_impl_html_af4784a3d597ca9e6e0da4dd6f86532a3"><div class="ttname"><a href="class_diligent_1_1_buffer_d3_d12_impl.html#af4784a3d597ca9e6e0da4dd6f86532a3">Diligent::BufferD3D12Impl::GetD3D12Buffer</a></div><div class="ttdeci">virtual ID3D12Resource * GetD3D12Buffer(size_t &DataStartByteOffset, Uint32 ContextId) override final</div><div class="ttdoc">Returns a pointer to the ID3D12Resource interface of the internal Direct3D12 object. </div><div class="ttdef"><b>Definition:</b> BufferD3D12Impl.h:69</div></div> <div class="ttc" id="class_diligent_1_1_buffer_d3_d12_impl_html"><div class="ttname"><a href="class_diligent_1_1_buffer_d3_d12_impl.html">Diligent::BufferD3D12Impl</a></div><div class="ttdoc">Implementation of the Diligent::IBufferD3D12 interface. </div><div class="ttdef"><b>Definition:</b> BufferD3D12Impl.h:42</div></div> <div class="ttc" id="namespace_diligent_html_ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138"><div class="ttname"><a href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">Diligent::BIND_SHADER_RESOURCE</a></div><div class="ttdoc">A buffer or a texture can be bound as a shader resource. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:68</div></div> @@ -99,7 +99,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_g_l_8h_source.html b/doc/html/_buffer_g_l_8h_source.html index 1d82ffa1..79b003c4 100644 --- a/doc/html/_buffer_g_l_8h_source.html +++ b/doc/html/_buffer_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {08DF7319-F425-4EC7-8D2B-1B3FC0BDDBB4}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x8df7319, 0xf425, 0x4ec7, { 0x8d, 0x2b, 0x1b, 0x3f, 0xc0, 0xbd, 0xdb, 0xb4 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_g_l.html">IBufferGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> GLuint <a class="code" href="class_diligent_1_1_i_buffer_g_l.html#aeeeb583db75dcd00f9971ae03f8030d5">GetGLBufferHandle</a>() = 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {08DF7319-F425-4EC7-8D2B-1B3FC0BDDBB4}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x8df7319, 0xf425, 0x4ec7, { 0x8d, 0x2b, 0x1b, 0x3f, 0xc0, 0xbd, 0xdb, 0xb4 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_g_l.html">IBufferGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> GLuint <a class="code" href="class_diligent_1_1_i_buffer_g_l.html#aeeeb583db75dcd00f9971ae03f8030d5">GetGLBufferHandle</a>() = 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer.html">Diligent::IBuffer</a></div><div class="ttdoc">Buffer interface. </div><div class="ttdef"><b>Definition:</b> Buffer.h:200</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_g_l_html_aeeeb583db75dcd00f9971ae03f8030d5"><div class="ttname"><a href="class_diligent_1_1_i_buffer_g_l.html#aeeeb583db75dcd00f9971ae03f8030d5">Diligent::IBufferGL::GetGLBufferHandle</a></div><div class="ttdeci">virtual GLuint GetGLBufferHandle()=0</div><div class="ttdoc">Returns OpenGL buffer handle. </div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer_g_l.html">Diligent::IBufferGL</a></div><div class="ttdoc">Interface to the buffer object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> BufferGL.h:39</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_g_l_impl_8h_source.html b/doc/html/_buffer_g_l_impl_8h_source.html index 59c6a31b..51bc84e4 100644 --- a/doc/html/_buffer_g_l_impl_8h_source.html +++ b/doc/html/_buffer_g_l_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferGLImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BufferGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BufferBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "AsyncWritableResource.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BufferViewGLImpl.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_g_l_impl.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase</a><IBufferGL, BufferViewGLImpl, FixedBlockMemoryAllocator>, <span class="keyword">public</span> AsyncWritableResource</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase<IBufferGL, BufferViewGLImpl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_buffer_base.html">TBufferBase</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a>& BuffData,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator, </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  GLuint GLHandle,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  ~<a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#a63eaa44c4730d09a494795b22bea0da6">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#ad13e71c052046cd38e5cc1d72ff3db70">UpdateData</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData)<span class="keyword">override</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#af473d6688b26bed7bd0683786aba3dee">CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size )<span class="keyword">override</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#a977490e09a76cc67cbc46ff9ca56f2e9">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData )<span class="keyword">override</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#ae811627a470253192a9b34a578987986">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">void</span> BufferMemoryBarrier( Uint32 RequiredBarriers, <span class="keyword">class</span> GLContextState &GLContextState );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">const</span> GLObjectWrappers::GLBufferObj& GetGLHandle(){ <span class="keywordflow">return</span> m_GlBuffer; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_g_l_impl.html#a22b80eebb5f8c8858ddc8c7d80085b2a"> 71</a></span>  <span class="keyword">virtual</span> GLuint <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#a22b80eebb5f8c8858ddc8c7d80085b2a">GetGLBufferHandle</a>()override final { <span class="keywordflow">return</span> GetGLHandle(); }</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_g_l_impl.html#ab335433ff0d1e55ca1ca916abcc90e5c"> 72</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#ab335433ff0d1e55ca1ca916abcc90e5c">GetNativeHandle</a>()override final { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(<a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#a22b80eebb5f8c8858ddc8c7d80085b2a">GetGLBufferHandle</a>())); }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateViewInternal( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">friend</span> <span class="keyword">class </span>VAOCache;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  GLObjectWrappers::GLBufferObj m_GlBuffer;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Uint32 m_uiMapTarget;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> GLenum m_GLUsageHint;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> Bool m_bUseMapWriteDiscardBugWA;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> };</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="ttc" id="class_diligent_1_1_buffer_g_l_impl_html_ab335433ff0d1e55ca1ca916abcc90e5c"><div class="ttname"><a href="class_diligent_1_1_buffer_g_l_impl.html#ab335433ff0d1e55ca1ca916abcc90e5c">Diligent::BufferGLImpl::GetNativeHandle</a></div><div class="ttdeci">virtual void * GetNativeHandle() override final</div><div class="ttdoc">Returns native buffer handle specific to the underlying graphics API. </div><div class="ttdef"><b>Definition:</b> BufferGLImpl.h:72</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BufferGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BufferBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "AsyncWritableResource.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BufferViewGLImpl.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_g_l_impl.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase</a><IBufferGL, BufferViewGLImpl, FixedBlockMemoryAllocator>, <span class="keyword">public</span> AsyncWritableResource</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_base.html">BufferBase<IBufferGL, BufferViewGLImpl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_buffer_base.html">TBufferBase</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a>& BuffData,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &BuffViewObjMemAllocator, </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  GLuint GLHandle,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  ~<a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#a63eaa44c4730d09a494795b22bea0da6">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#ad13e71c052046cd38e5cc1d72ff3db70">UpdateData</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Offset, Uint32 Size, <span class="keyword">const</span> PVoid pData)<span class="keyword">override</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#af473d6688b26bed7bd0683786aba3dee">CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size )<span class="keyword">override</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#a977490e09a76cc67cbc46ff9ca56f2e9">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, PVoid &pMappedData )<span class="keyword">override</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#ae811627a470253192a9b34a578987986">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">void</span> BufferMemoryBarrier( Uint32 RequiredBarriers, <span class="keyword">class</span> GLContextState &GLContextState );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">const</span> GLObjectWrappers::GLBufferObj& GetGLHandle(){ <span class="keywordflow">return</span> m_GlBuffer; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_g_l_impl.html#a22b80eebb5f8c8858ddc8c7d80085b2a"> 71</a></span>  <span class="keyword">virtual</span> GLuint <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#a22b80eebb5f8c8858ddc8c7d80085b2a">GetGLBufferHandle</a>()override final { <span class="keywordflow">return</span> GetGLHandle(); }</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_g_l_impl.html#ab335433ff0d1e55ca1ca916abcc90e5c"> 72</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#ab335433ff0d1e55ca1ca916abcc90e5c">GetNativeHandle</a>()override final { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(<a class="code" href="class_diligent_1_1_buffer_g_l_impl.html#a22b80eebb5f8c8858ddc8c7d80085b2a">GetGLBufferHandle</a>())); }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateViewInternal( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> &ViewDesc, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">friend</span> <span class="keyword">class </span>VAOCache;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  GLObjectWrappers::GLBufferObj m_GlBuffer;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Uint32 m_uiMapTarget;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> GLenum m_GLUsageHint;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> Bool m_bUseMapWriteDiscardBugWA;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> };</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="ttc" id="class_diligent_1_1_buffer_g_l_impl_html_ab335433ff0d1e55ca1ca916abcc90e5c"><div class="ttname"><a href="class_diligent_1_1_buffer_g_l_impl.html#ab335433ff0d1e55ca1ca916abcc90e5c">Diligent::BufferGLImpl::GetNativeHandle</a></div><div class="ttdeci">virtual void * GetNativeHandle() override final</div><div class="ttdoc">Returns native buffer handle specific to the underlying graphics API. </div><div class="ttdef"><b>Definition:</b> BufferGLImpl.h:72</div></div> <div class="ttc" id="class_diligent_1_1_buffer_g_l_impl_html_ae811627a470253192a9b34a578987986"><div class="ttname"><a href="class_diligent_1_1_buffer_g_l_impl.html#ae811627a470253192a9b34a578987986">Diligent::BufferGLImpl::Unmap</a></div><div class="ttdeci">virtual void Unmap(IDeviceContext *pContext, MAP_TYPE MapType, Uint32 MapFlags) override</div><div class="ttdoc">Base implementation of IBuffer::Unmap() </div><div class="ttdef"><b>Definition:</b> BufferGLImpl.cpp:314</div></div> <div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> <div class="ttc" id="struct_diligent_1_1_buffer_data_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_data.html">Diligent::BufferData</a></div><div class="ttdoc">Describes the buffer initial data. </div><div class="ttdef"><b>Definition:</b> Buffer.h:176</div></div> @@ -94,7 +94,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_view_8h_source.html b/doc/html/_buffer_view_8h_source.html index f89c585a..967ba742 100644 --- a/doc/html/_buffer_view_8h_source.html +++ b/doc/html/_buffer_view_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferView.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {E2E83490-E9D2-495B-9A83-ABB413A38B07}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferView =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xe2e83490, 0xe9d2, 0x495b, { 0x9a, 0x83, 0xab, 0xb4, 0x13, 0xa3, 0x8b, 0x7 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html"> 39</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55"> 42</a></span>  <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e"> 46</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba"> 49</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html#af850846cc7e46e2eb2139186671989fa"> 59</a></span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#af850846cc7e46e2eb2139186671989fa">BufferViewDesc</a>() :</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a>( <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14aec8a0f6db367c6d64f2029d60570e86f">BUFFER_VIEW_UNDEFINED</a> ),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a>(0),</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a>(0)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html#a80d03a4bc5440858b808ffc2d02d3d12"> 74</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a80d03a4bc5440858b808ffc2d02d3d12">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// Name is primarily used for debug purposes and does not affect the view.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// It is ignored in comparison operation.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="comment">//strcmp(Name, RHS.Name) == 0 &&</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a> &&</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a>== RHS.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a> &&</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> };</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_view.html"> 91</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html#ae5ca7e9a14b75d7f711a7bacaafb34b9">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& <a class="code" href="class_diligent_1_1_i_buffer_view.html#a887ef2a08807fdb570f7a55ef3429825">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a>* <a class="code" href="class_diligent_1_1_i_buffer_view.html#afbefc226d6dfdab0369e465dc04a5832">GetBuffer</a>() = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="ttc" id="class_diligent_1_1_i_buffer_view_html_afbefc226d6dfdab0369e465dc04a5832"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view.html#afbefc226d6dfdab0369e465dc04a5832">Diligent::IBufferView::GetBuffer</a></div><div class="ttdeci">virtual IBuffer * GetBuffer()=0</div><div class="ttdoc">Returns pointer to the referenced buffer object. </div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {E2E83490-E9D2-495B-9A83-ABB413A38B07}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferView =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xe2e83490, 0xe9d2, 0x495b, { 0x9a, 0x83, 0xab, 0xb4, 0x13, 0xa3, 0x8b, 0x7 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html"> 39</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55"> 42</a></span>  <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e"> 46</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba"> 49</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html#af850846cc7e46e2eb2139186671989fa"> 59</a></span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#af850846cc7e46e2eb2139186671989fa">BufferViewDesc</a>() :</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a>( <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14aec8a0f6db367c6d64f2029d60570e86f">BUFFER_VIEW_UNDEFINED</a> ),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a>(0),</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a>(0)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_buffer_view_desc.html#a80d03a4bc5440858b808ffc2d02d3d12"> 74</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a80d03a4bc5440858b808ffc2d02d3d12">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// Name is primarily used for debug purposes and does not affect the view.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// It is ignored in comparison operation.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="comment">//strcmp(Name, RHS.Name) == 0 &&</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">ViewType</a> &&</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a>== RHS.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#a2e3849db8f49ddca6d7ee5c8c2fae36e">ByteOffset</a> &&</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a> == RHS.<a class="code" href="struct_diligent_1_1_buffer_view_desc.html#ac09688fcf3faf4dc4f2497cf0d0461ba">ByteWidth</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> };</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_view.html"> 91</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html#ae5ca7e9a14b75d7f711a7bacaafb34b9">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& <a class="code" href="class_diligent_1_1_i_buffer_view.html#a887ef2a08807fdb570f7a55ef3429825">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a>* <a class="code" href="class_diligent_1_1_i_buffer_view.html#afbefc226d6dfdab0369e465dc04a5832">GetBuffer</a>() = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="ttc" id="class_diligent_1_1_i_buffer_view_html_afbefc226d6dfdab0369e465dc04a5832"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view.html#afbefc226d6dfdab0369e465dc04a5832">Diligent::IBufferView::GetBuffer</a></div><div class="ttdeci">virtual IBuffer * GetBuffer()=0</div><div class="ttdoc">Returns pointer to the referenced buffer object. </div></div> <div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html_ae7f3af81f195fd5c6c25ee9cc274bc55"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html#ae7f3af81f195fd5c6c25ee9cc274bc55">Diligent::BufferViewDesc::ViewType</a></div><div class="ttdeci">BUFFER_VIEW_TYPE ViewType</div><div class="ttdoc">View type. See Diligent::BUFFER_VIEW_TYPE for details. </div><div class="ttdef"><b>Definition:</b> BufferView.h:42</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_view_html_a887ef2a08807fdb570f7a55ef3429825"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view.html#a887ef2a08807fdb570f7a55ef3429825">Diligent::IBufferView::GetDesc</a></div><div class="ttdeci">virtual const BufferViewDesc & GetDesc() const =0</div><div class="ttdoc">Returns the buffer view description used to create the object. </div></div> <div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> @@ -90,7 +90,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_view_base_8h_source.html b/doc/html/_buffer_view_base_8h_source.html index 6c534b50..ca1bb5dd 100644 --- a/doc/html/_buffer_view_base_8h_source.html +++ b/doc/html/_buffer_view_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferViewBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>IRenderDevice;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>IBuffer;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_base.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, BufferViewDesc></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, BufferViewDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_base.html#a7c5098e6cc1093d022aa4bb7a90166a7"> 58</a></span>  <a class="code" href="class_diligent_1_1_buffer_view_base.html#a7c5098e6cc1093d022aa4bb7a90166a7">BufferViewBase</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> bIsDefaultView ) :</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// Default views are created as part of the buffer, so we cannot not keep strong </span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// reference to the buffer to avoid cyclic links. Instead, we will attach to the </span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// reference counters of the buffer.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, ViewDesc),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="class_diligent_1_1_buffer_view_base.html#a52e611ba9e96dd4cc985b9f77588529c">m_pBuffer</a>( pBuffer ),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// For non-default view, we will keep strong reference to buffer</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_diligent_1_1_buffer_view_base.html#ae76607f4c09fb252ffc0f5e5c433d5dd">m_spBuffer</a>(bIsDefaultView ? nullptr : pBuffer)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_BufferView, TDeviceObjectBase )</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_base.html#a4e5e418edc518b72f448a256fce14361"> 75</a></span>  virtual <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a>* <a class="code" href="class_diligent_1_1_buffer_view_base.html#a4e5e418edc518b72f448a256fce14361">GetBuffer</a>()override final</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html#a52e611ba9e96dd4cc985b9f77588529c">m_pBuffer</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_base.html#a52e611ba9e96dd4cc985b9f77588529c"> 83</a></span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a>* <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html#a52e611ba9e96dd4cc985b9f77588529c">m_pBuffer</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_base.html#ae76607f4c09fb252ffc0f5e5c433d5dd"> 87</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IBuffer></a> <a class="code" href="class_diligent_1_1_buffer_view_base.html#ae76607f4c09fb252ffc0f5e5c433d5dd">m_spBuffer</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> };</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div><div class="ttc" id="class_diligent_1_1_buffer_view_base_html_a52e611ba9e96dd4cc985b9f77588529c"><div class="ttname"><a href="class_diligent_1_1_buffer_view_base.html#a52e611ba9e96dd4cc985b9f77588529c">Diligent::BufferViewBase::m_pBuffer</a></div><div class="ttdeci">IBuffer *const m_pBuffer</div><div class="ttdoc">Pointer to the buffer. </div><div class="ttdef"><b>Definition:</b> BufferViewBase.h:83</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>IRenderDevice;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>IBuffer;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_base.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, BufferViewDesc></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, BufferViewDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_base.html#a7c5098e6cc1093d022aa4bb7a90166a7"> 58</a></span>  <a class="code" href="class_diligent_1_1_buffer_view_base.html#a7c5098e6cc1093d022aa4bb7a90166a7">BufferViewBase</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> bIsDefaultView ) :</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// Default views are created as part of the buffer, so we cannot not keep strong </span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// reference to the buffer to avoid cyclic links. Instead, we will attach to the </span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// reference counters of the buffer.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, ViewDesc),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="class_diligent_1_1_buffer_view_base.html#a52e611ba9e96dd4cc985b9f77588529c">m_pBuffer</a>( pBuffer ),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// For non-default view, we will keep strong reference to buffer</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_diligent_1_1_buffer_view_base.html#ae76607f4c09fb252ffc0f5e5c433d5dd">m_spBuffer</a>(bIsDefaultView ? nullptr : pBuffer)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_BufferView, TDeviceObjectBase )</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_base.html#a4e5e418edc518b72f448a256fce14361"> 75</a></span>  virtual <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a>* <a class="code" href="class_diligent_1_1_buffer_view_base.html#a4e5e418edc518b72f448a256fce14361">GetBuffer</a>()override final</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html#a52e611ba9e96dd4cc985b9f77588529c">m_pBuffer</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_base.html#a52e611ba9e96dd4cc985b9f77588529c"> 83</a></span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a>* <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html#a52e611ba9e96dd4cc985b9f77588529c">m_pBuffer</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_base.html#ae76607f4c09fb252ffc0f5e5c433d5dd"> 87</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IBuffer></a> <a class="code" href="class_diligent_1_1_buffer_view_base.html#ae76607f4c09fb252ffc0f5e5c433d5dd">m_spBuffer</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> };</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div><div class="ttc" id="class_diligent_1_1_buffer_view_base_html_a52e611ba9e96dd4cc985b9f77588529c"><div class="ttname"><a href="class_diligent_1_1_buffer_view_base.html#a52e611ba9e96dd4cc985b9f77588529c">Diligent::BufferViewBase::m_pBuffer</a></div><div class="ttdeci">IBuffer *const m_pBuffer</div><div class="ttdoc">Pointer to the buffer. </div><div class="ttdef"><b>Definition:</b> BufferViewBase.h:83</div></div> <div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_buffer_view_base_html_ae76607f4c09fb252ffc0f5e5c433d5dd"><div class="ttname"><a href="class_diligent_1_1_buffer_view_base.html#ae76607f4c09fb252ffc0f5e5c433d5dd">Diligent::BufferViewBase::m_spBuffer</a></div><div class="ttdeci">RefCntAutoPtr< IBuffer > m_spBuffer</div><div class="ttdoc">Strong reference to the buffer. Used for non-default views to keep the buffer alive. </div><div class="ttdef"><b>Definition:</b> BufferViewBase.h:87</div></div> @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_view_d3_d11_8h_source.html b/doc/html/_buffer_view_d3_d11_8h_source.html index 34c70ce8..881b43ef 100644 --- a/doc/html/_buffer_view_d3_d11_8h_source.html +++ b/doc/html/_buffer_view_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferViewD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {6ABA95FC-CD7D-4C03-8CAE-AFC45F9696B7}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferViewD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x6aba95fc, 0xcd7d, 0x4c03, { 0x8c, 0xae, 0xaf, 0xc4, 0x5f, 0x96, 0x96, 0xb7 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_view_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_view_d3_d11.html">IBufferViewD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11View* <a class="code" href="class_diligent_1_1_i_buffer_view_d3_d11.html#a50f76fdf2c8139ec6db2623a91053a50">GetD3D11View</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {6ABA95FC-CD7D-4C03-8CAE-AFC45F9696B7}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferViewD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x6aba95fc, 0xcd7d, 0x4c03, { 0x8c, 0xae, 0xaf, 0xc4, 0x5f, 0x96, 0x96, 0xb7 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_view_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_view_d3_d11.html">IBufferViewD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11View* <a class="code" href="class_diligent_1_1_i_buffer_view_d3_d11.html#a50f76fdf2c8139ec6db2623a91053a50">GetD3D11View</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_view_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view_d3_d11.html">Diligent::IBufferViewD3D11</a></div><div class="ttdoc">Interface to the buffer view object implemented in D3D11. </div><div class="ttdef"><b>Definition:</b> BufferViewD3D11.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_view_d3_d11_html_a50f76fdf2c8139ec6db2623a91053a50"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view_d3_d11.html#a50f76fdf2c8139ec6db2623a91053a50">Diligent::IBufferViewD3D11::GetD3D11View</a></div><div class="ttdeci">virtual ID3D11View * GetD3D11View()=0</div><div class="ttdoc">Returns a pointer to the ID3D11View interface of the internal Direct3D11 object. </div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_view_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view.html">Diligent::IBufferView</a></div><div class="ttdoc">Buffer view interface. </div><div class="ttdef"><b>Definition:</b> BufferView.h:91</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_view_d3_d11_impl_8h_source.html b/doc/html/_buffer_view_d3_d11_impl_8h_source.html index bca53197..270fc8d8 100644 --- a/doc/html/_buffer_view_d3_d11_impl_8h_source.html +++ b/doc/html/_buffer_view_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferViewD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferViewD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BufferViewBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_d3_d11_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html">BufferViewD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase</a><IBufferViewD3D11></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase<IBufferViewD3D11></a> <a class="code" href="class_diligent_1_1_buffer_view_base.html">TBufferViewBase</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html">BufferViewD3D11Impl</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ID3D11View* pD3D11View,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDefaultView);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#a5a010417880df870c0cdfb01e0c6cbdc">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#a71c339867d2edf58baa2c6bd80afce2c"> 52</a></span>  <span class="keyword">virtual</span> ID3D11View* <a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#a71c339867d2edf58baa2c6bd80afce2c">GetD3D11View</a>()override final</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#aa3e99b86b544dbb84e4b7eb725627dca">m_pD3D11View</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#aa3e99b86b544dbb84e4b7eb725627dca"> 58</a></span>  CComPtr<ID3D11View> <a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#aa3e99b86b544dbb84e4b7eb725627dca">m_pD3D11View</a>; </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferViewD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BufferViewBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_d3_d11_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html">BufferViewD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase</a><IBufferViewD3D11></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase<IBufferViewD3D11></a> <a class="code" href="class_diligent_1_1_buffer_view_base.html">TBufferViewBase</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html">BufferViewD3D11Impl</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ID3D11View* pD3D11View,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDefaultView);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#a5a010417880df870c0cdfb01e0c6cbdc">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#a71c339867d2edf58baa2c6bd80afce2c"> 52</a></span>  <span class="keyword">virtual</span> ID3D11View* <a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#a71c339867d2edf58baa2c6bd80afce2c">GetD3D11View</a>()override final</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#aa3e99b86b544dbb84e4b7eb725627dca">m_pD3D11View</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#aa3e99b86b544dbb84e4b7eb725627dca"> 58</a></span>  CComPtr<ID3D11View> <a class="code" href="class_diligent_1_1_buffer_view_d3_d11_impl.html#aa3e99b86b544dbb84e4b7eb725627dca">m_pD3D11View</a>; </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_buffer_view_d3_d11_impl_html_aa3e99b86b544dbb84e4b7eb725627dca"><div class="ttname"><a href="class_diligent_1_1_buffer_view_d3_d11_impl.html#aa3e99b86b544dbb84e4b7eb725627dca">Diligent::BufferViewD3D11Impl::m_pD3D11View</a></div><div class="ttdeci">CComPtr< ID3D11View > m_pD3D11View</div><div class="ttdoc">D3D11 view. </div><div class="ttdef"><b>Definition:</b> BufferViewD3D11Impl.h:58</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_view_d3_d12_8h_source.html b/doc/html/_buffer_view_d3_d12_8h_source.html index 28670025..fab4e6f2 100644 --- a/doc/html/_buffer_view_d3_d12_8h_source.html +++ b/doc/html/_buffer_view_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferViewD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {09643F2F-40D4-4076-B086-9E5CDC2CC4FC}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferViewD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x9643f2f, 0x40d4, 0x4076, { 0xb0, 0x86, 0x9e, 0x5c, 0xdc, 0x2c, 0xc4, 0xfc } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_view_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_view_d3_d12.html">IBufferViewD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_i_buffer_view_d3_d12.html#a11474ce1f6a0d33f62fbb005d7214bea">GetCPUDescriptorHandle</a>() = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="ttc" id="class_diligent_1_1_i_buffer_view_d3_d12_html_a11474ce1f6a0d33f62fbb005d7214bea"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view_d3_d12.html#a11474ce1f6a0d33f62fbb005d7214bea">Diligent::IBufferViewD3D12::GetCPUDescriptorHandle</a></div><div class="ttdeci">virtual D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandle()=0</div><div class="ttdoc">Returns CPU descriptor handle of the buffer view. </div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {09643F2F-40D4-4076-B086-9E5CDC2CC4FC}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferViewD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x9643f2f, 0x40d4, 0x4076, { 0xb0, 0x86, 0x9e, 0x5c, 0xdc, 0x2c, 0xc4, 0xfc } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_view_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_view_d3_d12.html">IBufferViewD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_i_buffer_view_d3_d12.html#a11474ce1f6a0d33f62fbb005d7214bea">GetCPUDescriptorHandle</a>() = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="ttc" id="class_diligent_1_1_i_buffer_view_d3_d12_html_a11474ce1f6a0d33f62fbb005d7214bea"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view_d3_d12.html#a11474ce1f6a0d33f62fbb005d7214bea">Diligent::IBufferViewD3D12::GetCPUDescriptorHandle</a></div><div class="ttdeci">virtual D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandle()=0</div><div class="ttdoc">Returns CPU descriptor handle of the buffer view. </div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_view_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view_d3_d12.html">Diligent::IBufferViewD3D12</a></div><div class="ttdoc">Interface to the buffer view object implemented in D3D12. </div><div class="ttdef"><b>Definition:</b> BufferViewD3D12.h:39</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_view_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view.html">Diligent::IBufferView</a></div><div class="ttdoc">Buffer view interface. </div><div class="ttdef"><b>Definition:</b> BufferView.h:91</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_view_d3_d12_impl_8h_source.html b/doc/html/_buffer_view_d3_d12_impl_8h_source.html index d15bde82..4434d7d1 100644 --- a/doc/html/_buffer_view_d3_d12_impl_8h_source.html +++ b/doc/html/_buffer_view_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferViewD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferViewD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BufferViewBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_d3_d12_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_view_d3_d12_impl.html">BufferViewD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase</a><IBufferViewD3D12></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase<IBufferViewD3D12></a> <a class="code" href="class_diligent_1_1_buffer_view_base.html">TBufferViewBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_buffer_view_d3_d12_impl.html">BufferViewD3D12Impl</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  DescriptorHeapAllocation &&HandleAlloc,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> bIsDefaultView);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_view_d3_d12_impl.html#ae270b4462b5ff673a8a1abf4a7727166">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_d3_d12_impl.html#a1afb7e1acf7138ec49d113aea88b18a5"> 53</a></span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_buffer_view_d3_d12_impl.html#a1afb7e1acf7138ec49d113aea88b18a5">GetCPUDescriptorHandle</a>()<span class="keyword">override</span>{<span class="keywordflow">return</span> m_DescriptorHandle.GetCpuHandle();}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Allocation in a CPU-only descriptor heap</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  DescriptorHeapAllocation m_DescriptorHandle;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferViewD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BufferViewBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_d3_d12_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_view_d3_d12_impl.html">BufferViewD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase</a><IBufferViewD3D12></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase<IBufferViewD3D12></a> <a class="code" href="class_diligent_1_1_buffer_view_base.html">TBufferViewBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_buffer_view_d3_d12_impl.html">BufferViewD3D12Impl</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  DescriptorHeapAllocation &&HandleAlloc,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> bIsDefaultView);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_view_d3_d12_impl.html#ae270b4462b5ff673a8a1abf4a7727166">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_d3_d12_impl.html#a1afb7e1acf7138ec49d113aea88b18a5"> 53</a></span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_buffer_view_d3_d12_impl.html#a1afb7e1acf7138ec49d113aea88b18a5">GetCPUDescriptorHandle</a>()<span class="keyword">override</span>{<span class="keywordflow">return</span> m_DescriptorHandle.GetCpuHandle();}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Allocation in a CPU-only descriptor heap</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  DescriptorHeapAllocation m_DescriptorHandle;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_buffer_view_d3_d12_impl_html_ae270b4462b5ff673a8a1abf4a7727166"><div class="ttname"><a href="class_diligent_1_1_buffer_view_d3_d12_impl.html#ae270b4462b5ff673a8a1abf4a7727166">Diligent::BufferViewD3D12Impl::QueryInterface</a></div><div class="ttdeci">virtual void QueryInterface(const Diligent::INTERFACE_ID &IID, IObject **ppInterface)</div><div class="ttdoc">Queries the specific interface, see IObject::QueryInterface() for details. </div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_view_g_l_8h_source.html b/doc/html/_buffer_view_g_l_8h_source.html index 9ed68907..fed8c1f2 100644 --- a/doc/html/_buffer_view_g_l_8h_source.html +++ b/doc/html/_buffer_view_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferViewGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {927A865B-3CEB-4743-9A22-2A1397A73E6D}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferViewGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x927a865b, 0x3ceb, 0x4743, { 0x9a, 0x22, 0x2a, 0x13, 0x97, 0xa7, 0x3e, 0x6d } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_view_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_view_g_l.html">IBufferViewGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">//const GLObjectWrappers::GLTextureObj& GetTexBufferHandle(){ return m_GLTexBuffer; }</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {927A865B-3CEB-4743-9A22-2A1397A73E6D}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_BufferViewGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x927a865b, 0x3ceb, 0x4743, { 0x9a, 0x22, 0x2a, 0x13, 0x97, 0xa7, 0x3e, 0x6d } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_buffer_view_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer_view_g_l.html">IBufferViewGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_buffer_view.html">IBufferView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">//const GLObjectWrappers::GLTextureObj& GetTexBufferHandle(){ return m_GLTexBuffer; }</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_view_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view_g_l.html">Diligent::IBufferViewGL</a></div><div class="ttdoc">Interface to the buffer view object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> BufferViewGL.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_view_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer_view.html">Diligent::IBufferView</a></div><div class="ttdoc">Buffer view interface. </div><div class="ttdef"><b>Definition:</b> BufferView.h:91</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_buffer_view_g_l_impl_8h_source.html b/doc/html/_buffer_view_g_l_impl_8h_source.html index cb5373a8..e9cfdbae 100644 --- a/doc/html/_buffer_view_g_l_impl_8h_source.html +++ b/doc/html/_buffer_view_g_l_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">BufferViewGLImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BufferViewGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "BufferViewBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>IRenderDevice;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>IDeviceContext;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>BufferGLImpl;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">struct </span>BufferViewDesc;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_g_l_impl.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_view_g_l_impl.html">BufferViewGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase</a><IBufferViewGL></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase<IBufferViewGL></a> <a class="code" href="class_diligent_1_1_buffer_view_base.html">TBuffViewBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_diligent_1_1_buffer_view_g_l_impl.html">BufferViewGLImpl</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a> *pBuffer,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">bool</span> bIsDefaultView);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_view_g_l_impl.html#aafb66a0dec67dbce0316e47a140c6d75">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">const</span> GLObjectWrappers::GLTextureObj& GetTexBufferHandle(){ <span class="keywordflow">return</span> m_GLTexBuffer; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLObjectWrappers::GLTextureObj m_GLTexBuffer;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BufferViewGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "BufferViewBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>IRenderDevice;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>IDeviceContext;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>BufferGLImpl;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">struct </span>BufferViewDesc;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_buffer_view_g_l_impl.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_view_g_l_impl.html">BufferViewGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase</a><IBufferViewGL></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_buffer_view_base.html">BufferViewBase<IBufferViewGL></a> <a class="code" href="class_diligent_1_1_buffer_view_base.html">TBuffViewBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_diligent_1_1_buffer_view_g_l_impl.html">BufferViewGLImpl</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_view_desc.html">BufferViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a> *pBuffer,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">bool</span> bIsDefaultView);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_buffer_view_g_l_impl.html#aafb66a0dec67dbce0316e47a140c6d75">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">const</span> GLObjectWrappers::GLTextureObj& GetTexBufferHandle(){ <span class="keywordflow">return</span> m_GLTexBuffer; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLObjectWrappers::GLTextureObj m_GLTexBuffer;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="ttc" id="struct_diligent_1_1_buffer_view_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_view_desc.html">Diligent::BufferViewDesc</a></div><div class="ttdoc">Buffer view description. </div><div class="ttdef"><b>Definition:</b> BufferView.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_buffer_view_g_l_impl_html"><div class="ttname"><a href="class_diligent_1_1_buffer_view_g_l_impl.html">Diligent::BufferViewGLImpl</a></div><div class="ttdoc">Implementation of the Diligent::IBufferViewGL interface. </div><div class="ttdef"><b>Definition:</b> BufferViewGLImpl.h:42</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_command_context_8h_source.html b/doc/html/_command_context_8h_source.html index 42ce2570..83e48f42 100644 --- a/doc/html/_command_context_8h_source.html +++ b/doc/html/_command_context_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">CommandContext.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "D3D12ResourceBase.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "TextureViewD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureD3D12.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "BufferD3D12.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">struct </span>DWParam</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  DWParam( FLOAT f ) : Float(f) {}</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  DWParam( UINT u ) : Uint(u) {}</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  DWParam( INT i ) : Int(i) {}</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span> operator= ( FLOAT f ) { Float = f; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">void</span> operator= ( UINT u ) { Uint = u; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> operator= ( INT i ) { Int = i; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">union</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  FLOAT Float;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  UINT Uint;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  INT Int;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">class </span>CommandContext</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  CommandContext( IMemoryAllocator &MemAllocator,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">class</span> CommandListManager& CmdListManager, </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  GPUDescriptorHeap GPUDescriptorHeaps[],</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">const</span> Uint32 DynamicDescriptorAllocationChunkSize[]);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ~CommandContext(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Submit the command buffer and reset it. This is encouraged to keep the GPU busy and reduce latency.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// Taking too long to build command lists and submit them can idle the GPU.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  ID3D12GraphicsCommandList* Close(ID3D12CommandAllocator **ppAllocator);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">void</span> Reset( CommandListManager& CmdListManager );</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">class </span>GraphicsContext& AsGraphicsContext();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">class </span>ComputeContext& AsComputeContext();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> ClearUAVFloat( ITextureViewD3D12 *pTexView, <span class="keyword">const</span> <span class="keywordtype">float</span>* Color );</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">void</span> ClearUAVUint( ITextureViewD3D12 *pTexView, <span class="keyword">const</span> UINT *Color );</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> CopyResource(ID3D12Resource *pDstRes, ID3D12Resource *pSrcRes)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_pCommandList->CopyResource(pDstRes, pSrcRes);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> TransitionResource(ITextureD3D12 *pTexture, D3D12_RESOURCE_STATES NewState, <span class="keywordtype">bool</span> FlushImmediate = <span class="keyword">false</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> TransitionResource(IBufferD3D12 *pBuffer, D3D12_RESOURCE_STATES NewState, <span class="keywordtype">bool</span> FlushImmediate = <span class="keyword">false</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">//void BeginResourceTransition(GpuResource& Resource, D3D12_RESOURCE_STATES NewState, bool FlushImmediate = false);</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span> FlushResourceBarriers();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">struct </span>ShaderDescriptorHeaps</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  ID3D12DescriptorHeap* pSrvCbvUavHeap;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  ID3D12DescriptorHeap* pSamplerHeap;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  ShaderDescriptorHeaps(ID3D12DescriptorHeap* _pSrvCbvUavHeap = <span class="keyword">nullptr</span>, ID3D12DescriptorHeap* _pSamplerHeap = <span class="keyword">nullptr</span>) :</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  pSrvCbvUavHeap(_pSrvCbvUavHeap),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  pSamplerHeap(_pSamplerHeap)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {}</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> ShaderDescriptorHeaps& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> pSrvCbvUavHeap == rhs.pSrvCbvUavHeap && pSamplerHeap == rhs.pSamplerHeap;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">operator</span> bool()<span class="keyword">const</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> pSrvCbvUavHeap != <span class="keyword">nullptr</span> || pSamplerHeap != <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  };</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">void</span> SetDescriptorHeaps( ShaderDescriptorHeaps& Heaps );</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">void</span> ExecuteIndirect(ID3D12CommandSignature *pCmdSignature, ID3D12Resource *pBuff, Uint64 ArgsOffset)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  FlushResourceBarriers();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_pCommandList->ExecuteIndirect(pCmdSignature, 1, pBuff, ArgsOffset, <span class="keyword">nullptr</span>, 0);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">void</span> SetID(<span class="keyword">const</span> Char* ID) { m_ID = ID; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  ID3D12GraphicsCommandList *GetCommandList(){<span class="keywordflow">return</span> m_pCommandList;}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> DiscardDynamicDescriptors(Uint64 FenceValue);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  DescriptorHeapAllocation AllocateDynamicGPUVisibleDescriptor( D3D12_DESCRIPTOR_HEAP_TYPE Type, UINT Count = 1 );</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> InsertUAVBarrier(D3D12ResourceBase& Resource, IDeviceObject &Object, <span class="keywordtype">bool</span> FlushImmediate = <span class="keyword">false</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">void</span> SetPipelineState( ID3D12PipelineState* pPSO )</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span> (pPSO != m_pCurPipelineState)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  { </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_pCommandList->SetPipelineState(m_pCurPipelineState = pPSO);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">void</span> TransitionResource(D3D12ResourceBase& Resource, IDeviceObject &Object, D3D12_RESOURCE_STATES NewState, <span class="keywordtype">bool</span> FlushImmediate);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">void</span> InsertAliasBarrier(D3D12ResourceBase& Before, D3D12ResourceBase& After, IDeviceObject &BeforeObj, IDeviceObject &AfterObj, <span class="keywordtype">bool</span> FlushImmediate = <span class="keyword">false</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  CComPtr<ID3D12GraphicsCommandList> m_pCommandList;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  CComPtr<ID3D12CommandAllocator> m_pCurrentAllocator;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  ID3D12PipelineState* m_pCurPipelineState = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  ID3D12RootSignature* m_pCurGraphicsRootSignature = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  ID3D12RootSignature* m_pCurComputeRootSignature = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> MaxPendingBarriers = 16;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  std::vector<D3D12_RESOURCE_BARRIER, STDAllocatorRawMem<D3D12_RESOURCE_BARRIER> > m_PendingResourceBarriers;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// We must make sure that all referenced objects are alive until barriers are executed</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Keeping reference to ID3D12Resource is not sufficient!</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// TextureD3D12Impl::~TextureD3D12Impl() and BufferD3D12Impl::~BufferD3D12Impl()</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// are responsible for putting the D3D12 resource in the release queue</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  std::vector< RefCntAutoPtr<IDeviceObject>, STDAllocatorRawMem<RefCntAutoPtr<IDeviceObject>> > m_PendingBarrierObjects;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  ShaderDescriptorHeaps m_BoundDescriptorHeaps;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// Every context must use its own allocator that maintains individual list of retired descriptor heaps to </span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// avoid interference with other command contexts</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// The heaps can only be discarded after the command list is submitted for execution</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  DynamicSuballocationsManager m_DynamicGPUDescriptorAllocator[2];</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  String m_ID;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  D3D12_PRIMITIVE_TOPOLOGY m_PrimitiveTopology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> };</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">class </span>GraphicsContext : <span class="keyword">public</span> CommandContext</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordtype">void</span> ClearRenderTarget( ITextureViewD3D12 *pRTV, <span class="keyword">const</span> <span class="keywordtype">float</span> *Color );</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordtype">void</span> ClearDepthStencil( ITextureViewD3D12 *pDSV, D3D12_CLEAR_FLAGS ClearFlags, <span class="keywordtype">float</span> Depth, UINT8 Stencil );</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordtype">void</span> SetRootSignature( ID3D12RootSignature *pRootSig )</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span> (pRootSig != m_pCurGraphicsRootSignature)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_pCommandList->SetGraphicsRootSignature(m_pCurGraphicsRootSignature = pRootSig);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">void</span> SetRenderTargets( UINT NumRTVs, ITextureViewD3D12** ppRTVs, ITextureViewD3D12* pDSV );</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">void</span> SetViewports( UINT NumVPs, <span class="keyword">const</span> D3D12_VIEWPORT* pVPs )</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  m_pCommandList->RSSetViewports(NumVPs, pVPs);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordtype">void</span> SetScissorRects( UINT NumRects, <span class="keyword">const</span> D3D12_RECT* pRects )</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_pCommandList->RSSetScissorRects(NumRects, pRects);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordtype">void</span> SetStencilRef( UINT StencilRef )</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  m_pCommandList->OMSetStencilRef( StencilRef );</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">void</span> SetBlendFactor( <span class="keyword">const</span> <span class="keywordtype">float</span>* BlendFactor )</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_pCommandList->OMSetBlendFactor( BlendFactor );</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">void</span> SetPrimitiveTopology( D3D12_PRIMITIVE_TOPOLOGY Topology )</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span>(m_PrimitiveTopology != Topology)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_PrimitiveTopology = Topology;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  m_pCommandList->IASetPrimitiveTopology(Topology);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, UINT NumConstants, <span class="keyword">const</span> <span class="keywordtype">void</span>* pConstants )</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  m_pCommandList->SetGraphicsRoot32BitConstants( RootIndex, NumConstants, pConstants, 0 );</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X )</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y )</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y, DWParam Z )</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, Z.Uint, 2 );</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y, DWParam Z, DWParam W )</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, Z.Uint, 2 );</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, W.Uint, 3 );</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordtype">void</span> SetConstantBuffer( UINT RootIndex, D3D12_GPU_VIRTUAL_ADDRESS CBV )</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_pCommandList->SetGraphicsRootConstantBufferView(RootIndex, CBV);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordtype">void</span> SetDescriptorTable( UINT RootIndex, D3D12_GPU_DESCRIPTOR_HANDLE FirstHandle )</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_pCommandList->SetGraphicsRootDescriptorTable( RootIndex, FirstHandle );</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordtype">void</span> SetIndexBuffer( <span class="keyword">const</span> D3D12_INDEX_BUFFER_VIEW& IBView )</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_pCommandList->IASetIndexBuffer(&IBView);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordtype">void</span> SetVertexBuffers( UINT StartSlot, UINT Count, <span class="keyword">const</span> D3D12_VERTEX_BUFFER_VIEW VBViews[] )</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_pCommandList->IASetVertexBuffers(StartSlot, Count, VBViews);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">void</span> Draw(UINT VertexCountPerInstance, UINT InstanceCount,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  UINT StartVertexLocation, UINT StartInstanceLocation)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  FlushResourceBarriers();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  m_pCommandList->DrawInstanced(VertexCountPerInstance, InstanceCount, StartVertexLocation, StartInstanceLocation);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordtype">void</span> DrawIndexed(UINT IndexCountPerInstance, UINT InstanceCount, UINT StartIndexLocation,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  INT BaseVertexLocation, UINT StartInstanceLocation)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  FlushResourceBarriers();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_pCommandList->DrawIndexedInstanced(IndexCountPerInstance, InstanceCount, StartIndexLocation, BaseVertexLocation, StartInstanceLocation);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> };</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">class </span>ComputeContext : <span class="keyword">public</span> CommandContext</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">void</span> SetRootSignature( ID3D12RootSignature *pRootSig )</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">if</span> (pRootSig != m_pCurComputeRootSignature)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  m_pCommandList->SetComputeRootSignature(m_pCurComputeRootSignature = pRootSig);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, UINT NumConstants, <span class="keyword">const</span> <span class="keywordtype">void</span>* pConstants )</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  m_pCommandList->SetComputeRoot32BitConstants( RootIndex, NumConstants, pConstants, 0 );</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X )</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y )</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y, DWParam Z )</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, Z.Uint, 2 );</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y, DWParam Z, DWParam W )</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, Z.Uint, 2 );</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, W.Uint, 3 );</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordtype">void</span> SetConstantBuffer( UINT RootIndex, D3D12_GPU_VIRTUAL_ADDRESS CBV )</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  m_pCommandList->SetComputeRootConstantBufferView(RootIndex, CBV);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordtype">void</span> SetDescriptorTable( UINT RootIndex, D3D12_GPU_DESCRIPTOR_HANDLE FirstHandle )</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  m_pCommandList->SetComputeRootDescriptorTable( RootIndex, FirstHandle );</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordtype">void</span> Dispatch( <span class="keywordtype">size_t</span> GroupCountX = 1, <span class="keywordtype">size_t</span> GroupCountY = 1, <span class="keywordtype">size_t</span> GroupCountZ = 1 )</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  FlushResourceBarriers();</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  m_pCommandList->Dispatch((UINT)GroupCountX, (UINT)GroupCountY, (UINT)GroupCountZ);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> };</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="keyword">inline</span> GraphicsContext& CommandContext::AsGraphicsContext() </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>GraphicsContext&<span class="keyword">></span>(*this);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="keyword">inline</span> ComputeContext& CommandContext::AsComputeContext() </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>ComputeContext&<span class="keyword">></span>(*this);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> CommandContext::SetDescriptorHeaps( ShaderDescriptorHeaps& Heaps )</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  VERIFY(Heaps.pSrvCbvUavHeap != <span class="keyword">nullptr</span> || Heaps.pSamplerHeap != <span class="keyword">nullptr</span>, <span class="stringliteral">"At least one heap is expected to be set"</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  VERIFY(Heaps.pSrvCbvUavHeap == <span class="keyword">nullptr</span> || Heaps.pSrvCbvUavHeap->GetDesc().Type == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, <span class="stringliteral">"Invalid heap type provided in pSrvCbvUavHeap"</span>);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  VERIFY(Heaps.pSamplerHeap == <span class="keyword">nullptr</span> || Heaps.pSamplerHeap->GetDesc().Type == D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER, <span class="stringliteral">"Invalid heap type provided in pSamplerHeap"</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">if</span> (!(Heaps == m_BoundDescriptorHeaps))</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  m_BoundDescriptorHeaps = Heaps;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  ID3D12DescriptorHeap **ppHeaps = <span class="keyword">reinterpret_cast<</span>ID3D12DescriptorHeap**<span class="keyword">></span>(&Heaps);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  UINT NumHeaps = (ppHeaps[0] != <span class="keyword">nullptr</span> ? 1 : 0) + (ppHeaps[1] != <span class="keyword">nullptr</span> ? 1 : 0);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span>(ppHeaps[0] == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  ++ppHeaps;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  m_pCommandList->SetDescriptorHeaps(NumHeaps, ppHeaps);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "D3D12ResourceBase.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "TextureViewD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureD3D12.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "BufferD3D12.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">struct </span>DWParam</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  DWParam( FLOAT f ) : Float(f) {}</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  DWParam( UINT u ) : Uint(u) {}</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  DWParam( INT i ) : Int(i) {}</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span> operator= ( FLOAT f ) { Float = f; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">void</span> operator= ( UINT u ) { Uint = u; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> operator= ( INT i ) { Int = i; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">union</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  FLOAT Float;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  UINT Uint;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  INT Int;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">class </span>CommandContext</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  CommandContext( IMemoryAllocator &MemAllocator,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">class</span> CommandListManager& CmdListManager, </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  GPUDescriptorHeap GPUDescriptorHeaps[],</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">const</span> Uint32 DynamicDescriptorAllocationChunkSize[]);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ~CommandContext(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Submit the command buffer and reset it. This is encouraged to keep the GPU busy and reduce latency.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// Taking too long to build command lists and submit them can idle the GPU.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  ID3D12GraphicsCommandList* Close(ID3D12CommandAllocator **ppAllocator);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">void</span> Reset( CommandListManager& CmdListManager );</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">class </span>GraphicsContext& AsGraphicsContext();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">class </span>ComputeContext& AsComputeContext();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> ClearUAVFloat( ITextureViewD3D12 *pTexView, <span class="keyword">const</span> <span class="keywordtype">float</span>* Color );</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">void</span> ClearUAVUint( ITextureViewD3D12 *pTexView, <span class="keyword">const</span> UINT *Color );</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> CopyResource(ID3D12Resource *pDstRes, ID3D12Resource *pSrcRes)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_pCommandList->CopyResource(pDstRes, pSrcRes);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> TransitionResource(ITextureD3D12 *pTexture, D3D12_RESOURCE_STATES NewState, <span class="keywordtype">bool</span> FlushImmediate = <span class="keyword">false</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> TransitionResource(IBufferD3D12 *pBuffer, D3D12_RESOURCE_STATES NewState, <span class="keywordtype">bool</span> FlushImmediate = <span class="keyword">false</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">//void BeginResourceTransition(GpuResource& Resource, D3D12_RESOURCE_STATES NewState, bool FlushImmediate = false);</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span> FlushResourceBarriers();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">struct </span>ShaderDescriptorHeaps</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  ID3D12DescriptorHeap* pSrvCbvUavHeap;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  ID3D12DescriptorHeap* pSamplerHeap;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  ShaderDescriptorHeaps(ID3D12DescriptorHeap* _pSrvCbvUavHeap = <span class="keyword">nullptr</span>, ID3D12DescriptorHeap* _pSamplerHeap = <span class="keyword">nullptr</span>) :</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  pSrvCbvUavHeap(_pSrvCbvUavHeap),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  pSamplerHeap(_pSamplerHeap)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {}</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> ShaderDescriptorHeaps& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> pSrvCbvUavHeap == rhs.pSrvCbvUavHeap && pSamplerHeap == rhs.pSamplerHeap;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">operator</span> bool()<span class="keyword">const</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> pSrvCbvUavHeap != <span class="keyword">nullptr</span> || pSamplerHeap != <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  };</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">void</span> SetDescriptorHeaps( ShaderDescriptorHeaps& Heaps );</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">void</span> ExecuteIndirect(ID3D12CommandSignature *pCmdSignature, ID3D12Resource *pBuff, Uint64 ArgsOffset)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  FlushResourceBarriers();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_pCommandList->ExecuteIndirect(pCmdSignature, 1, pBuff, ArgsOffset, <span class="keyword">nullptr</span>, 0);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">void</span> SetID(<span class="keyword">const</span> Char* ID) { m_ID = ID; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  ID3D12GraphicsCommandList *GetCommandList(){<span class="keywordflow">return</span> m_pCommandList;}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> DiscardDynamicDescriptors(Uint64 FenceValue);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  DescriptorHeapAllocation AllocateDynamicGPUVisibleDescriptor( D3D12_DESCRIPTOR_HEAP_TYPE Type, UINT Count = 1 );</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> InsertUAVBarrier(D3D12ResourceBase& Resource, IDeviceObject &Object, <span class="keywordtype">bool</span> FlushImmediate = <span class="keyword">false</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">void</span> SetPipelineState( ID3D12PipelineState* pPSO )</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span> (pPSO != m_pCurPipelineState)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  { </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_pCommandList->SetPipelineState(m_pCurPipelineState = pPSO);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">void</span> TransitionResource(D3D12ResourceBase& Resource, IDeviceObject &Object, D3D12_RESOURCE_STATES NewState, <span class="keywordtype">bool</span> FlushImmediate);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">void</span> InsertAliasBarrier(D3D12ResourceBase& Before, D3D12ResourceBase& After, IDeviceObject &BeforeObj, IDeviceObject &AfterObj, <span class="keywordtype">bool</span> FlushImmediate = <span class="keyword">false</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  CComPtr<ID3D12GraphicsCommandList> m_pCommandList;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  CComPtr<ID3D12CommandAllocator> m_pCurrentAllocator;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  ID3D12PipelineState* m_pCurPipelineState = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  ID3D12RootSignature* m_pCurGraphicsRootSignature = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  ID3D12RootSignature* m_pCurComputeRootSignature = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> MaxPendingBarriers = 16;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  std::vector<D3D12_RESOURCE_BARRIER, STDAllocatorRawMem<D3D12_RESOURCE_BARRIER> > m_PendingResourceBarriers;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// We must make sure that all referenced objects are alive until barriers are executed</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Keeping reference to ID3D12Resource is not sufficient!</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// TextureD3D12Impl::~TextureD3D12Impl() and BufferD3D12Impl::~BufferD3D12Impl()</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// are responsible for putting the D3D12 resource in the release queue</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  std::vector< RefCntAutoPtr<IDeviceObject>, STDAllocatorRawMem<RefCntAutoPtr<IDeviceObject>> > m_PendingBarrierObjects;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  ShaderDescriptorHeaps m_BoundDescriptorHeaps;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// Every context must use its own allocator that maintains individual list of retired descriptor heaps to </span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// avoid interference with other command contexts</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// The heaps can only be discarded after the command list is submitted for execution</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  DynamicSuballocationsManager m_DynamicGPUDescriptorAllocator[2];</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  String m_ID;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  D3D12_PRIMITIVE_TOPOLOGY m_PrimitiveTopology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> };</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">class </span>GraphicsContext : <span class="keyword">public</span> CommandContext</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordtype">void</span> ClearRenderTarget( ITextureViewD3D12 *pRTV, <span class="keyword">const</span> <span class="keywordtype">float</span> *Color );</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordtype">void</span> ClearDepthStencil( ITextureViewD3D12 *pDSV, D3D12_CLEAR_FLAGS ClearFlags, <span class="keywordtype">float</span> Depth, UINT8 Stencil );</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordtype">void</span> SetRootSignature( ID3D12RootSignature *pRootSig )</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span> (pRootSig != m_pCurGraphicsRootSignature)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_pCommandList->SetGraphicsRootSignature(m_pCurGraphicsRootSignature = pRootSig);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">void</span> SetRenderTargets( UINT NumRTVs, ITextureViewD3D12** ppRTVs, ITextureViewD3D12* pDSV );</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">void</span> SetViewports( UINT NumVPs, <span class="keyword">const</span> D3D12_VIEWPORT* pVPs )</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  m_pCommandList->RSSetViewports(NumVPs, pVPs);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordtype">void</span> SetScissorRects( UINT NumRects, <span class="keyword">const</span> D3D12_RECT* pRects )</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_pCommandList->RSSetScissorRects(NumRects, pRects);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordtype">void</span> SetStencilRef( UINT StencilRef )</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  m_pCommandList->OMSetStencilRef( StencilRef );</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">void</span> SetBlendFactor( <span class="keyword">const</span> <span class="keywordtype">float</span>* BlendFactor )</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_pCommandList->OMSetBlendFactor( BlendFactor );</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">void</span> SetPrimitiveTopology( D3D12_PRIMITIVE_TOPOLOGY Topology )</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span>(m_PrimitiveTopology != Topology)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_PrimitiveTopology = Topology;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  m_pCommandList->IASetPrimitiveTopology(Topology);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, UINT NumConstants, <span class="keyword">const</span> <span class="keywordtype">void</span>* pConstants )</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  m_pCommandList->SetGraphicsRoot32BitConstants( RootIndex, NumConstants, pConstants, 0 );</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X )</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y )</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y, DWParam Z )</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, Z.Uint, 2 );</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y, DWParam Z, DWParam W )</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, Z.Uint, 2 );</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  m_pCommandList->SetGraphicsRoot32BitConstant( RootIndex, W.Uint, 3 );</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordtype">void</span> SetConstantBuffer( UINT RootIndex, D3D12_GPU_VIRTUAL_ADDRESS CBV )</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_pCommandList->SetGraphicsRootConstantBufferView(RootIndex, CBV);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordtype">void</span> SetDescriptorTable( UINT RootIndex, D3D12_GPU_DESCRIPTOR_HANDLE FirstHandle )</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_pCommandList->SetGraphicsRootDescriptorTable( RootIndex, FirstHandle );</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordtype">void</span> SetIndexBuffer( <span class="keyword">const</span> D3D12_INDEX_BUFFER_VIEW& IBView )</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_pCommandList->IASetIndexBuffer(&IBView);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordtype">void</span> SetVertexBuffers( UINT StartSlot, UINT Count, <span class="keyword">const</span> D3D12_VERTEX_BUFFER_VIEW VBViews[] )</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_pCommandList->IASetVertexBuffers(StartSlot, Count, VBViews);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">void</span> Draw(UINT VertexCountPerInstance, UINT InstanceCount,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  UINT StartVertexLocation, UINT StartInstanceLocation)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  FlushResourceBarriers();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  m_pCommandList->DrawInstanced(VertexCountPerInstance, InstanceCount, StartVertexLocation, StartInstanceLocation);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordtype">void</span> DrawIndexed(UINT IndexCountPerInstance, UINT InstanceCount, UINT StartIndexLocation,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  INT BaseVertexLocation, UINT StartInstanceLocation)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  FlushResourceBarriers();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_pCommandList->DrawIndexedInstanced(IndexCountPerInstance, InstanceCount, StartIndexLocation, BaseVertexLocation, StartInstanceLocation);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> };</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">class </span>ComputeContext : <span class="keyword">public</span> CommandContext</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">void</span> SetRootSignature( ID3D12RootSignature *pRootSig )</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">if</span> (pRootSig != m_pCurComputeRootSignature)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  m_pCommandList->SetComputeRootSignature(m_pCurComputeRootSignature = pRootSig);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, UINT NumConstants, <span class="keyword">const</span> <span class="keywordtype">void</span>* pConstants )</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  m_pCommandList->SetComputeRoot32BitConstants( RootIndex, NumConstants, pConstants, 0 );</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X )</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y )</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y, DWParam Z )</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, Z.Uint, 2 );</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordtype">void</span> SetConstants( UINT RootIndex, DWParam X, DWParam Y, DWParam Z, DWParam W )</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, X.Uint, 0 );</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, Y.Uint, 1 );</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, Z.Uint, 2 );</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  m_pCommandList->SetComputeRoot32BitConstant( RootIndex, W.Uint, 3 );</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordtype">void</span> SetConstantBuffer( UINT RootIndex, D3D12_GPU_VIRTUAL_ADDRESS CBV )</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  m_pCommandList->SetComputeRootConstantBufferView(RootIndex, CBV);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordtype">void</span> SetDescriptorTable( UINT RootIndex, D3D12_GPU_DESCRIPTOR_HANDLE FirstHandle )</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  m_pCommandList->SetComputeRootDescriptorTable( RootIndex, FirstHandle );</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordtype">void</span> Dispatch( <span class="keywordtype">size_t</span> GroupCountX = 1, <span class="keywordtype">size_t</span> GroupCountY = 1, <span class="keywordtype">size_t</span> GroupCountZ = 1 )</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  FlushResourceBarriers();</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  m_pCommandList->Dispatch((UINT)GroupCountX, (UINT)GroupCountY, (UINT)GroupCountZ);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> };</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="keyword">inline</span> GraphicsContext& CommandContext::AsGraphicsContext() </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>GraphicsContext&<span class="keyword">></span>(*this);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="keyword">inline</span> ComputeContext& CommandContext::AsComputeContext() </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>ComputeContext&<span class="keyword">></span>(*this);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> CommandContext::SetDescriptorHeaps( ShaderDescriptorHeaps& Heaps )</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  VERIFY(Heaps.pSrvCbvUavHeap != <span class="keyword">nullptr</span> || Heaps.pSamplerHeap != <span class="keyword">nullptr</span>, <span class="stringliteral">"At least one heap is expected to be set"</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  VERIFY(Heaps.pSrvCbvUavHeap == <span class="keyword">nullptr</span> || Heaps.pSrvCbvUavHeap->GetDesc().Type == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, <span class="stringliteral">"Invalid heap type provided in pSrvCbvUavHeap"</span>);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  VERIFY(Heaps.pSamplerHeap == <span class="keyword">nullptr</span> || Heaps.pSamplerHeap->GetDesc().Type == D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER, <span class="stringliteral">"Invalid heap type provided in pSamplerHeap"</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">if</span> (!(Heaps == m_BoundDescriptorHeaps))</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  m_BoundDescriptorHeaps = Heaps;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  ID3D12DescriptorHeap **ppHeaps = <span class="keyword">reinterpret_cast<</span>ID3D12DescriptorHeap**<span class="keyword">></span>(&Heaps);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  UINT NumHeaps = (ppHeaps[0] != <span class="keyword">nullptr</span> ? 1 : 0) + (ppHeaps[1] != <span class="keyword">nullptr</span> ? 1 : 0);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span>(ppHeaps[0] == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  ++ppHeaps;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  m_pCommandList->SetDescriptorHeaps(NumHeaps, ppHeaps);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_command_list_8h_source.html b/doc/html/_command_list_8h_source.html index 21441123..4e129428 100644 --- a/doc/html/_command_list_8h_source.html +++ b/doc/html/_command_list_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">CommandList.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {C38C68F2-8A8C-4ED5-B7EE-69126E75DCD8}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_CommandList =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xc38c68f2, 0x8a8c, 0x4ed5, { 0xb7, 0xee, 0x69, 0x12, 0x6e, 0x75, 0xdc, 0xd8 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_command_list.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {C38C68F2-8A8C-4ED5-B7EE-69126E75DCD8}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_CommandList =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xc38c68f2, 0x8a8c, 0x4ed5, { 0xb7, 0xee, 0x69, 0x12, 0x6e, 0x75, 0xdc, 0xd8 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_command_list.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_command_list_html"><div class="ttname"><a href="class_diligent_1_1_i_command_list.html">Diligent::ICommandList</a></div><div class="ttdoc">Command list interface. </div><div class="ttdef"><b>Definition:</b> CommandList.h:42</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_command_list_base_8h_source.html b/doc/html/_command_list_base_8h_source.html index 426d1118..b74a6046 100644 --- a/doc/html/_command_list_base_8h_source.html +++ b/doc/html/_command_list_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">CommandListBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "CommandList.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">struct </span>CommandListDesc : <span class="keyword">public</span> DeviceObjectAttribs</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_list_base.html"> 45</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, CommandListDesc></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, CommandListDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_list_base.html#a867892aa11155befa128ca859289dfa9"> 54</a></span>  <a class="code" href="class_diligent_1_1_command_list_base.html#a867892aa11155befa128ca859289dfa9">CommandListBase</a>( IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, CommandListDesc(), bIsDeviceInternal )</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  ~<a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase</a>()</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_CommandList, TDeviceObjectBase )</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="ttc" id="class_diligent_1_1_command_list_base_html"><div class="ttname"><a href="class_diligent_1_1_command_list_base.html">Diligent::CommandListBase</a></div><div class="ttdoc">Template class implementing base functionality for a command list object. </div><div class="ttdef"><b>Definition:</b> CommandListBase.h:45</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "CommandList.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">struct </span>CommandListDesc : <span class="keyword">public</span> DeviceObjectAttribs</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_list_base.html"> 45</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, CommandListDesc></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, CommandListDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_list_base.html#a867892aa11155befa128ca859289dfa9"> 54</a></span>  <a class="code" href="class_diligent_1_1_command_list_base.html#a867892aa11155befa128ca859289dfa9">CommandListBase</a>( IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, CommandListDesc(), bIsDeviceInternal )</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  ~<a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase</a>()</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_CommandList, TDeviceObjectBase )</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="ttc" id="class_diligent_1_1_command_list_base_html"><div class="ttname"><a href="class_diligent_1_1_command_list_base.html">Diligent::CommandListBase</a></div><div class="ttdoc">Template class implementing base functionality for a command list object. </div><div class="ttdef"><b>Definition:</b> CommandListBase.h:45</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_command_list_base_html_a867892aa11155befa128ca859289dfa9"><div class="ttname"><a href="class_diligent_1_1_command_list_base.html#a867892aa11155befa128ca859289dfa9">Diligent::CommandListBase::CommandListBase</a></div><div class="ttdeci">CommandListBase(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, bool bIsDeviceInternal=false)</div><div class="ttdef"><b>Definition:</b> CommandListBase.h:54</div></div> @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_command_list_d3_d11_impl_8h_source.html b/doc/html/_command_list_d3_d11_impl_8h_source.html index 2483e342..28a71f6f 100644 --- a/doc/html/_command_list_d3_d11_impl_8h_source.html +++ b/doc/html/_command_list_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">CommandListD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "CommandListBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_list_d3_d11_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_command_list_d3_d11_impl.html">CommandListD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase</a><ICommandList></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase<ICommandList></a> <a class="code" href="class_diligent_1_1_command_list_base.html">TCommandListBase</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_diligent_1_1_command_list_d3_d11_impl.html">CommandListD3D11Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ID3D11CommandList *pd3d11CommandList);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_diligent_1_1_command_list_d3_d11_impl.html">CommandListD3D11Impl</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ID3D11CommandList *GetD3D11CommandList(){ <span class="keywordflow">return</span> m_pd3d11CommandList; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  CComPtr<ID3D11CommandList> m_pd3d11CommandList; </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="class_diligent_1_1_command_list_base_html"><div class="ttname"><a href="class_diligent_1_1_command_list_base.html">Diligent::CommandListBase</a></div><div class="ttdoc">Template class implementing base functionality for a command list object. </div><div class="ttdef"><b>Definition:</b> CommandListBase.h:45</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "CommandListBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_list_d3_d11_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_command_list_d3_d11_impl.html">CommandListD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase</a><ICommandList></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase<ICommandList></a> <a class="code" href="class_diligent_1_1_command_list_base.html">TCommandListBase</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_diligent_1_1_command_list_d3_d11_impl.html">CommandListD3D11Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ID3D11CommandList *pd3d11CommandList);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_diligent_1_1_command_list_d3_d11_impl.html">CommandListD3D11Impl</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ID3D11CommandList *GetD3D11CommandList(){ <span class="keywordflow">return</span> m_pd3d11CommandList; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  CComPtr<ID3D11CommandList> m_pd3d11CommandList; </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="class_diligent_1_1_command_list_base_html"><div class="ttname"><a href="class_diligent_1_1_command_list_base.html">Diligent::CommandListBase</a></div><div class="ttdoc">Template class implementing base functionality for a command list object. </div><div class="ttdef"><b>Definition:</b> CommandListBase.h:45</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_command_list_d3_d11_impl_html"><div class="ttname"><a href="class_diligent_1_1_command_list_d3_d11_impl.html">Diligent::CommandListD3D11Impl</a></div><div class="ttdoc">Implementation of the Diligent::ICommandListD3D11 interface. </div><div class="ttdef"><b>Definition:</b> CommandListD3D11Impl.h:38</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_command_list_d3_d12_impl_8h_source.html b/doc/html/_command_list_d3_d12_impl_8h_source.html index aa318c7f..0bb3b431 100644 --- a/doc/html/_command_list_d3_d12_impl_8h_source.html +++ b/doc/html/_command_list_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">CommandListD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "CommandListBase.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_list_d3_d12_impl.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_command_list_d3_d12_impl.html">CommandListD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase</a><ICommandList></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase<ICommandList></a> <a class="code" href="class_diligent_1_1_command_list_base.html">TCommandListBase</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_command_list_d3_d12_impl.html">CommandListD3D12Impl</a>(IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, <span class="keyword">class</span> CommandContext* pCmdContext) :</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_diligent_1_1_command_list_base.html">TCommandListBase</a>(pRefCounters, pDevice),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pCmdContext(pCmdContext)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_diligent_1_1_command_list_d3_d12_impl.html">CommandListD3D12Impl</a>()</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  VERIFY(m_pCmdContext == <span class="keyword">nullptr</span>, <span class="stringliteral">"Destroying command list that was never executed"</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  CommandContext* Close()</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  CommandContext* pCmdContext = m_pCmdContext;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_pCmdContext = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> pCmdContext;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  CommandContext* m_pCmdContext = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="ttc" id="class_diligent_1_1_command_list_base_html"><div class="ttname"><a href="class_diligent_1_1_command_list_base.html">Diligent::CommandListBase</a></div><div class="ttdoc">Template class implementing base functionality for a command list object. </div><div class="ttdef"><b>Definition:</b> CommandListBase.h:45</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "CommandListBase.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_list_d3_d12_impl.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_command_list_d3_d12_impl.html">CommandListD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase</a><ICommandList></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_command_list_base.html">CommandListBase<ICommandList></a> <a class="code" href="class_diligent_1_1_command_list_base.html">TCommandListBase</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_command_list_d3_d12_impl.html">CommandListD3D12Impl</a>(IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, <span class="keyword">class</span> CommandContext* pCmdContext) :</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_diligent_1_1_command_list_base.html">TCommandListBase</a>(pRefCounters, pDevice),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pCmdContext(pCmdContext)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_diligent_1_1_command_list_d3_d12_impl.html">CommandListD3D12Impl</a>()</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  VERIFY(m_pCmdContext == <span class="keyword">nullptr</span>, <span class="stringliteral">"Destroying command list that was never executed"</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  CommandContext* Close()</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  CommandContext* pCmdContext = m_pCmdContext;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_pCmdContext = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> pCmdContext;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  CommandContext* m_pCmdContext = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="ttc" id="class_diligent_1_1_command_list_base_html"><div class="ttname"><a href="class_diligent_1_1_command_list_base.html">Diligent::CommandListBase</a></div><div class="ttdoc">Template class implementing base functionality for a command list object. </div><div class="ttdef"><b>Definition:</b> CommandListBase.h:45</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_command_list_d3_d12_impl_html"><div class="ttname"><a href="class_diligent_1_1_command_list_d3_d12_impl.html">Diligent::CommandListD3D12Impl</a></div><div class="ttdoc">Implementation of the Diligent::ICommandList interface. </div><div class="ttdef"><b>Definition:</b> CommandListD3D12Impl.h:35</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_command_list_manager_8h_source.html b/doc/html/_command_list_manager_8h_source.html index af8fc9cb..5a8f1bdf 100644 --- a/doc/html/_command_list_manager_8h_source.html +++ b/doc/html/_command_list_manager_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">CommandListManager.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <deque></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <mutex></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <stdint.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span>CommandListManager</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  CommandListManager(<span class="keyword">class</span> RenderDeviceD3D12Impl *pDeviceD3D12);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  ~CommandListManager();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  CommandListManager(<span class="keyword">const</span> CommandListManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  CommandListManager(CommandListManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  CommandListManager& operator = (<span class="keyword">const</span> CommandListManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  CommandListManager& operator = (CommandListManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span> CreateNewCommandList( ID3D12GraphicsCommandList** ppList, ID3D12CommandAllocator** ppAllocator );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Discards the allocator.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// FenceValue is the value that was signaled by the command queue after it </span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// executed the the command list created by the allocator</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> DiscardAllocator( Uint64 FenceValue, ID3D12CommandAllocator* pAllocator );</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> RequestAllocator(ID3D12CommandAllocator** ppAllocator);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// fist - the fence value associated with the command list that was created by the allocator </span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// second - the allocator to be discarded</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">typedef</span> std::pair<Uint64, CComPtr<ID3D12CommandAllocator> > DiscardedAllocatorQueueElemType;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::deque< DiscardedAllocatorQueueElemType, STDAllocatorRawMem<DiscardedAllocatorQueueElemType> > m_DiscardedAllocators;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  std::mutex m_AllocatorMutex;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  RenderDeviceD3D12Impl *m_pDeviceD3D12;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  Atomics::AtomicLong m_NumAllocators = 0; <span class="comment">// For debug purposes only</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <deque></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <mutex></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <stdint.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span>CommandListManager</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  CommandListManager(<span class="keyword">class</span> RenderDeviceD3D12Impl *pDeviceD3D12);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  ~CommandListManager();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  CommandListManager(<span class="keyword">const</span> CommandListManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  CommandListManager(CommandListManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  CommandListManager& operator = (<span class="keyword">const</span> CommandListManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  CommandListManager& operator = (CommandListManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span> CreateNewCommandList( ID3D12GraphicsCommandList** ppList, ID3D12CommandAllocator** ppAllocator );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Discards the allocator.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// FenceValue is the value that was signaled by the command queue after it </span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// executed the the command list created by the allocator</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> DiscardAllocator( Uint64 FenceValue, ID3D12CommandAllocator* pAllocator );</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> RequestAllocator(ID3D12CommandAllocator** ppAllocator);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// fist - the fence value associated with the command list that was created by the allocator </span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// second - the allocator to be discarded</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">typedef</span> std::pair<Uint64, CComPtr<ID3D12CommandAllocator> > DiscardedAllocatorQueueElemType;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::deque< DiscardedAllocatorQueueElemType, STDAllocatorRawMem<DiscardedAllocatorQueueElemType> > m_DiscardedAllocators;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  std::mutex m_AllocatorMutex;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  RenderDeviceD3D12Impl *m_pDeviceD3D12;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  Atomics::AtomicLong m_NumAllocators = 0; <span class="comment">// For debug purposes only</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_command_queue_d3_d12_8h_source.html b/doc/html/_command_queue_d3_d12_8h_source.html index 219cd715..b8c4cbc8 100644 --- a/doc/html/_command_queue_d3_d12_8h_source.html +++ b/doc/html/_command_queue_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">CommandQueueD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// {D89693CE-F3F4-44B5-B7EF-24115AAD085E}</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_CommandQueueD3D12 =</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> { 0xd89693ce, 0xf3f4, 0x44b5, { 0xb7, 0xef, 0x24, 0x11, 0x5a, 0xad, 0x8, 0x5e } };</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_command_queue_d3_d12.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html">ICommandQueueD3D12</a> : <span class="keyword">public</span> Diligent::IObject</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> UINT64 <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html#adda584f2430a53520af4c8b934e5c407">GetNextFenceValue</a>() = 0;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> UINT64 <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html#a19ecae695f1e1f160bb17fccbda4f972">ExecuteCommandList</a>(ID3D12GraphicsCommandList* commandList) = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> ID3D12CommandQueue* <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html#a39d8d8b4a98d0ebfc3050e9fa89c8c71">GetD3D12CommandQueue</a>() = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> Uint64 <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html#a4acb25ab54d5105af8f1805812957d27">GetCompletedFenceValue</a>() = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html#a600037967c7c1d24480accc4b7ba999b">IdleGPU</a>() = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="class_diligent_1_1_i_command_queue_d3_d12_html_a39d8d8b4a98d0ebfc3050e9fa89c8c71"><div class="ttname"><a href="class_diligent_1_1_i_command_queue_d3_d12.html#a39d8d8b4a98d0ebfc3050e9fa89c8c71">Diligent::ICommandQueueD3D12::GetD3D12CommandQueue</a></div><div class="ttdeci">virtual ID3D12CommandQueue * GetD3D12CommandQueue()=0</div><div class="ttdoc">Returns D3D12 command queue. May return null if queue is anavailable. </div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// {D89693CE-F3F4-44B5-B7EF-24115AAD085E}</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_CommandQueueD3D12 =</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> { 0xd89693ce, 0xf3f4, 0x44b5, { 0xb7, 0xef, 0x24, 0x11, 0x5a, 0xad, 0x8, 0x5e } };</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_command_queue_d3_d12.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html">ICommandQueueD3D12</a> : <span class="keyword">public</span> Diligent::IObject</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> UINT64 <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html#adda584f2430a53520af4c8b934e5c407">GetNextFenceValue</a>() = 0;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> UINT64 <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html#a19ecae695f1e1f160bb17fccbda4f972">ExecuteCommandList</a>(ID3D12GraphicsCommandList* commandList) = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> ID3D12CommandQueue* <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html#a39d8d8b4a98d0ebfc3050e9fa89c8c71">GetD3D12CommandQueue</a>() = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> Uint64 <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html#a4acb25ab54d5105af8f1805812957d27">GetCompletedFenceValue</a>() = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html#a600037967c7c1d24480accc4b7ba999b">IdleGPU</a>() = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="class_diligent_1_1_i_command_queue_d3_d12_html_a39d8d8b4a98d0ebfc3050e9fa89c8c71"><div class="ttname"><a href="class_diligent_1_1_i_command_queue_d3_d12.html#a39d8d8b4a98d0ebfc3050e9fa89c8c71">Diligent::ICommandQueueD3D12::GetD3D12CommandQueue</a></div><div class="ttdeci">virtual ID3D12CommandQueue * GetD3D12CommandQueue()=0</div><div class="ttdoc">Returns D3D12 command queue. May return null if queue is anavailable. </div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_command_queue_d3_d12_html_a4acb25ab54d5105af8f1805812957d27"><div class="ttname"><a href="class_diligent_1_1_i_command_queue_d3_d12.html#a4acb25ab54d5105af8f1805812957d27">Diligent::ICommandQueueD3D12::GetCompletedFenceValue</a></div><div class="ttdeci">virtual Uint64 GetCompletedFenceValue()=0</div><div class="ttdoc">Returns value of the last completed fence. </div></div> <div class="ttc" id="class_diligent_1_1_i_command_queue_d3_d12_html_adda584f2430a53520af4c8b934e5c407"><div class="ttname"><a href="class_diligent_1_1_i_command_queue_d3_d12.html#adda584f2430a53520af4c8b934e5c407">Diligent::ICommandQueueD3D12::GetNextFenceValue</a></div><div class="ttdeci">virtual UINT64 GetNextFenceValue()=0</div><div class="ttdoc">Returns the fence value that will be signaled next time. </div></div> @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_command_queue_d3_d12_impl_8h_source.html b/doc/html/_command_queue_d3_d12_impl_8h_source.html index 32968041..ea089b3d 100644 --- a/doc/html/_command_queue_d3_d12_impl_8h_source.html +++ b/doc/html/_command_queue_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">CommandQueueD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "CommandQueueD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_queue_d3_d12_impl.html"> 36</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html">CommandQueueD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><ICommandQueueD3D12></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<ICommandQueueD3D12></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html">CommandQueueD3D12Impl</a>(IReferenceCounters *pRefCounters, ID3D12CommandQueue *pd3d12NativeCmdQueue, ID3D12Fence *pd3d12Fence);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ~<a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html">CommandQueueD3D12Impl</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Returns the fence value that will be signaled next time</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a91523073b202a34b9192ff7487d81c95"> 47</a></span>  <span class="keyword">virtual</span> UINT64 <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a91523073b202a34b9192ff7487d81c95">GetNextFenceValue</a>()override final { <span class="keywordflow">return</span> m_NextFenceValue; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// Executes a given command list</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> UINT64 <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a249c30685a6308f587c5a5dcb3317890">ExecuteCommandList</a>(ID3D12GraphicsCommandList* commandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a2fbc0241cf97639ae136df2d4369e113"> 52</a></span>  <span class="keyword">virtual</span> ID3D12CommandQueue* <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a2fbc0241cf97639ae136df2d4369e113">GetD3D12CommandQueue</a>()override final { <span class="keywordflow">return</span> m_pd3d12CmdQueue; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a90f87e462c3f8cd7a5c9745271650bbc">IdleGPU</a>()override final;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  virtual Uint64 <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a8ea4953f59a1b70108c4e033fa197a0e">GetCompletedFenceValue</a>()override final;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> private:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// A value that will be signaled by the command queue next</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  Atomics::AtomicInt64 m_NextFenceValue;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Last fence value completed by the GPU</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  volatile Uint64 m_LastCompletedFenceValue = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  CComPtr<ID3D12CommandQueue> m_pd3d12CmdQueue;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// The fence is signaled right after the command list has been </span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// submitted to the command queue for execution.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// All command lists with fence value less or equal to the signaled value</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// are guaranteed to be finished by the GPU</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  CComPtr<ID3D12Fence> m_d3d12Fence;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  HANDLE m_WaitForGPUEventHandle = {};</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> };</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="ttc" id="class_diligent_1_1_command_queue_d3_d12_impl_html_a2fbc0241cf97639ae136df2d4369e113"><div class="ttname"><a href="class_diligent_1_1_command_queue_d3_d12_impl.html#a2fbc0241cf97639ae136df2d4369e113">Diligent::CommandQueueD3D12Impl::GetD3D12CommandQueue</a></div><div class="ttdeci">virtual ID3D12CommandQueue * GetD3D12CommandQueue() override final</div><div class="ttdoc">Returns D3D12 command queue. May return null if queue is anavailable. </div><div class="ttdef"><b>Definition:</b> CommandQueueD3D12Impl.h:52</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "CommandQueueD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_queue_d3_d12_impl.html"> 36</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html">CommandQueueD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><ICommandQueueD3D12></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<ICommandQueueD3D12></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html">CommandQueueD3D12Impl</a>(IReferenceCounters *pRefCounters, ID3D12CommandQueue *pd3d12NativeCmdQueue, ID3D12Fence *pd3d12Fence);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ~<a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html">CommandQueueD3D12Impl</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Returns the fence value that will be signaled next time</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a91523073b202a34b9192ff7487d81c95"> 47</a></span>  <span class="keyword">virtual</span> UINT64 <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a91523073b202a34b9192ff7487d81c95">GetNextFenceValue</a>()override final { <span class="keywordflow">return</span> m_NextFenceValue; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// Executes a given command list</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> UINT64 <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a249c30685a6308f587c5a5dcb3317890">ExecuteCommandList</a>(ID3D12GraphicsCommandList* commandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a2fbc0241cf97639ae136df2d4369e113"> 52</a></span>  <span class="keyword">virtual</span> ID3D12CommandQueue* <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a2fbc0241cf97639ae136df2d4369e113">GetD3D12CommandQueue</a>()override final { <span class="keywordflow">return</span> m_pd3d12CmdQueue; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a90f87e462c3f8cd7a5c9745271650bbc">IdleGPU</a>()override final;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  virtual Uint64 <a class="code" href="class_diligent_1_1_command_queue_d3_d12_impl.html#a8ea4953f59a1b70108c4e033fa197a0e">GetCompletedFenceValue</a>()override final;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> private:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// A value that will be signaled by the command queue next</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  Atomics::AtomicInt64 m_NextFenceValue;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Last fence value completed by the GPU</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  volatile Uint64 m_LastCompletedFenceValue = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  CComPtr<ID3D12CommandQueue> m_pd3d12CmdQueue;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// The fence is signaled right after the command list has been </span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// submitted to the command queue for execution.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// All command lists with fence value less or equal to the signaled value</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// are guaranteed to be finished by the GPU</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  CComPtr<ID3D12Fence> m_d3d12Fence;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  HANDLE m_WaitForGPUEventHandle = {};</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> };</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="ttc" id="class_diligent_1_1_command_queue_d3_d12_impl_html_a2fbc0241cf97639ae136df2d4369e113"><div class="ttname"><a href="class_diligent_1_1_command_queue_d3_d12_impl.html#a2fbc0241cf97639ae136df2d4369e113">Diligent::CommandQueueD3D12Impl::GetD3D12CommandQueue</a></div><div class="ttdeci">virtual ID3D12CommandQueue * GetD3D12CommandQueue() override final</div><div class="ttdoc">Returns D3D12 command queue. May return null if queue is anavailable. </div><div class="ttdef"><b>Definition:</b> CommandQueueD3D12Impl.h:52</div></div> <div class="ttc" id="class_diligent_1_1_command_queue_d3_d12_impl_html_a91523073b202a34b9192ff7487d81c95"><div class="ttname"><a href="class_diligent_1_1_command_queue_d3_d12_impl.html#a91523073b202a34b9192ff7487d81c95">Diligent::CommandQueueD3D12Impl::GetNextFenceValue</a></div><div class="ttdeci">virtual UINT64 GetNextFenceValue() override final</div><div class="ttdoc">Returns the fence value that will be signaled next time. </div><div class="ttdef"><b>Definition:</b> CommandQueueD3D12Impl.h:47</div></div> <div class="ttc" id="class_diligent_1_1_command_queue_d3_d12_impl_html_a8ea4953f59a1b70108c4e033fa197a0e"><div class="ttname"><a href="class_diligent_1_1_command_queue_d3_d12_impl.html#a8ea4953f59a1b70108c4e033fa197a0e">Diligent::CommandQueueD3D12Impl::GetCompletedFenceValue</a></div><div class="ttdeci">virtual Uint64 GetCompletedFenceValue() override final</div><div class="ttdoc">Returns value of the last completed fence. </div><div class="ttdef"><b>Definition:</b> CommandQueueD3D12Impl.cpp:73</div></div> <div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_common_2include_2pch_8h_source.html b/doc/html/_common_2include_2pch_8h_source.html index 678f0655..c8edf8db 100644 --- a/doc/html/_common_2include_2pch_8h_source.html +++ b/doc/html/_common_2include_2pch_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">pch.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// stdafx.h : include file for standard system include files,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// or project specific include files that are used frequently, but</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// are changed infrequently</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "FileWrapper.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// stdafx.h : include file for standard system include files,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// or project specific include files that are used frequently, but</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// are changed infrequently</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "FileWrapper.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_commonly_used_states_8h_source.html b/doc/html/_commonly_used_states_8h_source.html index e8747256..90c05019 100644 --- a/doc/html/_commonly_used_states_8h_source.html +++ b/doc/html/_commonly_used_states_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">CommonlyUsedStates.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DepthStencilState.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BlendState.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "RasterizerState.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// Common depth-stencil states</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> DepthStencilStateDesc DSS_DisableDepth(False, False);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// Common rasterizer states</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> RasterizerStateDesc RS_SolidFillNoCull(<a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf">FILL_MODE_SOLID</a>, <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a88bffa666bf1f0913c785f5adcc51a3c">CULL_MODE_NONE</a>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">const</span> RasterizerStateDesc RS_WireFillNoCull(<a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a">FILL_MODE_WIREFRAME</a>, <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a88bffa666bf1f0913c785f5adcc51a3c">CULL_MODE_NONE</a>, <span class="keyword">false</span>, 1, 0.f, 1.f);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Common sampler states</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">const</span> SamplerDesc Sam_LinearClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> SamplerDesc Sam_PointClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">const</span> SamplerDesc Sam_LinearMirror(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> SamplerDesc Sam_PointWrap(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">const</span> SamplerDesc Sam_LinearWrap(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> SamplerDesc Sam_Aniso2xClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, 0.f, 2);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">const</span> SamplerDesc Sam_Aniso4xClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, 0.f, 4);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">const</span> SamplerDesc Sam_Aniso8xClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, 0.f, 8);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">const</span> SamplerDesc Sam_Aniso16xClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, 0.f, 16);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">const</span> SamplerDesc Sam_Aniso8xWrap(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, 0.f, 8);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="ttc" id="namespace_diligent_html_a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a"><div class="ttname"><a href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a">Diligent::FILL_MODE_WIREFRAME</a></div><div class="ttdoc">Rasterize triangles using wireframe fill. Direct3D counterpart: D3D11_FILL_WIREFRAME/D3D12_FILL_MOD...</div><div class="ttdef"><b>Definition:</b> RasterizerState.h:47</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DepthStencilState.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BlendState.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "RasterizerState.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// Common depth-stencil states</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> DepthStencilStateDesc DSS_DisableDepth(False, False);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// Common rasterizer states</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> RasterizerStateDesc RS_SolidFillNoCull(<a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf">FILL_MODE_SOLID</a>, <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a88bffa666bf1f0913c785f5adcc51a3c">CULL_MODE_NONE</a>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">const</span> RasterizerStateDesc RS_WireFillNoCull(<a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a">FILL_MODE_WIREFRAME</a>, <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a88bffa666bf1f0913c785f5adcc51a3c">CULL_MODE_NONE</a>, <span class="keyword">false</span>, 1, 0.f, 1.f);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Common sampler states</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">const</span> SamplerDesc Sam_LinearClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> SamplerDesc Sam_PointClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">const</span> SamplerDesc Sam_LinearMirror(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> SamplerDesc Sam_PointWrap(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">const</span> SamplerDesc Sam_LinearWrap(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> SamplerDesc Sam_Aniso2xClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, 0.f, 2);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">const</span> SamplerDesc Sam_Aniso4xClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, 0.f, 4);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">const</span> SamplerDesc Sam_Aniso8xClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, 0.f, 8);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">const</span> SamplerDesc Sam_Aniso16xClamp(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>, 0.f, 16);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">const</span> SamplerDesc Sam_Aniso8xWrap(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>, 0.f, 8);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="ttc" id="namespace_diligent_html_a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a"><div class="ttname"><a href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a">Diligent::FILL_MODE_WIREFRAME</a></div><div class="ttdoc">Rasterize triangles using wireframe fill. Direct3D counterpart: D3D11_FILL_WIREFRAME/D3D12_FILL_MOD...</div><div class="ttdef"><b>Definition:</b> RasterizerState.h:47</div></div> <div class="ttc" id="namespace_diligent_html_a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f"><div class="ttname"><a href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">Diligent::TEXTURE_ADDRESS_CLAMP</a></div><div class="ttdoc">Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively. Direct3D Counterpart: D3D11_TEXTURE_ADDRESS_CLAMP/D3D12_TEXTURE_ADDRESS_MODE_CLAMP. OpenGL counterpart: GL_CLAMP_TO_EDGE. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:821</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf"><div class="ttname"><a href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf">Diligent::FILL_MODE_SOLID</a></div><div class="ttdoc">Rasterize triangles using solid fill. Direct3D counterpart: D3D11_FILL_SOLID/D3D12_FILL_MODE_SOLID...</div><div class="ttdef"><b>Definition:</b> RasterizerState.h:51</div></div> diff --git a/doc/html/_constants_8h_source.html b/doc/html/_constants_8h_source.html index 477008a7..f553a356 100644 --- a/doc/html/_constants_8h_source.html +++ b/doc/html/_constants_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">Constants.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722"> 33</a></span>  <span class="keyword">static</span> constexpr Uint32 <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a> = 32;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8"> 36</a></span>  <span class="keyword">static</span> constexpr Uint32 <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a> = 8;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="ttc" id="namespace_diligent_html_a9d3d207f6d44cb2988a2748e4dc97722"><div class="ttname"><a href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">Diligent::MaxBufferSlots</a></div><div class="ttdeci">static constexpr Uint32 MaxBufferSlots</div><div class="ttdoc">Maximum number of input buffer slots. D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT == 32...</div><div class="ttdef"><b>Definition:</b> Constants.h:33</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722"> 33</a></span>  <span class="keyword">static</span> constexpr Uint32 <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a> = 32;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8"> 36</a></span>  <span class="keyword">static</span> constexpr Uint32 <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a> = 8;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="ttc" id="namespace_diligent_html_a9d3d207f6d44cb2988a2748e4dc97722"><div class="ttname"><a href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">Diligent::MaxBufferSlots</a></div><div class="ttdeci">static constexpr Uint32 MaxBufferSlots</div><div class="ttdoc">Maximum number of input buffer slots. D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT == 32...</div><div class="ttdef"><b>Definition:</b> Constants.h:33</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespace_diligent_html_ac667e59fc3ba021e3bd1d1424a3674d8"><div class="ttname"><a href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">Diligent::MaxRenderTargets</a></div><div class="ttdeci">static constexpr Uint32 MaxRenderTargets</div><div class="ttdoc">Maximum number of simultaneous render targets. </div><div class="ttdef"><b>Definition:</b> Constants.h:36</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_d3_d11_debug_utilities_8h_source.html b/doc/html/_d3_d11_debug_utilities_8h_source.html index 43c2dbff..7364d181 100644 --- a/doc/html/_d3_d11_debug_utilities_8h_source.html +++ b/doc/html/_d3_d11_debug_utilities_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">D3D11DebugUtilities.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_d3_d11_type_conversions_8h_source.html b/doc/html/_d3_d11_type_conversions_8h_source.html index 4d10fc96..c626276a 100644 --- a/doc/html/_d3_d11_type_conversions_8h_source.html +++ b/doc/html/_d3_d11_type_conversions_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">D3D11TypeConversions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DXGITypeConversions.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">inline</span> UINT BindFlagsToD3D11BindFlags(Uint32 BindFlags)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  UINT D3D11BindFlags = 0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c">BIND_VERTEX_BUFFER</a>) ? D3D11_BIND_VERTEX_BUFFER : 0);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03">BIND_INDEX_BUFFER</a>) ? D3D11_BIND_INDEX_BUFFER : 0);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9">BIND_UNIFORM_BUFFER</a>) ? D3D11_BIND_CONSTANT_BUFFER : 0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a>) ? D3D11_BIND_SHADER_RESOURCE : 0);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea6e78d02c83dd86d2706c23cb7dc30222">BIND_STREAM_OUTPUT</a>) ? D3D11_BIND_STREAM_OUTPUT : 0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">BIND_RENDER_TARGET</a>) ? D3D11_BIND_RENDER_TARGET : 0);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08">BIND_DEPTH_STENCIL</a>) ? D3D11_BIND_DEPTH_STENCIL : 0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a>) ? D3D11_BIND_UNORDERED_ACCESS : 0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> D3D11BindFlags;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">inline</span> Uint32 D3D11BindFlagsToBindFlags(UINT D3D11BindFlags)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  Uint32 BindFlags = 0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_VERTEX_BUFFER) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c">BIND_VERTEX_BUFFER</a> : 0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_INDEX_BUFFER) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03">BIND_INDEX_BUFFER</a> : 0);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_CONSTANT_BUFFER) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9">BIND_UNIFORM_BUFFER</a> : 0);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_SHADER_RESOURCE) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a> : 0);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_STREAM_OUTPUT) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea6e78d02c83dd86d2706c23cb7dc30222">BIND_STREAM_OUTPUT</a> : 0);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_RENDER_TARGET) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">BIND_RENDER_TARGET</a> : 0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_DEPTH_STENCIL) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08">BIND_DEPTH_STENCIL</a> : 0);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_UNORDERED_ACCESS) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a> : 0);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  VERIFY_EXPR( (D3D11BindFlags & </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  (D3D11_BIND_VERTEX_BUFFER|D3D11_BIND_INDEX_BUFFER|D3D11_BIND_CONSTANT_BUFFER|</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_STREAM_OUTPUT|D3D11_BIND_RENDER_TARGET|</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  D3D11_BIND_DEPTH_STENCIL|D3D11_BIND_UNORDERED_ACCESS)) == BindFlagsToD3D11BindFlags(BindFlags));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> BindFlags;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> D3D11_PRIMITIVE_TOPOLOGY TopologyToD3D11Topology(<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> Topology);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">inline</span> D3D11_USAGE UsageToD3D11Usage(<a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> Usage)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">switch</span>(Usage)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746aad6764a09ac229be9768507bf46c9747">USAGE_STATIC</a>: <span class="keywordflow">return</span> D3D11_USAGE_IMMUTABLE;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>: <span class="keywordflow">return</span> D3D11_USAGE_DEFAULT;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>: <span class="keywordflow">return</span> D3D11_USAGE_DYNAMIC;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>: <span class="keywordflow">return</span> D3D11_USAGE_STAGING;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unknow usage"</span> ); <span class="keywordflow">return</span> D3D11_USAGE_DEFAULT;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> D3D11UsageToUsage(D3D11_USAGE D3D11Usage)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">switch</span>(D3D11Usage)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">case</span> D3D11_USAGE_IMMUTABLE: <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746aad6764a09ac229be9768507bf46c9747">USAGE_STATIC</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">case</span> D3D11_USAGE_DEFAULT: <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">case</span> D3D11_USAGE_DYNAMIC: <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">case</span> D3D11_USAGE_STAGING: <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unknow D3D11 usage"</span> ); <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> MapParamsToD3D11MapParams(<a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, D3D11_MAP &d3d11MapType, UINT d3d11MapFlags)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> { </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  d3d11MapType = <span class="keyword">static_cast<</span>D3D11_MAP<span class="keyword">></span>(0);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">switch</span>(MapType)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357a65436444d4034265e317ebc832a56cd4">MAP_READ</a>: </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  d3d11MapType = D3D11_MAP_READ;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab">MAP_WRITE</a>: </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a>)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  d3d11MapType = D3D11_MAP_WRITE_DISCARD;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a329aa426e3e1dc2ae4ce397bd3eb4f38">MAP_FLAG_DO_NOT_SYNCHRONIZE</a>)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  d3d11MapType = D3D11_MAP_WRITE_NO_OVERWRITE;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">else</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  d3d11MapType = D3D11_MAP_WRITE;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357af0effcf3a0f2ac99c954744ea9a09f85">MAP_READ_WRITE</a>: </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  d3d11MapType = D3D11_MAP_READ_WRITE;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">default</span>: </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  UNEXPECTED( <span class="stringliteral">"Unknown map type"</span> );</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  d3d11MapFlags = 0;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  d3d11MapFlags |= (MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6acbd8dc9cee248433c31593e4a62ecb15">MAP_FLAG_DO_NOT_WAIT</a>) ? D3D11_MAP_FLAG_DO_NOT_WAIT : 0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keyword">inline</span> UINT MapFlagsToD3D11MapFlags(Uint32 MapFlags)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keyword">inline</span> UINT CPUAccessFlagsToD3D11CPUAccessFlags(Uint32 Flags)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  UINT D3D11CPUAccessFlags = 0;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  D3D11CPUAccessFlags |= (Flags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364">CPU_ACCESS_READ</a>) ? D3D11_CPU_ACCESS_READ : 0;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  D3D11CPUAccessFlags |= (Flags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a>) ? D3D11_CPU_ACCESS_WRITE : 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> D3D11CPUAccessFlags;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">inline</span> Uint32 D3D11CPUAccessFlagsToCPUAccessFlags(UINT D3D11CPUAccessFlags)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  Uint32 CPUAccessFlags = 0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  CPUAccessFlags |= (D3D11CPUAccessFlags & D3D11_CPU_ACCESS_READ) ? <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364">CPU_ACCESS_READ</a> : 0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  CPUAccessFlags |= (D3D11CPUAccessFlags & D3D11_CPU_ACCESS_WRITE) ? <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a> : 0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  VERIFY_EXPR(D3D11CPUAccessFlags == CPUAccessFlagsToD3D11CPUAccessFlags(CPUAccessFlags));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> CPUAccessFlags;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">inline</span> UINT MiscTextureFlagsToD3D11Flags(Uint32 Flags)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  UINT D3D11MiscFlags = 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  D3D11MiscFlags |= (Flags & <a class="code" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782a926903219be74a74df00dedd41cd1d84">MISC_TEXTURE_FLAG_GENERATE_MIPS</a>) ? D3D11_RESOURCE_MISC_GENERATE_MIPS : 0;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> D3D11MiscFlags;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">inline</span> Uint32 D3D11MiscFlagsToMiscTextureFlags(UINT D3D11MiscFlags)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  Uint32 MiscFlags = 0;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  MiscFlags |= (D3D11MiscFlags & D3D11_RESOURCE_MISC_GENERATE_MIPS) ? <a class="code" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782a926903219be74a74df00dedd41cd1d84">MISC_TEXTURE_FLAG_GENERATE_MIPS</a> : 0;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> MiscFlags;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> D3D11_FILTER FilterTypeToD3D11Filter(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MinFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MagFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MipFilter);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> D3D11_TEXTURE_ADDRESS_MODE TexAddressModeToD3D11AddressMode(<a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> Mode);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> D3D11_COMPARISON_FUNC ComparisonFuncToD3D11ComparisonFunc(<a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keywordtype">void</span> DepthStencilStateDesc_To_D3D11_DEPTH_STENCIL_DESC(<span class="keyword">const</span> DepthStencilStateDesc &DepthStencilDesc, D3D11_DEPTH_STENCIL_DESC &d3d11DSSDesc);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keywordtype">void</span> RasterizerStateDesc_To_D3D11_RASTERIZER_DESC(<span class="keyword">const</span> RasterizerStateDesc &RasterizerDesc, D3D11_RASTERIZER_DESC &d3d11RSDesc);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">void</span> BlendStateDesc_To_D3D11_BLEND_DESC(<span class="keyword">const</span> BlendStateDesc &BSDesc, D3D11_BLEND_DESC &D3D11BSDesc);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keywordtype">void</span> LayoutElements_To_D3D11_INPUT_ELEMENT_DESCs(<span class="keyword">const</span> std::vector<LayoutElement, STDAllocatorRawMem<LayoutElement> > &LayoutElements, </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  std::vector<D3D11_INPUT_ELEMENT_DESC, STDAllocatorRawMem<D3D11_INPUT_ELEMENT_DESC> > &D3D11InputElements);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D11_SRV_DESC(<span class="keyword">const</span> TextureViewDesc& TexViewDesc, D3D11_SHADER_RESOURCE_VIEW_DESC &D3D11SRVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D11_RTV_DESC(<span class="keyword">const</span> TextureViewDesc& TexViewDesc, D3D11_RENDER_TARGET_VIEW_DESC &D3D11RTVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D11_DSV_DESC(<span class="keyword">const</span> TextureViewDesc& TexViewDesc, D3D11_DEPTH_STENCIL_VIEW_DESC &D3D11DSVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D11_UAV_DESC(<span class="keyword">const</span> TextureViewDesc& TexViewDesc, D3D11_UNORDERED_ACCESS_VIEW_DESC &D3D11UAVDesc);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="keywordtype">void</span> BufferViewDesc_to_D3D11_SRV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& SRVDesc, D3D11_SHADER_RESOURCE_VIEW_DESC &D3D11SRVDesc);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keywordtype">void</span> BufferViewDesc_to_D3D11_UAV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& UAVDesc, D3D11_UNORDERED_ACCESS_VIEW_DESC &D3D11UAVDesc);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div><div class="ttc" id="namespace_diligent_html_ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89"><div class="ttname"><a href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">Diligent::BIND_RENDER_TARGET</a></div><div class="ttdoc">A texture can be bound as a render target. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:71</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DXGITypeConversions.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">inline</span> UINT BindFlagsToD3D11BindFlags(Uint32 BindFlags)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  UINT D3D11BindFlags = 0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c">BIND_VERTEX_BUFFER</a>) ? D3D11_BIND_VERTEX_BUFFER : 0);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03">BIND_INDEX_BUFFER</a>) ? D3D11_BIND_INDEX_BUFFER : 0);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9">BIND_UNIFORM_BUFFER</a>) ? D3D11_BIND_CONSTANT_BUFFER : 0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a>) ? D3D11_BIND_SHADER_RESOURCE : 0);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea6e78d02c83dd86d2706c23cb7dc30222">BIND_STREAM_OUTPUT</a>) ? D3D11_BIND_STREAM_OUTPUT : 0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">BIND_RENDER_TARGET</a>) ? D3D11_BIND_RENDER_TARGET : 0);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08">BIND_DEPTH_STENCIL</a>) ? D3D11_BIND_DEPTH_STENCIL : 0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  D3D11BindFlags = D3D11BindFlags | ((BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a>) ? D3D11_BIND_UNORDERED_ACCESS : 0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> D3D11BindFlags;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">inline</span> Uint32 D3D11BindFlagsToBindFlags(UINT D3D11BindFlags)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  Uint32 BindFlags = 0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_VERTEX_BUFFER) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c">BIND_VERTEX_BUFFER</a> : 0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_INDEX_BUFFER) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03">BIND_INDEX_BUFFER</a> : 0);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_CONSTANT_BUFFER) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9">BIND_UNIFORM_BUFFER</a> : 0);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_SHADER_RESOURCE) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a> : 0);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_STREAM_OUTPUT) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea6e78d02c83dd86d2706c23cb7dc30222">BIND_STREAM_OUTPUT</a> : 0);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_RENDER_TARGET) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">BIND_RENDER_TARGET</a> : 0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_DEPTH_STENCIL) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08">BIND_DEPTH_STENCIL</a> : 0);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  BindFlags = BindFlags | ((D3D11BindFlags & D3D11_BIND_UNORDERED_ACCESS) ? <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a> : 0);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  VERIFY_EXPR( (D3D11BindFlags & </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  (D3D11_BIND_VERTEX_BUFFER|D3D11_BIND_INDEX_BUFFER|D3D11_BIND_CONSTANT_BUFFER|</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_STREAM_OUTPUT|D3D11_BIND_RENDER_TARGET|</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  D3D11_BIND_DEPTH_STENCIL|D3D11_BIND_UNORDERED_ACCESS)) == BindFlagsToD3D11BindFlags(BindFlags));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> BindFlags;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> D3D11_PRIMITIVE_TOPOLOGY TopologyToD3D11Topology(<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> Topology);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">inline</span> D3D11_USAGE UsageToD3D11Usage(<a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> Usage)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">switch</span>(Usage)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746aad6764a09ac229be9768507bf46c9747">USAGE_STATIC</a>: <span class="keywordflow">return</span> D3D11_USAGE_IMMUTABLE;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>: <span class="keywordflow">return</span> D3D11_USAGE_DEFAULT;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>: <span class="keywordflow">return</span> D3D11_USAGE_DYNAMIC;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>: <span class="keywordflow">return</span> D3D11_USAGE_STAGING;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unknow usage"</span> ); <span class="keywordflow">return</span> D3D11_USAGE_DEFAULT;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> D3D11UsageToUsage(D3D11_USAGE D3D11Usage)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">switch</span>(D3D11Usage)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">case</span> D3D11_USAGE_IMMUTABLE: <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746aad6764a09ac229be9768507bf46c9747">USAGE_STATIC</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">case</span> D3D11_USAGE_DEFAULT: <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">case</span> D3D11_USAGE_DYNAMIC: <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">case</span> D3D11_USAGE_STAGING: <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unknow D3D11 usage"</span> ); <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> MapParamsToD3D11MapParams(<a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, D3D11_MAP &d3d11MapType, UINT d3d11MapFlags)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> { </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  d3d11MapType = <span class="keyword">static_cast<</span>D3D11_MAP<span class="keyword">></span>(0);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">switch</span>(MapType)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357a65436444d4034265e317ebc832a56cd4">MAP_READ</a>: </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  d3d11MapType = D3D11_MAP_READ;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab">MAP_WRITE</a>: </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a>)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  d3d11MapType = D3D11_MAP_WRITE_DISCARD;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a329aa426e3e1dc2ae4ce397bd3eb4f38">MAP_FLAG_DO_NOT_SYNCHRONIZE</a>)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  d3d11MapType = D3D11_MAP_WRITE_NO_OVERWRITE;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">else</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  d3d11MapType = D3D11_MAP_WRITE;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357af0effcf3a0f2ac99c954744ea9a09f85">MAP_READ_WRITE</a>: </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  d3d11MapType = D3D11_MAP_READ_WRITE;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">default</span>: </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  UNEXPECTED( <span class="stringliteral">"Unknown map type"</span> );</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  d3d11MapFlags = 0;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  d3d11MapFlags |= (MapFlags & <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6acbd8dc9cee248433c31593e4a62ecb15">MAP_FLAG_DO_NOT_WAIT</a>) ? D3D11_MAP_FLAG_DO_NOT_WAIT : 0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keyword">inline</span> UINT MapFlagsToD3D11MapFlags(Uint32 MapFlags)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keyword">inline</span> UINT CPUAccessFlagsToD3D11CPUAccessFlags(Uint32 Flags)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  UINT D3D11CPUAccessFlags = 0;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  D3D11CPUAccessFlags |= (Flags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364">CPU_ACCESS_READ</a>) ? D3D11_CPU_ACCESS_READ : 0;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  D3D11CPUAccessFlags |= (Flags & <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a>) ? D3D11_CPU_ACCESS_WRITE : 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> D3D11CPUAccessFlags;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">inline</span> Uint32 D3D11CPUAccessFlagsToCPUAccessFlags(UINT D3D11CPUAccessFlags)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  Uint32 CPUAccessFlags = 0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  CPUAccessFlags |= (D3D11CPUAccessFlags & D3D11_CPU_ACCESS_READ) ? <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364">CPU_ACCESS_READ</a> : 0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  CPUAccessFlags |= (D3D11CPUAccessFlags & D3D11_CPU_ACCESS_WRITE) ? <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a> : 0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  VERIFY_EXPR(D3D11CPUAccessFlags == CPUAccessFlagsToD3D11CPUAccessFlags(CPUAccessFlags));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> CPUAccessFlags;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">inline</span> UINT MiscTextureFlagsToD3D11Flags(Uint32 Flags)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  UINT D3D11MiscFlags = 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  D3D11MiscFlags |= (Flags & <a class="code" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782a926903219be74a74df00dedd41cd1d84">MISC_TEXTURE_FLAG_GENERATE_MIPS</a>) ? D3D11_RESOURCE_MISC_GENERATE_MIPS : 0;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> D3D11MiscFlags;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">inline</span> Uint32 D3D11MiscFlagsToMiscTextureFlags(UINT D3D11MiscFlags)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  Uint32 MiscFlags = 0;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  MiscFlags |= (D3D11MiscFlags & D3D11_RESOURCE_MISC_GENERATE_MIPS) ? <a class="code" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782a926903219be74a74df00dedd41cd1d84">MISC_TEXTURE_FLAG_GENERATE_MIPS</a> : 0;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> MiscFlags;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> D3D11_FILTER FilterTypeToD3D11Filter(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MinFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MagFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MipFilter);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> D3D11_TEXTURE_ADDRESS_MODE TexAddressModeToD3D11AddressMode(<a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> Mode);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> D3D11_COMPARISON_FUNC ComparisonFuncToD3D11ComparisonFunc(<a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keywordtype">void</span> DepthStencilStateDesc_To_D3D11_DEPTH_STENCIL_DESC(<span class="keyword">const</span> DepthStencilStateDesc &DepthStencilDesc, D3D11_DEPTH_STENCIL_DESC &d3d11DSSDesc);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keywordtype">void</span> RasterizerStateDesc_To_D3D11_RASTERIZER_DESC(<span class="keyword">const</span> RasterizerStateDesc &RasterizerDesc, D3D11_RASTERIZER_DESC &d3d11RSDesc);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">void</span> BlendStateDesc_To_D3D11_BLEND_DESC(<span class="keyword">const</span> BlendStateDesc &BSDesc, D3D11_BLEND_DESC &D3D11BSDesc);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keywordtype">void</span> LayoutElements_To_D3D11_INPUT_ELEMENT_DESCs(<span class="keyword">const</span> std::vector<LayoutElement, STDAllocatorRawMem<LayoutElement> > &LayoutElements, </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  std::vector<D3D11_INPUT_ELEMENT_DESC, STDAllocatorRawMem<D3D11_INPUT_ELEMENT_DESC> > &D3D11InputElements);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D11_SRV_DESC(<span class="keyword">const</span> TextureViewDesc& TexViewDesc, D3D11_SHADER_RESOURCE_VIEW_DESC &D3D11SRVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D11_RTV_DESC(<span class="keyword">const</span> TextureViewDesc& TexViewDesc, D3D11_RENDER_TARGET_VIEW_DESC &D3D11RTVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D11_DSV_DESC(<span class="keyword">const</span> TextureViewDesc& TexViewDesc, D3D11_DEPTH_STENCIL_VIEW_DESC &D3D11DSVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D11_UAV_DESC(<span class="keyword">const</span> TextureViewDesc& TexViewDesc, D3D11_UNORDERED_ACCESS_VIEW_DESC &D3D11UAVDesc);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="keywordtype">void</span> BufferViewDesc_to_D3D11_SRV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& SRVDesc, D3D11_SHADER_RESOURCE_VIEW_DESC &D3D11SRVDesc);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keywordtype">void</span> BufferViewDesc_to_D3D11_UAV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& UAVDesc, D3D11_UNORDERED_ACCESS_VIEW_DESC &D3D11UAVDesc);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div><div class="ttc" id="namespace_diligent_html_ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89"><div class="ttname"><a href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">Diligent::BIND_RENDER_TARGET</a></div><div class="ttdoc">A texture can be bound as a render target. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:71</div></div> <div class="ttc" id="namespace_diligent_html_ae132e96b4b52bcb52026444873a794c5"><div class="ttname"><a href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">Diligent::PRIMITIVE_TOPOLOGY</a></div><div class="ttdeci">PRIMITIVE_TOPOLOGY</div><div class="ttdoc">Input primitive topology. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:56</div></div> <div class="ttc" id="namespace_diligent_html_ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138"><div class="ttname"><a href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">Diligent::BIND_SHADER_RESOURCE</a></div><div class="ttdoc">A buffer or a texture can be bound as a shader resource. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:68</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -102,7 +102,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_d3_d11_type_definitions_8h_source.html b/doc/html/_d3_d11_type_definitions_8h_source.html index 847f0082..0b8eafb4 100644 --- a/doc/html/_d3_d11_type_definitions_8h_source.html +++ b/doc/html/_d3_d11_type_definitions_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">D3D11TypeDefinitions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Filters</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define D3D_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define D3D_FILTER_MIN_POINT_MAG_MIP_LINEAR D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define D3D_FILTER_MIN_LINEAR_MAG_MIP_POINT D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define D3D_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#define D3D_FILTER_ANISOTROPIC D3D11_FILTER_ANISOTROPIC</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_MIP_POINT D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_ANISOTROPIC D3D11_FILTER_COMPARISON_ANISOTROPIC</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Minimum/maximum filtering is not supported in d3d11</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_ANISOTROPIC D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_ANISOTROPIC D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// Comparison functions</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_NEVER D3D11_COMPARISON_NEVER</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_LESS D3D11_COMPARISON_LESS</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_EQUAL D3D11_COMPARISON_EQUAL</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_LESS_EQUAL D3D11_COMPARISON_LESS_EQUAL</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_GREATER D3D11_COMPARISON_GREATER</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_NOT_EQUAL D3D11_COMPARISON_NOT_EQUAL</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_GREATER_EQUAL D3D11_COMPARISON_GREATER_EQUAL</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_ALWAYS D3D11_COMPARISON_ALWAYS</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// Stencil operations</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#define D3D_STENCIL_OP_KEEP D3D11_STENCIL_OP_KEEP</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#define D3D_STENCIL_OP_ZERO D3D11_STENCIL_OP_ZERO</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#define D3D_STENCIL_OP_REPLACE D3D11_STENCIL_OP_REPLACE</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#define D3D_STENCIL_OP_INCR_SAT D3D11_STENCIL_OP_INCR_SAT</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#define D3D_STENCIL_OP_DECR_SAT D3D11_STENCIL_OP_DECR_SAT</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#define D3D_STENCIL_OP_INVERT D3D11_STENCIL_OP_INVERT</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#define D3D_STENCIL_OP_INCR D3D11_STENCIL_OP_INCR</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#define D3D_STENCIL_OP_DECR D3D11_STENCIL_OP_DECR</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// Depth write masks</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#define D3D_DEPTH_WRITE_MASK_ALL D3D11_DEPTH_WRITE_MASK_ALL</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#define D3D_DEPTH_WRITE_MASK_ZERO D3D11_DEPTH_WRITE_MASK_ZERO</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// Cull modes</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#define D3D_CULL_MODE_NONE D3D11_CULL_NONE</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#define D3D_CULL_MODE_FRONT D3D11_CULL_FRONT</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#define D3D_CULL_MODE_BACK D3D11_CULL_BACK</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// Fill modes</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#define D3D_FILL_MODE_WIREFRAME D3D11_FILL_WIREFRAME</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#define D3D_FILL_MODE_SOLID D3D11_FILL_SOLID</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// Blend sources</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#define D3D_BLEND_ZERO D3D11_BLEND_ZERO</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#define D3D_BLEND_ONE D3D11_BLEND_ONE</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#define D3D_BLEND_SRC_COLOR D3D11_BLEND_SRC_COLOR</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC_COLOR D3D11_BLEND_INV_SRC_COLOR</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#define D3D_BLEND_SRC_ALPHA D3D11_BLEND_SRC_ALPHA</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC_ALPHA D3D11_BLEND_INV_SRC_ALPHA</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#define D3D_BLEND_DEST_ALPHA D3D11_BLEND_DEST_ALPHA</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#define D3D_BLEND_INV_DEST_ALPHA D3D11_BLEND_INV_DEST_ALPHA</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#define D3D_BLEND_DEST_COLOR D3D11_BLEND_DEST_COLOR</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#define D3D_BLEND_INV_DEST_COLOR D3D11_BLEND_INV_DEST_COLOR</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#define D3D_BLEND_SRC_ALPHA_SAT D3D11_BLEND_SRC_ALPHA_SAT</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#define D3D_BLEND_BLEND_FACTOR D3D11_BLEND_BLEND_FACTOR</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#define D3D_BLEND_INV_BLEND_FACTOR D3D11_BLEND_INV_BLEND_FACTOR</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#define D3D_BLEND_SRC1_COLOR D3D11_BLEND_SRC1_COLOR</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC1_COLOR D3D11_BLEND_INV_SRC1_COLOR</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#define D3D_BLEND_SRC1_ALPHA D3D11_BLEND_SRC1_ALPHA</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC1_ALPHA D3D11_BLEND_INV_SRC1_ALPHA</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// Blend operations</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">#define D3D_BLEND_OP_ADD D3D11_BLEND_OP_ADD</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#define D3D_BLEND_OP_SUBTRACT D3D11_BLEND_OP_SUBTRACT</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#define D3D_BLEND_OP_REV_SUBTRACT D3D11_BLEND_OP_REV_SUBTRACT</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#define D3D_BLEND_OP_MIN D3D11_BLEND_OP_MIN</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#define D3D_BLEND_OP_MAX D3D11_BLEND_OP_MAX</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// Color masks</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_RED D3D11_COLOR_WRITE_ENABLE_RED</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_GREEN D3D11_COLOR_WRITE_ENABLE_GREEN</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_BLUE D3D11_COLOR_WRITE_ENABLE_BLUE</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_ALPHA D3D11_COLOR_WRITE_ENABLE_ALPHA</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// Input classification</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#define D3D_INPUT_CLASSIFICATION_PER_VERTEX_DATA D3D11_INPUT_PER_VERTEX_DATA</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#define D3D_INPUT_CLASSIFICATION_PER_INSTANCE_DATA D3D11_INPUT_PER_INSTANCE_DATA</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// Texture address modes</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_WRAP D3D11_TEXTURE_ADDRESS_WRAP</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_MIRROR D3D11_TEXTURE_ADDRESS_MIRROR</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_CLAMP D3D11_TEXTURE_ADDRESS_CLAMP</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_BORDER D3D11_TEXTURE_ADDRESS_BORDER</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_MIRROR_ONCE D3D11_TEXTURE_ADDRESS_MIRROR_ONCE</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment">// SRV Dimensions</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// d3d11.h aliases D3D11_SRV_DIMENSION as D3D_SRV_DIMENSION, so there is no</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment">// need to redefine this enum</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment">// RTV Dimensions </span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_UNKNOWN D3D11_RTV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_BUFFER D3D11_RTV_DIMENSION_BUFFER</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE1D D3D11_RTV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE1DARRAY D3D11_RTV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2D D3D11_RTV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DARRAY D3D11_RTV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DMS D3D11_RTV_DIMENSION_TEXTURE2DMS</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DMSARRAY D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE3D D3D11_RTV_DIMENSION_TEXTURE3D</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="comment">// DSV Dimensions </span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_UNKNOWN D3D11_DSV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE1D D3D11_DSV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE1DARRAY D3D11_DSV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2D D3D11_DSV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DARRAY D3D11_DSV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DMS D3D11_DSV_DIMENSION_TEXTURE2DMS</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DMSARRAY D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="comment">// UAV Dimensions</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_UNKNOWN D3D11_UAV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_BUFFER D3D11_UAV_DIMENSION_BUFFER</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE1D D3D11_UAV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE1DARRAY D3D11_UAV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE2D D3D11_UAV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE2DARRAY D3D11_UAV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE3D D3D11_UAV_DIMENSION_TEXTURE3D</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Filters</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define D3D_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define D3D_FILTER_MIN_POINT_MAG_MIP_LINEAR D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define D3D_FILTER_MIN_LINEAR_MAG_MIP_POINT D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define D3D_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#define D3D_FILTER_ANISOTROPIC D3D11_FILTER_ANISOTROPIC</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_MIP_POINT D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_ANISOTROPIC D3D11_FILTER_COMPARISON_ANISOTROPIC</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Minimum/maximum filtering is not supported in d3d11</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_ANISOTROPIC D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_ANISOTROPIC D3D11_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// Comparison functions</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_NEVER D3D11_COMPARISON_NEVER</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_LESS D3D11_COMPARISON_LESS</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_EQUAL D3D11_COMPARISON_EQUAL</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_LESS_EQUAL D3D11_COMPARISON_LESS_EQUAL</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_GREATER D3D11_COMPARISON_GREATER</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_NOT_EQUAL D3D11_COMPARISON_NOT_EQUAL</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_GREATER_EQUAL D3D11_COMPARISON_GREATER_EQUAL</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_ALWAYS D3D11_COMPARISON_ALWAYS</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// Stencil operations</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#define D3D_STENCIL_OP_KEEP D3D11_STENCIL_OP_KEEP</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#define D3D_STENCIL_OP_ZERO D3D11_STENCIL_OP_ZERO</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#define D3D_STENCIL_OP_REPLACE D3D11_STENCIL_OP_REPLACE</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#define D3D_STENCIL_OP_INCR_SAT D3D11_STENCIL_OP_INCR_SAT</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#define D3D_STENCIL_OP_DECR_SAT D3D11_STENCIL_OP_DECR_SAT</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#define D3D_STENCIL_OP_INVERT D3D11_STENCIL_OP_INVERT</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#define D3D_STENCIL_OP_INCR D3D11_STENCIL_OP_INCR</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#define D3D_STENCIL_OP_DECR D3D11_STENCIL_OP_DECR</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// Depth write masks</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#define D3D_DEPTH_WRITE_MASK_ALL D3D11_DEPTH_WRITE_MASK_ALL</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#define D3D_DEPTH_WRITE_MASK_ZERO D3D11_DEPTH_WRITE_MASK_ZERO</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// Cull modes</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#define D3D_CULL_MODE_NONE D3D11_CULL_NONE</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#define D3D_CULL_MODE_FRONT D3D11_CULL_FRONT</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#define D3D_CULL_MODE_BACK D3D11_CULL_BACK</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// Fill modes</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#define D3D_FILL_MODE_WIREFRAME D3D11_FILL_WIREFRAME</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#define D3D_FILL_MODE_SOLID D3D11_FILL_SOLID</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// Blend sources</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#define D3D_BLEND_ZERO D3D11_BLEND_ZERO</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#define D3D_BLEND_ONE D3D11_BLEND_ONE</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#define D3D_BLEND_SRC_COLOR D3D11_BLEND_SRC_COLOR</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC_COLOR D3D11_BLEND_INV_SRC_COLOR</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#define D3D_BLEND_SRC_ALPHA D3D11_BLEND_SRC_ALPHA</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC_ALPHA D3D11_BLEND_INV_SRC_ALPHA</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#define D3D_BLEND_DEST_ALPHA D3D11_BLEND_DEST_ALPHA</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#define D3D_BLEND_INV_DEST_ALPHA D3D11_BLEND_INV_DEST_ALPHA</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#define D3D_BLEND_DEST_COLOR D3D11_BLEND_DEST_COLOR</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#define D3D_BLEND_INV_DEST_COLOR D3D11_BLEND_INV_DEST_COLOR</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#define D3D_BLEND_SRC_ALPHA_SAT D3D11_BLEND_SRC_ALPHA_SAT</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#define D3D_BLEND_BLEND_FACTOR D3D11_BLEND_BLEND_FACTOR</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#define D3D_BLEND_INV_BLEND_FACTOR D3D11_BLEND_INV_BLEND_FACTOR</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#define D3D_BLEND_SRC1_COLOR D3D11_BLEND_SRC1_COLOR</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC1_COLOR D3D11_BLEND_INV_SRC1_COLOR</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#define D3D_BLEND_SRC1_ALPHA D3D11_BLEND_SRC1_ALPHA</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC1_ALPHA D3D11_BLEND_INV_SRC1_ALPHA</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// Blend operations</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">#define D3D_BLEND_OP_ADD D3D11_BLEND_OP_ADD</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#define D3D_BLEND_OP_SUBTRACT D3D11_BLEND_OP_SUBTRACT</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#define D3D_BLEND_OP_REV_SUBTRACT D3D11_BLEND_OP_REV_SUBTRACT</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#define D3D_BLEND_OP_MIN D3D11_BLEND_OP_MIN</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#define D3D_BLEND_OP_MAX D3D11_BLEND_OP_MAX</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// Color masks</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_RED D3D11_COLOR_WRITE_ENABLE_RED</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_GREEN D3D11_COLOR_WRITE_ENABLE_GREEN</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_BLUE D3D11_COLOR_WRITE_ENABLE_BLUE</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_ALPHA D3D11_COLOR_WRITE_ENABLE_ALPHA</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// Input classification</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#define D3D_INPUT_CLASSIFICATION_PER_VERTEX_DATA D3D11_INPUT_PER_VERTEX_DATA</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#define D3D_INPUT_CLASSIFICATION_PER_INSTANCE_DATA D3D11_INPUT_PER_INSTANCE_DATA</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// Texture address modes</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_WRAP D3D11_TEXTURE_ADDRESS_WRAP</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_MIRROR D3D11_TEXTURE_ADDRESS_MIRROR</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_CLAMP D3D11_TEXTURE_ADDRESS_CLAMP</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_BORDER D3D11_TEXTURE_ADDRESS_BORDER</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_MIRROR_ONCE D3D11_TEXTURE_ADDRESS_MIRROR_ONCE</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment">// SRV Dimensions</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// d3d11.h aliases D3D11_SRV_DIMENSION as D3D_SRV_DIMENSION, so there is no</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment">// need to redefine this enum</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment">// RTV Dimensions </span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_UNKNOWN D3D11_RTV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_BUFFER D3D11_RTV_DIMENSION_BUFFER</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE1D D3D11_RTV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE1DARRAY D3D11_RTV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2D D3D11_RTV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DARRAY D3D11_RTV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DMS D3D11_RTV_DIMENSION_TEXTURE2DMS</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DMSARRAY D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE3D D3D11_RTV_DIMENSION_TEXTURE3D</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="comment">// DSV Dimensions </span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_UNKNOWN D3D11_DSV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE1D D3D11_DSV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE1DARRAY D3D11_DSV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2D D3D11_DSV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DARRAY D3D11_DSV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DMS D3D11_DSV_DIMENSION_TEXTURE2DMS</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DMSARRAY D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="comment">// UAV Dimensions</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_UNKNOWN D3D11_UAV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_BUFFER D3D11_UAV_DIMENSION_BUFFER</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE1D D3D11_UAV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE1DARRAY D3D11_UAV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE2D D3D11_UAV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE2DARRAY D3D11_UAV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE3D D3D11_UAV_DIMENSION_TEXTURE3D</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_d3_d12_resource_base_8h_source.html b/doc/html/_d3_d12_resource_base_8h_source.html index 73924314..339fda27 100644 --- a/doc/html/_d3_d12_resource_base_8h_source.html +++ b/doc/html/_d3_d12_resource_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">D3D12ResourceBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_diligent_1_1_d3_d12_resource_base.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_d3_d12_resource_base.html">D3D12ResourceBase</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="class_diligent_1_1_d3_d12_resource_base.html">D3D12ResourceBase</a>() :</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_UsageState(D3D12_RESOURCE_STATE_COMMON)<span class="comment">/*,</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> m_TransitioningState((D3D12_RESOURCE_STATES)-1)*/</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {}</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  D3D12_RESOURCE_STATES GetState()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_UsageState;}</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> SetState(D3D12_RESOURCE_STATES UsageState){m_UsageState = UsageState;}</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">bool</span> CheckAllStates(D3D12_RESOURCE_STATES States)<span class="keyword">const</span>{<span class="keywordflow">return</span> (m_UsageState & States) == States;}</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">bool</span> CheckAnyState(D3D12_RESOURCE_STATES States)<span class="keyword">const</span>{<span class="keywordflow">return</span> (m_UsageState & States) != 0;}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ID3D12Resource *GetD3D12Resource(){ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_d3_d12_resource_base.html#a384791577c4cfbd0cfaca4ab6057097a">m_pd3d12Resource</a>; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  D3D12_RESOURCE_STATES m_UsageState;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">//D3D12_RESOURCE_STATES m_TransitioningState;</span></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_diligent_1_1_d3_d12_resource_base.html#a384791577c4cfbd0cfaca4ab6057097a"> 50</a></span>  CComPtr<ID3D12Resource> <a class="code" href="class_diligent_1_1_d3_d12_resource_base.html#a384791577c4cfbd0cfaca4ab6057097a">m_pd3d12Resource</a>; </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_diligent_1_1_d3_d12_resource_base.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_d3_d12_resource_base.html">D3D12ResourceBase</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="class_diligent_1_1_d3_d12_resource_base.html">D3D12ResourceBase</a>() :</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_UsageState(D3D12_RESOURCE_STATE_COMMON)<span class="comment">/*,</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> m_TransitioningState((D3D12_RESOURCE_STATES)-1)*/</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {}</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  D3D12_RESOURCE_STATES GetState()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_UsageState;}</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> SetState(D3D12_RESOURCE_STATES UsageState){m_UsageState = UsageState;}</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">bool</span> CheckAllStates(D3D12_RESOURCE_STATES States)<span class="keyword">const</span>{<span class="keywordflow">return</span> (m_UsageState & States) == States;}</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">bool</span> CheckAnyState(D3D12_RESOURCE_STATES States)<span class="keyword">const</span>{<span class="keywordflow">return</span> (m_UsageState & States) != 0;}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ID3D12Resource *GetD3D12Resource(){ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_d3_d12_resource_base.html#a384791577c4cfbd0cfaca4ab6057097a">m_pd3d12Resource</a>; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  D3D12_RESOURCE_STATES m_UsageState;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">//D3D12_RESOURCE_STATES m_TransitioningState;</span></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_diligent_1_1_d3_d12_resource_base.html#a384791577c4cfbd0cfaca4ab6057097a"> 50</a></span>  CComPtr<ID3D12Resource> <a class="code" href="class_diligent_1_1_d3_d12_resource_base.html#a384791577c4cfbd0cfaca4ab6057097a">m_pd3d12Resource</a>; </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_d3_d12_resource_base_html"><div class="ttname"><a href="class_diligent_1_1_d3_d12_resource_base.html">Diligent::D3D12ResourceBase</a></div><div class="ttdoc">Base implementation of a D3D12 resource. </div><div class="ttdef"><b>Definition:</b> D3D12ResourceBase.h:33</div></div> <div class="ttc" id="class_diligent_1_1_d3_d12_resource_base_html_a384791577c4cfbd0cfaca4ab6057097a"><div class="ttname"><a href="class_diligent_1_1_d3_d12_resource_base.html#a384791577c4cfbd0cfaca4ab6057097a">Diligent::D3D12ResourceBase::m_pd3d12Resource</a></div><div class="ttdeci">CComPtr< ID3D12Resource > m_pd3d12Resource</div><div class="ttdoc">D3D12 buffer object. </div><div class="ttdef"><b>Definition:</b> D3D12ResourceBase.h:50</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_d3_d12_type_conversions_8h_source.html b/doc/html/_d3_d12_type_conversions_8h_source.html index 8cdfbacd..4919029e 100644 --- a/doc/html/_d3_d12_type_conversions_8h_source.html +++ b/doc/html/_d3_d12_type_conversions_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">D3D12TypeConversions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> D3D12_COMPARISON_FUNC ComparisonFuncToD3D12ComparisonFunc(<a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> D3D12_FILTER FilterTypeToD3D12Filter(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MinFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MagFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MipFilter);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> D3D12_TEXTURE_ADDRESS_MODE TexAddressModeToD3D12AddressMode(<a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> Mode);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> D3D12_PRIMITIVE_TOPOLOGY TopologyToD3D12Topology(<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> Topology);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">void</span> DepthStencilStateDesc_To_D3D12_DEPTH_STENCIL_DESC(<span class="keyword">const</span> DepthStencilStateDesc &DepthStencilDesc, D3D12_DEPTH_STENCIL_DESC &d3d12DSSDesc);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">void</span> RasterizerStateDesc_To_D3D12_RASTERIZER_DESC(<span class="keyword">const</span> RasterizerStateDesc &RasterizerDesc, D3D12_RASTERIZER_DESC &d3d11RSDesc);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keywordtype">void</span> BlendStateDesc_To_D3D12_BLEND_DESC(<span class="keyword">const</span> BlendStateDesc &BSDesc, D3D12_BLEND_DESC &d3d12BlendDesc);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">void</span> LayoutElements_To_D3D12_INPUT_ELEMENT_DESCs(<span class="keyword">const</span> std::vector<LayoutElement, STDAllocatorRawMem<LayoutElement>> &LayoutElements, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  std::vector<D3D12_INPUT_ELEMENT_DESC, STDAllocatorRawMem<D3D12_INPUT_ELEMENT_DESC> > &d3d12InputElements);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D12_SRV_DESC(<span class="keyword">const</span> TextureViewDesc& SRVDesc, D3D12_SHADER_RESOURCE_VIEW_DESC &D3D12SRVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D12_RTV_DESC(<span class="keyword">const</span> TextureViewDesc& RTVDesc, D3D12_RENDER_TARGET_VIEW_DESC &D3D12RTVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D12_DSV_DESC(<span class="keyword">const</span> TextureViewDesc& DSVDesc, D3D12_DEPTH_STENCIL_VIEW_DESC &D3D12DSVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D12_UAV_DESC(<span class="keyword">const</span> TextureViewDesc& UAVDesc, D3D12_UNORDERED_ACCESS_VIEW_DESC &D3D12UAVDesc);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">void</span> BufferViewDesc_to_D3D12_SRV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& SRVDesc, D3D12_SHADER_RESOURCE_VIEW_DESC &D3D12SRVDesc);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">void</span> BufferViewDesc_to_D3D12_UAV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& UAVDesc, D3D12_UNORDERED_ACCESS_VIEW_DESC &D3D12UAVDesc);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> D3D12_STATIC_BORDER_COLOR BorderColorToD3D12StaticBorderColor(<span class="keyword">const</span> Float32 BorderColor[]);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="ttc" id="namespace_diligent_html_ae132e96b4b52bcb52026444873a794c5"><div class="ttname"><a href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">Diligent::PRIMITIVE_TOPOLOGY</a></div><div class="ttdeci">PRIMITIVE_TOPOLOGY</div><div class="ttdoc">Input primitive topology. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:56</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> D3D12_COMPARISON_FUNC ComparisonFuncToD3D12ComparisonFunc(<a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> D3D12_FILTER FilterTypeToD3D12Filter(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MinFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MagFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MipFilter);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> D3D12_TEXTURE_ADDRESS_MODE TexAddressModeToD3D12AddressMode(<a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> Mode);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> D3D12_PRIMITIVE_TOPOLOGY TopologyToD3D12Topology(<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> Topology);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">void</span> DepthStencilStateDesc_To_D3D12_DEPTH_STENCIL_DESC(<span class="keyword">const</span> DepthStencilStateDesc &DepthStencilDesc, D3D12_DEPTH_STENCIL_DESC &d3d12DSSDesc);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">void</span> RasterizerStateDesc_To_D3D12_RASTERIZER_DESC(<span class="keyword">const</span> RasterizerStateDesc &RasterizerDesc, D3D12_RASTERIZER_DESC &d3d11RSDesc);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keywordtype">void</span> BlendStateDesc_To_D3D12_BLEND_DESC(<span class="keyword">const</span> BlendStateDesc &BSDesc, D3D12_BLEND_DESC &d3d12BlendDesc);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">void</span> LayoutElements_To_D3D12_INPUT_ELEMENT_DESCs(<span class="keyword">const</span> std::vector<LayoutElement, STDAllocatorRawMem<LayoutElement>> &LayoutElements, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  std::vector<D3D12_INPUT_ELEMENT_DESC, STDAllocatorRawMem<D3D12_INPUT_ELEMENT_DESC> > &d3d12InputElements);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D12_SRV_DESC(<span class="keyword">const</span> TextureViewDesc& SRVDesc, D3D12_SHADER_RESOURCE_VIEW_DESC &D3D12SRVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D12_RTV_DESC(<span class="keyword">const</span> TextureViewDesc& RTVDesc, D3D12_RENDER_TARGET_VIEW_DESC &D3D12RTVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D12_DSV_DESC(<span class="keyword">const</span> TextureViewDesc& DSVDesc, D3D12_DEPTH_STENCIL_VIEW_DESC &D3D12DSVDesc, Uint32 SampleCount);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keywordtype">void</span> TextureViewDesc_to_D3D12_UAV_DESC(<span class="keyword">const</span> TextureViewDesc& UAVDesc, D3D12_UNORDERED_ACCESS_VIEW_DESC &D3D12UAVDesc);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">void</span> BufferViewDesc_to_D3D12_SRV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& SRVDesc, D3D12_SHADER_RESOURCE_VIEW_DESC &D3D12SRVDesc);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">void</span> BufferViewDesc_to_D3D12_UAV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& UAVDesc, D3D12_UNORDERED_ACCESS_VIEW_DESC &D3D12UAVDesc);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> D3D12_STATIC_BORDER_COLOR BorderColorToD3D12StaticBorderColor(<span class="keyword">const</span> Float32 BorderColor[]);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="ttc" id="namespace_diligent_html_ae132e96b4b52bcb52026444873a794c5"><div class="ttname"><a href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">Diligent::PRIMITIVE_TOPOLOGY</a></div><div class="ttdeci">PRIMITIVE_TOPOLOGY</div><div class="ttdoc">Input primitive topology. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:56</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespace_diligent_html_a26cf0ec56d87b480b66e884231d113b1"><div class="ttname"><a href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">Diligent::TEXTURE_ADDRESS_MODE</a></div><div class="ttdeci">TEXTURE_ADDRESS_MODE</div><div class="ttdoc">Texture address mode. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:805</div></div> <div class="ttc" id="namespace_diligent_html_a9001a5a822d4d0901acdc2c8cbe600b3"><div class="ttname"><a href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">Diligent::FILTER_TYPE</a></div><div class="ttdeci">FILTER_TYPE</div><div class="ttdoc">Filter type. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:780</div></div> @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_d3_d12_type_definitions_8h_source.html b/doc/html/_d3_d12_type_definitions_8h_source.html index cc013d37..dbb737ef 100644 --- a/doc/html/_d3_d12_type_definitions_8h_source.html +++ b/doc/html/_d3_d12_type_definitions_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">D3D12TypeDefinitions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Filters</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_MIP_POINT D3D12_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_POINT_MIP_LINEAR D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define D3D_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define D3D_FILTER_MIN_POINT_MAG_MIP_LINEAR D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define D3D_FILTER_MIN_LINEAR_MAG_MIP_POINT D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define D3D_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_LINEAR_MIP_POINT D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_MIP_LINEAR D3D12_FILTER_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#define D3D_FILTER_ANISOTROPIC D3D12_FILTER_ANISOTROPIC</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_MIP_POINT D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_ANISOTROPIC D3D12_FILTER_COMPARISON_ANISOTROPIC</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_MIP_POINT D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_ANISOTROPIC D3D12_FILTER_MINIMUM_ANISOTROPIC</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_MIP_POINT D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_ANISOTROPIC D3D12_FILTER_MAXIMUM_ANISOTROPIC</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// Comparison functions</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_NEVER D3D12_COMPARISON_FUNC_NEVER</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_LESS D3D12_COMPARISON_FUNC_LESS</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_EQUAL D3D12_COMPARISON_FUNC_EQUAL</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_LESS_EQUAL D3D12_COMPARISON_FUNC_LESS_EQUAL</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_GREATER D3D12_COMPARISON_FUNC_GREATER</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_NOT_EQUAL D3D12_COMPARISON_FUNC_NOT_EQUAL</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_GREATER_EQUAL D3D12_COMPARISON_FUNC_GREATER_EQUAL</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_ALWAYS D3D12_COMPARISON_FUNC_ALWAYS</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// Stencil operations</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#define D3D_STENCIL_OP_KEEP D3D12_STENCIL_OP_KEEP</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#define D3D_STENCIL_OP_ZERO D3D12_STENCIL_OP_ZERO</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#define D3D_STENCIL_OP_REPLACE D3D12_STENCIL_OP_REPLACE</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#define D3D_STENCIL_OP_INCR_SAT D3D12_STENCIL_OP_INCR_SAT</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#define D3D_STENCIL_OP_DECR_SAT D3D12_STENCIL_OP_DECR_SAT</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#define D3D_STENCIL_OP_INVERT D3D12_STENCIL_OP_INVERT</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#define D3D_STENCIL_OP_INCR D3D12_STENCIL_OP_INCR</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#define D3D_STENCIL_OP_DECR D3D12_STENCIL_OP_DECR</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// Depth write masks</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#define D3D_DEPTH_WRITE_MASK_ALL D3D12_DEPTH_WRITE_MASK_ALL</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#define D3D_DEPTH_WRITE_MASK_ZERO D3D12_DEPTH_WRITE_MASK_ZERO</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// Cull modes</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#define D3D_CULL_MODE_NONE D3D12_CULL_MODE_NONE</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#define D3D_CULL_MODE_FRONT D3D12_CULL_MODE_FRONT</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#define D3D_CULL_MODE_BACK D3D12_CULL_MODE_BACK</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// Fill modes</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#define D3D_FILL_MODE_WIREFRAME D3D12_FILL_MODE_WIREFRAME</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#define D3D_FILL_MODE_SOLID D3D12_FILL_MODE_SOLID</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// Blend sources</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#define D3D_BLEND_ZERO D3D12_BLEND_ZERO</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#define D3D_BLEND_ONE D3D12_BLEND_ONE</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#define D3D_BLEND_SRC_COLOR D3D12_BLEND_SRC_COLOR</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC_COLOR D3D12_BLEND_INV_SRC_COLOR</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#define D3D_BLEND_SRC_ALPHA D3D12_BLEND_SRC_ALPHA</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC_ALPHA D3D12_BLEND_INV_SRC_ALPHA</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#define D3D_BLEND_DEST_ALPHA D3D12_BLEND_DEST_ALPHA</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#define D3D_BLEND_INV_DEST_ALPHA D3D12_BLEND_INV_DEST_ALPHA</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#define D3D_BLEND_DEST_COLOR D3D12_BLEND_DEST_COLOR</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#define D3D_BLEND_INV_DEST_COLOR D3D12_BLEND_INV_DEST_COLOR</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#define D3D_BLEND_SRC_ALPHA_SAT D3D12_BLEND_SRC_ALPHA_SAT</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#define D3D_BLEND_BLEND_FACTOR D3D12_BLEND_BLEND_FACTOR</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#define D3D_BLEND_INV_BLEND_FACTOR D3D12_BLEND_INV_BLEND_FACTOR</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#define D3D_BLEND_SRC1_COLOR D3D12_BLEND_SRC1_COLOR</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC1_COLOR D3D12_BLEND_INV_SRC1_COLOR</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#define D3D_BLEND_SRC1_ALPHA D3D12_BLEND_SRC1_ALPHA</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC1_ALPHA D3D12_BLEND_INV_SRC1_ALPHA</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// Blend operations</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">#define D3D_BLEND_OP_ADD D3D12_BLEND_OP_ADD</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#define D3D_BLEND_OP_SUBTRACT D3D12_BLEND_OP_SUBTRACT</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">#define D3D_BLEND_OP_REV_SUBTRACT D3D12_BLEND_OP_REV_SUBTRACT</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#define D3D_BLEND_OP_MIN D3D12_BLEND_OP_MIN</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#define D3D_BLEND_OP_MAX D3D12_BLEND_OP_MAX</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// Color masks</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_RED D3D12_COLOR_WRITE_ENABLE_RED</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_GREEN D3D12_COLOR_WRITE_ENABLE_GREEN</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_BLUE D3D12_COLOR_WRITE_ENABLE_BLUE</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_ALPHA D3D12_COLOR_WRITE_ENABLE_ALPHA</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// Input classification</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#define D3D_INPUT_CLASSIFICATION_PER_VERTEX_DATA D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#define D3D_INPUT_CLASSIFICATION_PER_INSTANCE_DATA D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// Texture address modes</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_WRAP D3D12_TEXTURE_ADDRESS_MODE_WRAP</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_MIRROR D3D12_TEXTURE_ADDRESS_MODE_MIRROR</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_CLAMP D3D12_TEXTURE_ADDRESS_MODE_CLAMP</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_BORDER D3D12_TEXTURE_ADDRESS_MODE_BORDER</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_MIRROR_ONCE D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// SRV Dimensions</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_UNKNOWN D3D12_SRV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_BUFFER D3D12_SRV_DIMENSION_BUFFER</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE1D D3D12_SRV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE1DARRAY D3D12_SRV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE2D D3D12_SRV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE2DARRAY D3D12_SRV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE2DMS D3D12_SRV_DIMENSION_TEXTURE2DMS</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE2DMSARRAY D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE3D D3D12_SRV_DIMENSION_TEXTURE3D</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURECUBE D3D12_SRV_DIMENSION_TEXTURECUBE</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURECUBEARRAY D3D12_SRV_DIMENSION_TEXTURECUBEARRAY</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// RTV Dimensions </span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_UNKNOWN D3D12_RTV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_BUFFER D3D12_RTV_DIMENSION_BUFFER</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE1D D3D12_RTV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE1DARRAY D3D12_RTV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2D D3D12_RTV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DARRAY D3D12_RTV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DMS D3D12_RTV_DIMENSION_TEXTURE2DMS</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DMSARRAY D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE3D D3D12_RTV_DIMENSION_TEXTURE3D</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="comment">// DSV Dimensions </span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_UNKNOWN D3D12_DSV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE1D D3D12_DSV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE1DARRAY D3D12_DSV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2D D3D12_DSV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DARRAY D3D12_DSV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DMS D3D12_DSV_DIMENSION_TEXTURE2DMS</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DMSARRAY D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// UAV Dimensions</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_UNKNOWN D3D12_UAV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_BUFFER D3D12_UAV_DIMENSION_BUFFER</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE1D D3D12_UAV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE1DARRAY D3D12_UAV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE2D D3D12_UAV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE2DARRAY D3D12_UAV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE3D D3D12_UAV_DIMENSION_TEXTURE3D</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Filters</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_MIP_POINT D3D12_FILTER_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_POINT_MIP_LINEAR D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define D3D_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define D3D_FILTER_MIN_POINT_MAG_MIP_LINEAR D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define D3D_FILTER_MIN_LINEAR_MAG_MIP_POINT D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define D3D_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_LINEAR_MIP_POINT D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define D3D_FILTER_MIN_MAG_MIP_LINEAR D3D12_FILTER_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#define D3D_FILTER_ANISOTROPIC D3D12_FILTER_ANISOTROPIC</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_MIP_POINT D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#define D3D_FILTER_COMPARISON_ANISOTROPIC D3D12_FILTER_COMPARISON_ANISOTROPIC</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_MIP_POINT D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#define D3D_FILTER_MINIMUM_ANISOTROPIC D3D12_FILTER_MINIMUM_ANISOTROPIC</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_MIP_POINT D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#define D3D_FILTER_MAXIMUM_ANISOTROPIC D3D12_FILTER_MAXIMUM_ANISOTROPIC</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// Comparison functions</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_NEVER D3D12_COMPARISON_FUNC_NEVER</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_LESS D3D12_COMPARISON_FUNC_LESS</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_EQUAL D3D12_COMPARISON_FUNC_EQUAL</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_LESS_EQUAL D3D12_COMPARISON_FUNC_LESS_EQUAL</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_GREATER D3D12_COMPARISON_FUNC_GREATER</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_NOT_EQUAL D3D12_COMPARISON_FUNC_NOT_EQUAL</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_GREATER_EQUAL D3D12_COMPARISON_FUNC_GREATER_EQUAL</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#define D3D_COMPARISON_FUNC_ALWAYS D3D12_COMPARISON_FUNC_ALWAYS</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// Stencil operations</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#define D3D_STENCIL_OP_KEEP D3D12_STENCIL_OP_KEEP</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#define D3D_STENCIL_OP_ZERO D3D12_STENCIL_OP_ZERO</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#define D3D_STENCIL_OP_REPLACE D3D12_STENCIL_OP_REPLACE</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#define D3D_STENCIL_OP_INCR_SAT D3D12_STENCIL_OP_INCR_SAT</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#define D3D_STENCIL_OP_DECR_SAT D3D12_STENCIL_OP_DECR_SAT</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#define D3D_STENCIL_OP_INVERT D3D12_STENCIL_OP_INVERT</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#define D3D_STENCIL_OP_INCR D3D12_STENCIL_OP_INCR</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#define D3D_STENCIL_OP_DECR D3D12_STENCIL_OP_DECR</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// Depth write masks</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#define D3D_DEPTH_WRITE_MASK_ALL D3D12_DEPTH_WRITE_MASK_ALL</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#define D3D_DEPTH_WRITE_MASK_ZERO D3D12_DEPTH_WRITE_MASK_ZERO</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// Cull modes</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#define D3D_CULL_MODE_NONE D3D12_CULL_MODE_NONE</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#define D3D_CULL_MODE_FRONT D3D12_CULL_MODE_FRONT</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#define D3D_CULL_MODE_BACK D3D12_CULL_MODE_BACK</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// Fill modes</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#define D3D_FILL_MODE_WIREFRAME D3D12_FILL_MODE_WIREFRAME</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#define D3D_FILL_MODE_SOLID D3D12_FILL_MODE_SOLID</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// Blend sources</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#define D3D_BLEND_ZERO D3D12_BLEND_ZERO</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#define D3D_BLEND_ONE D3D12_BLEND_ONE</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#define D3D_BLEND_SRC_COLOR D3D12_BLEND_SRC_COLOR</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC_COLOR D3D12_BLEND_INV_SRC_COLOR</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#define D3D_BLEND_SRC_ALPHA D3D12_BLEND_SRC_ALPHA</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC_ALPHA D3D12_BLEND_INV_SRC_ALPHA</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#define D3D_BLEND_DEST_ALPHA D3D12_BLEND_DEST_ALPHA</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#define D3D_BLEND_INV_DEST_ALPHA D3D12_BLEND_INV_DEST_ALPHA</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#define D3D_BLEND_DEST_COLOR D3D12_BLEND_DEST_COLOR</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#define D3D_BLEND_INV_DEST_COLOR D3D12_BLEND_INV_DEST_COLOR</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#define D3D_BLEND_SRC_ALPHA_SAT D3D12_BLEND_SRC_ALPHA_SAT</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#define D3D_BLEND_BLEND_FACTOR D3D12_BLEND_BLEND_FACTOR</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#define D3D_BLEND_INV_BLEND_FACTOR D3D12_BLEND_INV_BLEND_FACTOR</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#define D3D_BLEND_SRC1_COLOR D3D12_BLEND_SRC1_COLOR</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC1_COLOR D3D12_BLEND_INV_SRC1_COLOR</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#define D3D_BLEND_SRC1_ALPHA D3D12_BLEND_SRC1_ALPHA</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#define D3D_BLEND_INV_SRC1_ALPHA D3D12_BLEND_INV_SRC1_ALPHA</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// Blend operations</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">#define D3D_BLEND_OP_ADD D3D12_BLEND_OP_ADD</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#define D3D_BLEND_OP_SUBTRACT D3D12_BLEND_OP_SUBTRACT</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">#define D3D_BLEND_OP_REV_SUBTRACT D3D12_BLEND_OP_REV_SUBTRACT</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#define D3D_BLEND_OP_MIN D3D12_BLEND_OP_MIN</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#define D3D_BLEND_OP_MAX D3D12_BLEND_OP_MAX</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// Color masks</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_RED D3D12_COLOR_WRITE_ENABLE_RED</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_GREEN D3D12_COLOR_WRITE_ENABLE_GREEN</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_BLUE D3D12_COLOR_WRITE_ENABLE_BLUE</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define D3D_COLOR_WRITE_ENABLE_ALPHA D3D12_COLOR_WRITE_ENABLE_ALPHA</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// Input classification</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#define D3D_INPUT_CLASSIFICATION_PER_VERTEX_DATA D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#define D3D_INPUT_CLASSIFICATION_PER_INSTANCE_DATA D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// Texture address modes</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_WRAP D3D12_TEXTURE_ADDRESS_MODE_WRAP</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_MIRROR D3D12_TEXTURE_ADDRESS_MODE_MIRROR</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_CLAMP D3D12_TEXTURE_ADDRESS_MODE_CLAMP</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_BORDER D3D12_TEXTURE_ADDRESS_MODE_BORDER</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#define D3D_TEXTURE_ADDRESS_MIRROR_ONCE D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// SRV Dimensions</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_UNKNOWN D3D12_SRV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_BUFFER D3D12_SRV_DIMENSION_BUFFER</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE1D D3D12_SRV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE1DARRAY D3D12_SRV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE2D D3D12_SRV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE2DARRAY D3D12_SRV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE2DMS D3D12_SRV_DIMENSION_TEXTURE2DMS</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE2DMSARRAY D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURE3D D3D12_SRV_DIMENSION_TEXTURE3D</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURECUBE D3D12_SRV_DIMENSION_TEXTURECUBE</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor">#define D3D_SRV_DIMENSION_TEXTURECUBEARRAY D3D12_SRV_DIMENSION_TEXTURECUBEARRAY</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// RTV Dimensions </span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_UNKNOWN D3D12_RTV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_BUFFER D3D12_RTV_DIMENSION_BUFFER</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE1D D3D12_RTV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE1DARRAY D3D12_RTV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2D D3D12_RTV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DARRAY D3D12_RTV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DMS D3D12_RTV_DIMENSION_TEXTURE2DMS</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE2DMSARRAY D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#define D3D_RTV_DIMENSION_TEXTURE3D D3D12_RTV_DIMENSION_TEXTURE3D</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="comment">// DSV Dimensions </span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_UNKNOWN D3D12_DSV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE1D D3D12_DSV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE1DARRAY D3D12_DSV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2D D3D12_DSV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DARRAY D3D12_DSV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DMS D3D12_DSV_DIMENSION_TEXTURE2DMS</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#define D3D_DSV_DIMENSION_TEXTURE2DMSARRAY D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// UAV Dimensions</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_UNKNOWN D3D12_UAV_DIMENSION_UNKNOWN</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_BUFFER D3D12_UAV_DIMENSION_BUFFER</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE1D D3D12_UAV_DIMENSION_TEXTURE1D</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE1DARRAY D3D12_UAV_DIMENSION_TEXTURE1DARRAY</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE2D D3D12_UAV_DIMENSION_TEXTURE2D</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE2DARRAY D3D12_UAV_DIMENSION_TEXTURE2DARRAY</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#define D3D_UAV_DIMENSION_TEXTURE3D D3D12_UAV_DIMENSION_TEXTURE3D</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_d3_d12_utils_8h_source.html b/doc/html/_d3_d12_utils_8h_source.html index 30d28af6..ffadbc4d 100644 --- a/doc/html/_d3_d12_utils_8h_source.html +++ b/doc/html/_d3_d12_utils_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">D3D12Utils.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">const</span> Char* GetD3D12DescriptorHeapTypeLiteralName(D3D12_DESCRIPTOR_HEAP_TYPE Type);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">const</span> Char* GetD3D12DescriptorHeapTypeLiteralName(D3D12_DESCRIPTOR_HEAP_TYPE Type);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_d3_d_errors_8h_source.html b/doc/html/_d3_d_errors_8h_source.html index 9bbd84e2..7ccd481b 100644 --- a/doc/html/_d3_d_errors_8h_source.html +++ b/doc/html/_d3_d_errors_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">D3DErrors.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_com_error_desc.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_com_error_desc.html">ComErrorDesc</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_diligent_1_1_com_error_desc.html">ComErrorDesc</a>( HRESULT hr )</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  FormatMessageA( </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  FORMAT_MESSAGE_FROM_SYSTEM |</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  FORMAT_MESSAGE_IGNORE_INSERTS,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  NULL,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  hr,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_Msg,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  _countof(m_Msg),</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  NULL );</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">auto</span> nLen = strlen( m_Msg );</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>( nLen > 1 && m_Msg[nLen - 1] == <span class="charliteral">'\n'</span> ) </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_Msg[nLen - 1] = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>( m_Msg[nLen - 2] == <span class="charliteral">'\r'</span> ) </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_Msg[nLen - 2] = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* Get(){ <span class="keywordflow">return</span> m_Msg; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">char</span> m_Msg[4096];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#define CHECK_D3D_RESULT_THROW(Expr, Message)\</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"> HRESULT _hr_ = Expr; \</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"> if(FAILED(_hr_)) \</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> ComErrorDesc ErrDesc( _hr_ ); \</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> LOG_ERROR_AND_THROW( Message, "\nHRESULT Desc: ", ErrDesc.Get());\</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#define CHECK_D3D_RESULT_THROW_EX(Expr, ...)\</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"> HRESULT _hr_ = Expr; \</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"> if(FAILED(_hr_)) \</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"> Diligent::MsgStream ms; \</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor"> Diligent::FormatMsg(ms, __VA_ARGS__); \</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"> ComErrorDesc ErrDesc( _hr_ ); \</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor"> LOG_ERROR_AND_THROW( ms.str(), "\nHRESULT Desc: ", ErrDesc.Get());\</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">}</span></div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_com_error_desc.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_com_error_desc.html">ComErrorDesc</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_diligent_1_1_com_error_desc.html">ComErrorDesc</a>( HRESULT hr )</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  FormatMessageA( </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  FORMAT_MESSAGE_FROM_SYSTEM |</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  FORMAT_MESSAGE_IGNORE_INSERTS,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  NULL,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  hr,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_Msg,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  _countof(m_Msg),</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  NULL );</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">auto</span> nLen = strlen( m_Msg );</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>( nLen > 1 && m_Msg[nLen - 1] == <span class="charliteral">'\n'</span> ) </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_Msg[nLen - 1] = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>( m_Msg[nLen - 2] == <span class="charliteral">'\r'</span> ) </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_Msg[nLen - 2] = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* Get(){ <span class="keywordflow">return</span> m_Msg; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">char</span> m_Msg[4096];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#define CHECK_D3D_RESULT_THROW(Expr, Message)\</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"> HRESULT _hr_ = Expr; \</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"> if(FAILED(_hr_)) \</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> ComErrorDesc ErrDesc( _hr_ ); \</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> LOG_ERROR_AND_THROW( Message, "\nHRESULT Desc: ", ErrDesc.Get());\</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#define CHECK_D3D_RESULT_THROW_EX(Expr, ...)\</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"> HRESULT _hr_ = Expr; \</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"> if(FAILED(_hr_)) \</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"> Diligent::MsgStream ms; \</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor"> Diligent::FormatMsg(ms, __VA_ARGS__); \</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"> ComErrorDesc ErrDesc( _hr_ ); \</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor"> LOG_ERROR_AND_THROW( ms.str(), "\nHRESULT Desc: ", ErrDesc.Get());\</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">}</span></div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="class_diligent_1_1_com_error_desc_html"><div class="ttname"><a href="class_diligent_1_1_com_error_desc.html">Diligent::ComErrorDesc</a></div><div class="ttdoc">Helper class that provides description of a COM error. </div><div class="ttdef"><b>Definition:</b> D3DErrors.h:35</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> diff --git a/doc/html/_d3_d_shader_resource_loader_8h_source.html b/doc/html/_d3_d_shader_resource_loader_8h_source.html index efedb18f..4164a055 100644 --- a/doc/html/_d3_d_shader_resource_loader_8h_source.html +++ b/doc/html/_d3_d_shader_resource_loader_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">D3DShaderResourceLoader.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "StringTools.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_SHADER_DESC, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">typename</span> D3D_SHADER_INPUT_BIND_DESC,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">typename</span> TShaderReflection, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typename</span> TOnResourcesCounted,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">typename</span> TOnNewCB, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typename</span> TOnNewTexUAV, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typename</span> TOnNewBuffUAV, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typename</span> TOnNewBuffSRV,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typename</span> TOnNewSampler,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typename</span> TOnNewTexSRV></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span> LoadD3DShaderResources(ID3DBlob *pShaderByteCode, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  TOnResourcesCounted OnResourcesCounted, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  TOnNewCB OnNewCB, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  TOnNewTexUAV OnNewTexUAV, </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  TOnNewBuffUAV OnNewBuffUAV, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  TOnNewBuffSRV OnNewBuffSRV,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  TOnNewSampler OnNewSampler,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  TOnNewTexSRV OnNewTexSRV, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">const</span> ShaderDesc &ShdrDesc,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> Char *SamplerSuffix)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  CComPtr<TShaderReflection> pShaderReflection;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  CHECK_D3D_RESULT_THROW( D3DReflect( pShaderByteCode->GetBufferPointer(), pShaderByteCode->GetBufferSize(), __uuidof(pShaderReflection), <span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>**<span class="keyword">></span>(<span class="keyword">static_cast<</span>TShaderReflection**<span class="keyword">></span>(&pShaderReflection)) ),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="stringliteral">"Failed to get the shader reflection"</span> );</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  D3D_SHADER_DESC shaderDesc = {};</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  pShaderReflection->GetDesc( &shaderDesc );</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<D3DShaderResourceAttribs, STDAllocatorRawMem<D3DShaderResourceAttribs> > Resources( STD_ALLOCATOR_RAW_MEM(D3DShaderResourceAttribs, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<D3DShaderResourceAttribs>"</span>) );</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  Resources.reserve(shaderDesc.BoundResources);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumCBs = 0, NumTexSRVs = 0, NumTexUAVs = 0, NumBufSRVs = 0, NumBufUAVs = 0, NumSamplers = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Number of resources to skip (used for array resources)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  UINT SkipCount = 1;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">for</span>( UINT Res = 0; Res < shaderDesc.BoundResources; Res += SkipCount )</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  D3D_SHADER_INPUT_BIND_DESC BindingDesc = {};</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  pShaderReflection->GetResourceBindingDesc( Res, &BindingDesc );</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> Name(BindingDesc.Name);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  SkipCount = 1;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  UINT BindCount = BindingDesc.BindCount;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// Handle arrays</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// For shader models 5_0 and before, every resource array element is enumerated individually.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// For instance, if the following texture array is defined in the shader:</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">//</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// Texture2D<float3> g_tex2DDiffuse[4];</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">//</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// The reflection system will enumerate 4 resources with the following names:</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// "g_tex2DDiffuse[0]"</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// "g_tex2DDiffuse[1]"</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// "g_tex2DDiffuse[2]"</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// "g_tex2DDiffuse[3]"</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// </span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Notice that if some array element is not used by the shader, it will not be enumerated</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">auto</span> OpenBracketPos = Name.find(<span class="charliteral">'['</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (String::npos != OpenBracketPos)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  VERIFY(BindCount == 1, <span class="stringliteral">"When array elements are enumerated individually, BindCount is expected to always be 1"</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// Name == "g_tex2DDiffuse[0]"</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// ^</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// OpenBracketPos</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Name.erase(OpenBracketPos, Name.length() - OpenBracketPos);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// Name == "g_tex2DDiffuse"</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  VERIFY_EXPR(Name.length() == OpenBracketPos);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &ExistingRes : Resources)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  VERIFY(ExistingRes.Name != Name, <span class="stringliteral">"Resource with the same name has already been enumerated. All array elements are expected to be enumerated one after another"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">for</span>( UINT ArrElem = Res+1; ArrElem < shaderDesc.BoundResources; ++ArrElem)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  D3D_SHADER_INPUT_BIND_DESC ArrElemBindingDesc = {};</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  pShaderReflection->GetResourceBindingDesc( ArrElem, &ArrElemBindingDesc );</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// Make sure this case is handled correctly:</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// "g_tex2DDiffuse[.]" != "g_tex2DDiffuse2[.]"</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span> ( strncmp(Name.c_str(), ArrElemBindingDesc.Name, OpenBracketPos) == 0 && ArrElemBindingDesc.Name[OpenBracketPos] == <span class="charliteral">'['</span>)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">//g_tex2DDiffuse[2]</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// ^</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  UINT Ind = atoi(ArrElemBindingDesc.Name+OpenBracketPos+1);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  BindCount = std::max(BindCount, Ind+1);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  VERIFY(ArrElemBindingDesc.BindPoint == BindingDesc.BindPoint + Ind, </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="stringliteral">"Array elements are expected to use contigous bind points.\n"</span>, </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  BindingDesc.Name, <span class="stringliteral">" uses slot "</span>, BindingDesc.BindPoint, <span class="stringliteral">", so "</span>, ArrElemBindingDesc.Name, <span class="stringliteral">" is expected to use slot "</span>, BindingDesc.BindPoint + Ind, <span class="stringliteral">" while "</span>, ArrElemBindingDesc.BindPoint, <span class="stringliteral">" is actually used"</span> );</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// Note that skip count may not necessarily be the same as BindCount.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// If some array elements are not used by the shader, the reflection system skips them</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  ++SkipCount;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType = <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">bool</span> IsStaticSampler = <span class="keyword">false</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span> (BindingDesc.Type == D3D_SIT_SAMPLER)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span> (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> s = 0; s < ShdrDesc.NumStaticSamplers; ++s)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span>( StrCmpSuff(Name.c_str(), ShdrDesc.StaticSamplers[s].TextureName, SamplerSuffix) )</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  IsStaticSampler = <span class="keyword">true</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Use texture name to derive sampler type</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  VarType = GetShaderVariableType(ShdrDesc.DefaultVariableType, ShdrDesc.VariableDesc, ShdrDesc.NumVariables,</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  [&](<span class="keyword">const</span> <span class="keywordtype">char</span> *TexName)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  return StrCmpSuff(Name.c_str(), TexName, SamplerSuffix);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  );</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  VarType = GetShaderVariableType(Name.c_str(), ShdrDesc.DefaultVariableType, ShdrDesc.VariableDesc, ShdrDesc.NumVariables);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">switch</span>( BindingDesc.Type )</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">case</span> D3D_SIT_CBUFFER: ++NumCBs; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">case</span> D3D_SIT_TBUFFER: UNSUPPORTED( <span class="stringliteral">"TBuffers are not supported"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> D3D_SIT_TEXTURE: ++(BindingDesc.Dimension == D3D_SRV_DIMENSION_BUFFER ? NumBufSRVs : NumTexSRVs); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">case</span> D3D_SIT_SAMPLER: ++NumSamplers; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWTYPED: ++(BindingDesc.Dimension == D3D_SRV_DIMENSION_BUFFER ? NumBufUAVs : NumTexUAVs); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> D3D_SIT_STRUCTURED: ++NumBufSRVs; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWSTRUCTURED: ++NumBufUAVs; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">case</span> D3D_SIT_BYTEADDRESS: UNSUPPORTED( <span class="stringliteral">"Byte address buffers are not supported"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWBYTEADDRESS: ++NumBufUAVs; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_APPEND_STRUCTURED: UNSUPPORTED( <span class="stringliteral">"Append structured buffers are not supported"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_CONSUME_STRUCTURED: UNSUPPORTED( <span class="stringliteral">"Consume structured buffers are not supported"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER: UNSUPPORTED( <span class="stringliteral">"RW structured buffers with counter are not supported"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unexpected resource type"</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  Resources.emplace_back(std::move(Name), BindingDesc.BindPoint, BindCount, BindingDesc.Type, VarType, BindingDesc.Dimension, D3DShaderResourceAttribs::InvalidSamplerId, IsStaticSampler);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(ShdrDesc.NumVariables != 0 || ShdrDesc.NumStaticSamplers != 0 )</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">for</span> (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> v = 0; v < ShdrDesc.NumVariables; ++v)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">bool</span> VariableFound = <span class="keyword">false</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">const</span> <span class="keyword">auto</span> *VarName = ShdrDesc.VariableDesc[v].Name;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& Res : Resources)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Skip samplers as they are not handled as independent variables</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span> (Res.GetInputType() != D3D_SIT_SAMPLER && Res.Name.compare(VarName) == 0)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  VariableFound = <span class="keyword">true</span>; </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span>(!VariableFound)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Variable \""</span>, VarName, <span class="stringliteral">"\" not found in shader \""</span>, ShdrDesc.Name, <span class="charliteral">'\"'</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">for</span> (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> s = 0; s < ShdrDesc.NumStaticSamplers; ++s)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">bool</span> TextureFound = <span class="keyword">false</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">const</span> <span class="keyword">auto</span> *TexName = ShdrDesc.StaticSamplers[s].TextureName;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& Res : Resources)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span> ( Res.GetInputType() == D3D_SIT_TEXTURE && Res.GetSRVDimension() != D3D_SRV_DIMENSION_BUFFER && Res.Name.compare(TexName) == 0)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  TextureFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span>(!TextureFound)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Static sampler specifies a texture \""</span>, TexName, <span class="stringliteral">"\" that is not found in shader \""</span>, ShdrDesc.Name, <span class="charliteral">'\"'</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  OnResourcesCounted(NumCBs, NumTexSRVs, NumTexUAVs, NumBufSRVs, NumBufUAVs, NumSamplers);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  std::vector<D3DShaderResourceAttribs, STDAllocatorRawMem<D3DShaderResourceAttribs> > TextureSRVs( STD_ALLOCATOR_RAW_MEM(D3DShaderResourceAttribs, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<D3DShaderResourceAttribs>"</span>) );</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  TextureSRVs.reserve(NumTexSRVs);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> &Res : Resources)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">switch</span>( Res.GetInputType() )</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">case</span> D3D_SIT_CBUFFER:</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  OnNewCB( std::move(Res) );</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> D3D_SIT_TBUFFER:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  UNSUPPORTED( <span class="stringliteral">"TBuffers are not supported"</span> );</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">case</span> D3D_SIT_TEXTURE:</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span>( Res.GetSRVDimension() == D3D_SRV_DIMENSION_BUFFER )</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  OnNewBuffSRV( std::move(Res) );</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  TextureSRVs.emplace_back( std::move(Res) );</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">case</span> D3D_SIT_SAMPLER:</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  OnNewSampler( std::move(Res) );</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWTYPED:</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span>( Res.GetSRVDimension() == D3D_SRV_DIMENSION_BUFFER )</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  OnNewBuffUAV( std::move(Res) );</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  OnNewTexUAV( std::move(Res) );</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">case</span> D3D_SIT_STRUCTURED:</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  OnNewBuffSRV( std::move(Res) );</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWSTRUCTURED:</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  OnNewBuffUAV( std::move(Res) );</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">case</span> D3D_SIT_BYTEADDRESS:</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  UNSUPPORTED( <span class="stringliteral">"Byte address buffers are not supported"</span> );</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWBYTEADDRESS:</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  OnNewBuffUAV( std::move(Res) );</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_APPEND_STRUCTURED:</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  UNSUPPORTED( <span class="stringliteral">"Append structured buffers are not supported"</span> );</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_CONSUME_STRUCTURED:</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  UNSUPPORTED( <span class="stringliteral">"Consume structured buffers are not supported"</span> );</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER:</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  UNSUPPORTED( <span class="stringliteral">"RW structured buffers with counter are not supported"</span> );</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="comment">// Process texture SRVs. We need to do this after all samplers are initialized</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">for</span>( <span class="keyword">auto</span> &Tex : TextureSRVs )</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  OnNewTexSRV( std::move(Tex) );</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "StringTools.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_SHADER_DESC, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">typename</span> D3D_SHADER_INPUT_BIND_DESC,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">typename</span> TShaderReflection, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typename</span> TOnResourcesCounted,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">typename</span> TOnNewCB, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typename</span> TOnNewTexUAV, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typename</span> TOnNewBuffUAV, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typename</span> TOnNewBuffSRV,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typename</span> TOnNewSampler,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typename</span> TOnNewTexSRV></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span> LoadD3DShaderResources(ID3DBlob *pShaderByteCode, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  TOnResourcesCounted OnResourcesCounted, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  TOnNewCB OnNewCB, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  TOnNewTexUAV OnNewTexUAV, </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  TOnNewBuffUAV OnNewBuffUAV, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  TOnNewBuffSRV OnNewBuffSRV,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  TOnNewSampler OnNewSampler,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  TOnNewTexSRV OnNewTexSRV, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">const</span> ShaderDesc &ShdrDesc,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> Char *SamplerSuffix)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  CComPtr<TShaderReflection> pShaderReflection;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  CHECK_D3D_RESULT_THROW( D3DReflect( pShaderByteCode->GetBufferPointer(), pShaderByteCode->GetBufferSize(), __uuidof(pShaderReflection), <span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>**<span class="keyword">></span>(<span class="keyword">static_cast<</span>TShaderReflection**<span class="keyword">></span>(&pShaderReflection)) ),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="stringliteral">"Failed to get the shader reflection"</span> );</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  D3D_SHADER_DESC shaderDesc = {};</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  pShaderReflection->GetDesc( &shaderDesc );</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<D3DShaderResourceAttribs, STDAllocatorRawMem<D3DShaderResourceAttribs> > Resources( STD_ALLOCATOR_RAW_MEM(D3DShaderResourceAttribs, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<D3DShaderResourceAttribs>"</span>) );</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  Resources.reserve(shaderDesc.BoundResources);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumCBs = 0, NumTexSRVs = 0, NumTexUAVs = 0, NumBufSRVs = 0, NumBufUAVs = 0, NumSamplers = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Number of resources to skip (used for array resources)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  UINT SkipCount = 1;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">for</span>( UINT Res = 0; Res < shaderDesc.BoundResources; Res += SkipCount )</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  D3D_SHADER_INPUT_BIND_DESC BindingDesc = {};</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  pShaderReflection->GetResourceBindingDesc( Res, &BindingDesc );</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> Name(BindingDesc.Name);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  SkipCount = 1;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  UINT BindCount = BindingDesc.BindCount;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// Handle arrays</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// For shader models 5_0 and before, every resource array element is enumerated individually.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// For instance, if the following texture array is defined in the shader:</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">//</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// Texture2D<float3> g_tex2DDiffuse[4];</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">//</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// The reflection system will enumerate 4 resources with the following names:</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// "g_tex2DDiffuse[0]"</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// "g_tex2DDiffuse[1]"</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// "g_tex2DDiffuse[2]"</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// "g_tex2DDiffuse[3]"</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// </span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Notice that if some array element is not used by the shader, it will not be enumerated</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">auto</span> OpenBracketPos = Name.find(<span class="charliteral">'['</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (String::npos != OpenBracketPos)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  VERIFY(BindCount == 1, <span class="stringliteral">"When array elements are enumerated individually, BindCount is expected to always be 1"</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// Name == "g_tex2DDiffuse[0]"</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// ^</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// OpenBracketPos</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Name.erase(OpenBracketPos, Name.length() - OpenBracketPos);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// Name == "g_tex2DDiffuse"</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  VERIFY_EXPR(Name.length() == OpenBracketPos);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &ExistingRes : Resources)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  VERIFY(ExistingRes.Name != Name, <span class="stringliteral">"Resource with the same name has already been enumerated. All array elements are expected to be enumerated one after another"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">for</span>( UINT ArrElem = Res+1; ArrElem < shaderDesc.BoundResources; ++ArrElem)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  D3D_SHADER_INPUT_BIND_DESC ArrElemBindingDesc = {};</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  pShaderReflection->GetResourceBindingDesc( ArrElem, &ArrElemBindingDesc );</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// Make sure this case is handled correctly:</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// "g_tex2DDiffuse[.]" != "g_tex2DDiffuse2[.]"</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span> ( strncmp(Name.c_str(), ArrElemBindingDesc.Name, OpenBracketPos) == 0 && ArrElemBindingDesc.Name[OpenBracketPos] == <span class="charliteral">'['</span>)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">//g_tex2DDiffuse[2]</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// ^</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  UINT Ind = atoi(ArrElemBindingDesc.Name+OpenBracketPos+1);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  BindCount = std::max(BindCount, Ind+1);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  VERIFY(ArrElemBindingDesc.BindPoint == BindingDesc.BindPoint + Ind, </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="stringliteral">"Array elements are expected to use contigous bind points.\n"</span>, </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  BindingDesc.Name, <span class="stringliteral">" uses slot "</span>, BindingDesc.BindPoint, <span class="stringliteral">", so "</span>, ArrElemBindingDesc.Name, <span class="stringliteral">" is expected to use slot "</span>, BindingDesc.BindPoint + Ind, <span class="stringliteral">" while "</span>, ArrElemBindingDesc.BindPoint, <span class="stringliteral">" is actually used"</span> );</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// Note that skip count may not necessarily be the same as BindCount.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// If some array elements are not used by the shader, the reflection system skips them</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  ++SkipCount;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType = <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">bool</span> IsStaticSampler = <span class="keyword">false</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span> (BindingDesc.Type == D3D_SIT_SAMPLER)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span> (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> s = 0; s < ShdrDesc.NumStaticSamplers; ++s)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span>( StrCmpSuff(Name.c_str(), ShdrDesc.StaticSamplers[s].TextureName, SamplerSuffix) )</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  IsStaticSampler = <span class="keyword">true</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Use texture name to derive sampler type</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  VarType = GetShaderVariableType(ShdrDesc.DefaultVariableType, ShdrDesc.VariableDesc, ShdrDesc.NumVariables,</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  [&](<span class="keyword">const</span> <span class="keywordtype">char</span> *TexName)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  return StrCmpSuff(Name.c_str(), TexName, SamplerSuffix);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  );</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  VarType = GetShaderVariableType(Name.c_str(), ShdrDesc.DefaultVariableType, ShdrDesc.VariableDesc, ShdrDesc.NumVariables);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">switch</span>( BindingDesc.Type )</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">case</span> D3D_SIT_CBUFFER: ++NumCBs; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">case</span> D3D_SIT_TBUFFER: UNSUPPORTED( <span class="stringliteral">"TBuffers are not supported"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> D3D_SIT_TEXTURE: ++(BindingDesc.Dimension == D3D_SRV_DIMENSION_BUFFER ? NumBufSRVs : NumTexSRVs); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">case</span> D3D_SIT_SAMPLER: ++NumSamplers; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWTYPED: ++(BindingDesc.Dimension == D3D_SRV_DIMENSION_BUFFER ? NumBufUAVs : NumTexUAVs); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> D3D_SIT_STRUCTURED: ++NumBufSRVs; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWSTRUCTURED: ++NumBufUAVs; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">case</span> D3D_SIT_BYTEADDRESS: UNSUPPORTED( <span class="stringliteral">"Byte address buffers are not supported"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWBYTEADDRESS: ++NumBufUAVs; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_APPEND_STRUCTURED: UNSUPPORTED( <span class="stringliteral">"Append structured buffers are not supported"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_CONSUME_STRUCTURED: UNSUPPORTED( <span class="stringliteral">"Consume structured buffers are not supported"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER: UNSUPPORTED( <span class="stringliteral">"RW structured buffers with counter are not supported"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unexpected resource type"</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  Resources.emplace_back(std::move(Name), BindingDesc.BindPoint, BindCount, BindingDesc.Type, VarType, BindingDesc.Dimension, D3DShaderResourceAttribs::InvalidSamplerId, IsStaticSampler);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(ShdrDesc.NumVariables != 0 || ShdrDesc.NumStaticSamplers != 0 )</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">for</span> (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> v = 0; v < ShdrDesc.NumVariables; ++v)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">bool</span> VariableFound = <span class="keyword">false</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">const</span> <span class="keyword">auto</span> *VarName = ShdrDesc.VariableDesc[v].Name;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& Res : Resources)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Skip samplers as they are not handled as independent variables</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span> (Res.GetInputType() != D3D_SIT_SAMPLER && Res.Name.compare(VarName) == 0)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  VariableFound = <span class="keyword">true</span>; </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span>(!VariableFound)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Variable \""</span>, VarName, <span class="stringliteral">"\" not found in shader \""</span>, ShdrDesc.Name, <span class="charliteral">'\"'</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">for</span> (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> s = 0; s < ShdrDesc.NumStaticSamplers; ++s)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">bool</span> TextureFound = <span class="keyword">false</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">const</span> <span class="keyword">auto</span> *TexName = ShdrDesc.StaticSamplers[s].TextureName;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& Res : Resources)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span> ( Res.GetInputType() == D3D_SIT_TEXTURE && Res.GetSRVDimension() != D3D_SRV_DIMENSION_BUFFER && Res.Name.compare(TexName) == 0)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  TextureFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span>(!TextureFound)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Static sampler specifies a texture \""</span>, TexName, <span class="stringliteral">"\" that is not found in shader \""</span>, ShdrDesc.Name, <span class="charliteral">'\"'</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  OnResourcesCounted(NumCBs, NumTexSRVs, NumTexUAVs, NumBufSRVs, NumBufUAVs, NumSamplers);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  std::vector<D3DShaderResourceAttribs, STDAllocatorRawMem<D3DShaderResourceAttribs> > TextureSRVs( STD_ALLOCATOR_RAW_MEM(D3DShaderResourceAttribs, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<D3DShaderResourceAttribs>"</span>) );</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  TextureSRVs.reserve(NumTexSRVs);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> &Res : Resources)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">switch</span>( Res.GetInputType() )</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">case</span> D3D_SIT_CBUFFER:</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  OnNewCB( std::move(Res) );</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> D3D_SIT_TBUFFER:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  UNSUPPORTED( <span class="stringliteral">"TBuffers are not supported"</span> );</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">case</span> D3D_SIT_TEXTURE:</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span>( Res.GetSRVDimension() == D3D_SRV_DIMENSION_BUFFER )</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  OnNewBuffSRV( std::move(Res) );</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  TextureSRVs.emplace_back( std::move(Res) );</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">case</span> D3D_SIT_SAMPLER:</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  OnNewSampler( std::move(Res) );</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWTYPED:</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span>( Res.GetSRVDimension() == D3D_SRV_DIMENSION_BUFFER )</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  OnNewBuffUAV( std::move(Res) );</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  OnNewTexUAV( std::move(Res) );</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">case</span> D3D_SIT_STRUCTURED:</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  OnNewBuffSRV( std::move(Res) );</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWSTRUCTURED:</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  OnNewBuffUAV( std::move(Res) );</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">case</span> D3D_SIT_BYTEADDRESS:</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  UNSUPPORTED( <span class="stringliteral">"Byte address buffers are not supported"</span> );</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWBYTEADDRESS:</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  OnNewBuffUAV( std::move(Res) );</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_APPEND_STRUCTURED:</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  UNSUPPORTED( <span class="stringliteral">"Append structured buffers are not supported"</span> );</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_CONSUME_STRUCTURED:</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  UNSUPPORTED( <span class="stringliteral">"Consume structured buffers are not supported"</span> );</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">case</span> D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER:</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  UNSUPPORTED( <span class="stringliteral">"RW structured buffers with counter are not supported"</span> );</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="comment">// Process texture SRVs. We need to do this after all samplers are initialized</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">for</span>( <span class="keyword">auto</span> &Tex : TextureSRVs )</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  OnNewTexSRV( std::move(Tex) );</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_aef792a75d6b4771705fb4ed083428dc8"><div class="ttname"><a href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a></div><div class="ttdeci">IMemoryAllocator & GetRawAllocator()</div><div class="ttdoc">Returns raw memory allocator. </div><div class="ttdef"><b>Definition:</b> EngineMemory.cpp:46</div></div> <div class="ttc" id="namespace_diligent_html_adea6ddf55230a2722e6a7401e18de698"><div class="ttname"><a href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">Diligent::SHADER_VARIABLE_TYPE</a></div><div class="ttdeci">SHADER_VARIABLE_TYPE</div><div class="ttdoc">Describes shader variable type that is used by ShaderVariableDesc. </div><div class="ttdef"><b>Definition:</b> Shader.h:100</div></div> <div class="ttc" id="namespace_diligent_html_a3d23c2ee2a78504778603d8ef49ae314"><div class="ttname"><a href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">Diligent::String</a></div><div class="ttdeci">std::basic_string< Char > String</div><div class="ttdoc">String variable. </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:51</div></div> diff --git a/doc/html/_d3_d_type_conversion_impl_8h_source.html b/doc/html/_d3_d_type_conversion_impl_8h_source.html index 6d37175e..629acbc3 100644 --- a/doc/html/_d3_d_type_conversion_impl_8h_source.html +++ b/doc/html/_d3_d_type_conversion_impl_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">D3DTypeConversionImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_COMPARISON_FUNC></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">inline</span> D3D_COMPARISON_FUNC ComparisonFuncToD3DComparisonFunc(<a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// D3D12_COMPARISON_FUNC is equal to D3D11_COMPARISON_FUNC</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">switch</span>(Func)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5">COMPARISON_FUNC_UNKNOWN</a>: UNEXPECTED(<span class="stringliteral">"Comparison function is not specified"</span> ); <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_ALWAYS;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb">COMPARISON_FUNC_NEVER</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_NEVER;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a411164cf3b8a7ce0e4d3792b4bfe3e63">COMPARISON_FUNC_LESS</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_LESS;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad33573ebed971ae2e788c0c2119433c8">COMPARISON_FUNC_EQUAL</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_EQUAL;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11">COMPARISON_FUNC_LESS_EQUAL</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_LESS_EQUAL;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ae3ab0763823fc67730b719b4acafeea2">COMPARISON_FUNC_GREATER</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_GREATER;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3abf16cedb7ad37988bab6e7a80e11f263">COMPARISON_FUNC_NOT_EQUAL</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_NOT_EQUAL;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad35e669229761e23a8b6d7b1dff8d6a3">COMPARISON_FUNC_GREATER_EQUAL</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_GREATER_EQUAL;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11">COMPARISON_FUNC_ALWAYS</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_ALWAYS;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unknown comparison function"</span> ); <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_ALWAYS;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_TEXTURE_ADDRESS_MODE></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  D3D_TEXTURE_ADDRESS_MODE TexAddressModeToD3DAddressMode(<a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> Mode)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">switch</span>(Mode)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1ae4eb70142178447e2c072c2d66d5c002">TEXTURE_ADDRESS_UNKNOWN</a>: UNEXPECTED(<span class="stringliteral">"Texture address mode is not specified"</span> ); <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_CLAMP;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>: <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_WRAP;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a>: <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_MIRROR;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>: <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_CLAMP;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a3f55d99e8bb9fbd60ad58ad42f7754cd">TEXTURE_ADDRESS_BORDER</a>: <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_BORDER;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1afadca32bf8a0f145bc506aa8583712c2">TEXTURE_ADDRESS_MIRROR_ONCE</a>: <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_MIRROR_ONCE;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unknown texture address mode"</span> ); <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_CLAMP;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  } </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_PRIM_TOPOLOGY></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  D3D_PRIM_TOPOLOGY TopologyToD3DTopology(<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> Topology)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">static</span> D3D_PRIM_TOPOLOGY d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad6da20e017f1d6cd47c8480b2e2d10c7">PRIMITIVE_TOPOLOGY_NUM_TOPOLOGIES</a>] = {};</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a>] = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ae92cbcbf18a66dbe4463436512255d71">PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</a>] = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7be4708b91dbb1e86bc0e83bf4f7c3d6">PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP</a>] = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">PRIMITIVE_TOPOLOGY_POINT_LIST</a>] = D3D_PRIMITIVE_TOPOLOGY_POINTLIST;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a9cc861405d74774fa3e1dfea46af38f5">PRIMITIVE_TOPOLOGY_LINE_LIST</a>] = D3D_PRIMITIVE_TOPOLOGY_LINELIST;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2391ccd64eef53c0afb38a4038ee60e8">PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa3f5de372e432227935523d3340c31c4">PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ab080bb03f1dd1780108a4f063f912f56">PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca80f744bb8fd1b7dfb7e9c6f30e7226">PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a143737d74c6d54f6d306e9cfaec5e123">PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a89e83959864817ded36df88d008a852d">PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a40cc9177e4dd6ebfe8af822805ca3a7b">PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a83efcf6d5e7344bded72e8ab0e4987fe">PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a4773f73683ef10aab0d173184c83fec3">PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a338f901ebaf7b1a39bf11df03b46706d">PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af29f2e03da5da233318e9fe143e56f65">PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad5927a7c5890e224061a1b47b2e882a7">PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ade1587aa65e3a045465613b1bed14480">PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aaff97290dcd0ae400127c49d1c693dd1">PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca9973c74c8771d563acd96c7ab90220">PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a751ea00e3c825f8db30a213956d91d6a">PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5ba5f423fa6a2cb829f3e1f9fe9ef777">PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af1631cf630c60572095ed644cf056314">PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7854b9554ef00a17316d63651d99c52b">PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a54a54ae55e13555e60038b5d1d224410">PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aafda4acec32c1420a69b04d9ca98b7b8">PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5afe47dcc2bb7023572919fd5422a8493a">PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a8006e8901a9dbca7bf00db8d9cc711ad">PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a25a7f7a9608c3f78767f2facafa0a58b">PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa5fe455cd87a8f5b43f6bc144f9999d6">PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad37f9f89d54d3ddcfb1148614d2b544a">PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a600ccba949f8fc8d83087b6e5fee313d">PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5a6323683bea2fbf85d9fbfe4d0c0f72">PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2ac786c751b2c89db5ecd320cc9cc15a">PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6a30c15e62e2cf8b568473e3de9f1fc2">PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aefa709253ebb4377a447a123c0cb1ad5">PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aadfb69f9081328984e67040484a46d03">PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  VERIFY_EXPR(Topology >= <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a> && Topology<<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad6da20e017f1d6cd47c8480b2e2d10c7">PRIMITIVE_TOPOLOGY_NUM_TOPOLOGIES</a>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> d3dPrimTopology[Topology];</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// ================= Rasterizer state attributes conversion functions ================= </span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_FILL_MODE></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  D3D_FILL_MODE FillModeToD3DFillMode(<a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> FillMode)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// D3D12_FILL_MODE is identical tp D3D11_FILL_MODE</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">static</span> D3D_FILL_MODE d3dFillModes[<a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4c5785c082fe9c9ab08c2558882af04f">FILL_MODE_NUM_MODES</a>] = {};</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  d3dFillModes[ <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a">FILL_MODE_WIREFRAME</a> ] = D3D_FILL_MODE_WIREFRAME;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  d3dFillModes[ <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf">FILL_MODE_SOLID</a> ] = D3D_FILL_MODE_SOLID;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>( <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4f9c2dce719b61de78321d1742ad4dd3">FILL_MODE_UNDEFINED</a> < FillMode && FillMode < <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4c5785c082fe9c9ab08c2558882af04f">FILL_MODE_NUM_MODES</a> )</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">auto</span> d3dFillMode = d3dFillModes[FillMode];</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  VERIFY( d3dFillMode != 0, <span class="stringliteral">"Incorrect fill mode"</span> );</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> d3dFillMode;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  UNEXPECTED( <span class="stringliteral">"Incorrect fill mode ("</span>, FillMode, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_FILL_MODE<span class="keyword">></span>(0);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_CULL_MODE></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  D3D_CULL_MODE CullModeToD3DCullMode( <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> CullMode )</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// D3D_CULL_MODE is identical to D3D11_CULL_MODE</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">static</span> D3D_CULL_MODE d3dCullModes[<a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a0b91e2f89b17819acce7200fbdf87d8d">CULL_MODE_NUM_MODES</a>] = {};</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  d3dCullModes[ <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a88bffa666bf1f0913c785f5adcc51a3c">CULL_MODE_NONE</a> ] = D3D_CULL_MODE_NONE;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  d3dCullModes[ <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a573069ffcc465c046134a3fc51a52d1b">CULL_MODE_FRONT</a> ] = D3D_CULL_MODE_FRONT;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  d3dCullModes[ <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aea9b199b178f12075d4d5df882043269">CULL_MODE_BACK</a> ] = D3D_CULL_MODE_BACK;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>( <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aceb414f364000c13d75a7a17fa0416ca">CULL_MODE_UNDEFINED</a> < CullMode && CullMode < <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a0b91e2f89b17819acce7200fbdf87d8d">CULL_MODE_NUM_MODES</a> )</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">auto</span> d3dCullMode = d3dCullModes[CullMode];</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  VERIFY( d3dCullMode != 0, <span class="stringliteral">"Incorrect cull mode"</span> );</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> d3dCullMode;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  UNEXPECTED( <span class="stringliteral">"Incorrect cull mode ("</span>, CullMode, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_CULL_MODE<span class="keyword">></span>(0);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_RASTERIZER_DESC, <span class="keyword">typename</span> D3D_FILL_MODE, <span class="keyword">typename</span> D3D_CULL_MODE></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">void</span> RasterizerStateDesc_To_D3D_RASTERIZER_DESC(<span class="keyword">const</span> RasterizerStateDesc &RasterizerDesc, D3D_RASTERIZER_DESC &d3dRSDesc)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  d3dRSDesc.FillMode = FillModeToD3DFillMode<D3D_FILL_MODE>(RasterizerDesc.FillMode);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  d3dRSDesc.CullMode = CullModeToD3DCullMode<D3D_CULL_MODE>(RasterizerDesc.CullMode);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  d3dRSDesc.FrontCounterClockwise = RasterizerDesc.FrontCounterClockwise ? TRUE : FALSE;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  d3dRSDesc.DepthBias = RasterizerDesc.DepthBias;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  d3dRSDesc.DepthBiasClamp = RasterizerDesc.DepthBiasClamp; </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  d3dRSDesc.SlopeScaledDepthBias = RasterizerDesc.SlopeScaledDepthBias;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  d3dRSDesc.DepthClipEnable = RasterizerDesc.DepthClipEnable ? TRUE : FALSE;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">//d3d12RSDesc.ScissorEnable = RSDesc.ScissorEnable ? TRUE : FALSE; </span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  d3dRSDesc.AntialiasedLineEnable = RasterizerDesc.AntialiasedLineEnable ? TRUE : FALSE;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  d3dRSDesc.MultisampleEnable = d3dRSDesc.AntialiasedLineEnable;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// ================= Blend state attributes conversion functions ================= </span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_BLEND></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  D3D_BLEND BlendFactorToD3DBlend( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> bf )</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// D3D11_BLEND and D3D12_BLEND are identical</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Note that this code is safe for multithreaded environments since</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// bIsInit is set to true only AFTER the entire map is initialized.</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">static</span> D3D_BLEND D3DBlend[<a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a4ac776a641c5abe06578c37c22e1c2a0">BLEND_FACTOR_NUM_FACTORS</a>] = {};</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// In a multithreaded environment, several threads can potentially enter</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// this block. This is not a problem since they will just initialize the </span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// memory with the same values more than once</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1aa78e79d5fc95c45698a965cb657a21b4">BLEND_FACTOR_ZERO</a> ] = D3D_BLEND_ZERO;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ab81b4c36868770ea6a97048bb46190f9">BLEND_FACTOR_ONE</a> ] = D3D_BLEND_ONE;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a565d3f80967d8c90ca2613cbe5bf07e7">BLEND_FACTOR_SRC_COLOR</a> ] = D3D_BLEND_SRC_COLOR;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ae5bf98a17ed70db4950c1bd852000fe3">BLEND_FACTOR_INV_SRC_COLOR</a> ] = D3D_BLEND_INV_SRC_COLOR;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a948b5c73475cba94c6c028092f2b9e3a">BLEND_FACTOR_SRC_ALPHA</a> ] = D3D_BLEND_SRC_ALPHA;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a5bb6a5588766529cd50db693951fc976">BLEND_FACTOR_INV_SRC_ALPHA</a> ] = D3D_BLEND_INV_SRC_ALPHA;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a6ae74671ee262ba8d396e898f90398ee">BLEND_FACTOR_DEST_ALPHA</a> ] = D3D_BLEND_DEST_ALPHA;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a26b0fdff59e555e405da24bda789186b">BLEND_FACTOR_INV_DEST_ALPHA</a> ] = D3D_BLEND_INV_DEST_ALPHA;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a874d7c0d6c6212a313a2565b8289edd3">BLEND_FACTOR_DEST_COLOR</a> ] = D3D_BLEND_DEST_COLOR;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a923de8f8b25551fb02c1265961bf2dcc">BLEND_FACTOR_INV_DEST_COLOR</a> ] = D3D_BLEND_INV_DEST_COLOR;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1af63ab4a6d981c0f847faae9f68421028">BLEND_FACTOR_SRC_ALPHA_SAT</a> ] = D3D_BLEND_SRC_ALPHA_SAT;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a55990a5c0e48e2ecd81090e433e6ef06">BLEND_FACTOR_BLEND_FACTOR</a> ] = D3D_BLEND_BLEND_FACTOR;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a636346de2f019fa3a3ae3392e37f1af8">BLEND_FACTOR_INV_BLEND_FACTOR</a> ] = D3D_BLEND_INV_BLEND_FACTOR;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2a9de58773a193ca26dc5747ad15d5a0">BLEND_FACTOR_SRC1_COLOR</a> ] = D3D_BLEND_SRC1_COLOR;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1abdb1924164eb185c9103ebb31558b81a">BLEND_FACTOR_INV_SRC1_COLOR</a> ] = D3D_BLEND_INV_SRC1_COLOR;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2add20baaa9ee7598b28e83c0cf64c9b">BLEND_FACTOR_SRC1_ALPHA</a> ] = D3D_BLEND_SRC1_ALPHA;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1afd98dec225244fa1a213f528f4937615">BLEND_FACTOR_INV_SRC1_ALPHA</a> ] = D3D_BLEND_INV_SRC1_ALPHA;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span>( bf > <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a607e0164f4cc7dace2760c1074c760be">BLEND_FACTOR_UNDEFINED</a> && bf < <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a4ac776a641c5abe06578c37c22e1c2a0">BLEND_FACTOR_NUM_FACTORS</a> )</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keyword">auto</span> d3dbf = D3DBlend[bf];</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  VERIFY( d3dbf != 0, <span class="stringliteral">"Incorrect blend factor"</span> );</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">return</span> d3dbf;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  UNEXPECTED(<span class="stringliteral">"Incorrect blend factor ("</span>, bf, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_BLEND<span class="keyword">></span>( 0 );</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_BLEND_OP></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  D3D_BLEND_OP BlendOperationToD3DBlendOp( <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">BLEND_OPERATION</a> BlendOp )</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">// D3D12_BLEND_OP and D3D11_BLEND_OP are identical</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">static</span> D3D_BLEND_OP D3DBlendOp[<a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a3cd17b3a0762e892dd7dfc842a968406">BLEND_OPERATION_NUM_OPERATIONS</a>] = {};</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  D3DBlendOp[ <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a9e84f0b1a683c460a49427cdc716a531">BLEND_OPERATION_ADD</a> ] = D3D_BLEND_OP_ADD;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  D3DBlendOp[ <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a1ed369e906a5f05ba38bb58dbb30faeb">BLEND_OPERATION_SUBTRACT</a> ] = D3D_BLEND_OP_SUBTRACT;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  D3DBlendOp[ <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3aae2cc1969f4c2d769409d9aaf4e39c00">BLEND_OPERATION_REV_SUBTRACT</a> ] = D3D_BLEND_OP_REV_SUBTRACT;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  D3DBlendOp[ <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a8842278a3b21bcc3ac743eb14cc34f15">BLEND_OPERATION_MIN</a> ] = D3D_BLEND_OP_MIN;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  D3DBlendOp[ <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a538393fe379730eeb9472350b8e6f01c">BLEND_OPERATION_MAX</a> ] = D3D_BLEND_OP_MAX;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>( BlendOp > <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a987616518a77bdf05e92b26fc957d407">BLEND_OPERATION_UNDEFINED</a> && BlendOp < <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a3cd17b3a0762e892dd7dfc842a968406">BLEND_OPERATION_NUM_OPERATIONS</a> )</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">auto</span> d3dbop = D3DBlendOp[BlendOp];</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  VERIFY( d3dbop != 0, <span class="stringliteral">"Incorrect blend operation"</span> );</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> d3dbop;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  UNEXPECTED( <span class="stringliteral">"Incorrect blend operation ("</span>, BlendOp, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_BLEND_OP<span class="keyword">></span>(0);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_BLEND_DESC, <span class="keyword">typename</span> D3D_BLEND, <span class="keyword">typename</span> D3D_BLEND_OP></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">void</span> BlendStateDescToD3DBlendDesc(<span class="keyword">const</span> BlendStateDesc &BSDesc, D3D_BLEND_DESC &d3d12BlendDesc)</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// D3D_BLEND_DESC and D3D11_BLEND_DESC structures are identical</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  d3d12BlendDesc.AlphaToCoverageEnable = BSDesc.AlphaToCoverageEnable ? TRUE : FALSE;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  d3d12BlendDesc.IndependentBlendEnable = BSDesc.IndependentBlendEnable ? TRUE : FALSE;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  VERIFY( BSDesc.MaxRenderTargets >= 8, <span class="stringliteral">"Number of render targets is expected to be at least 8"</span> );</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 8; ++i )</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& SrcRTDesc = BSDesc.RenderTargets[i];</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keyword">auto</span> &DstRTDesc = d3d12BlendDesc.RenderTarget[i];</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  DstRTDesc.BlendEnable = SrcRTDesc.BlendEnable ? TRUE : FALSE;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  DstRTDesc.SrcBlend = BlendFactorToD3DBlend<D3D_BLEND>(SrcRTDesc.SrcBlend);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  DstRTDesc.DestBlend = BlendFactorToD3DBlend<D3D_BLEND>(SrcRTDesc.DestBlend);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  DstRTDesc.BlendOp = BlendOperationToD3DBlendOp<D3D_BLEND_OP>(SrcRTDesc.BlendOp);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  DstRTDesc.SrcBlendAlpha = BlendFactorToD3DBlend<D3D_BLEND>(SrcRTDesc.SrcBlendAlpha);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  DstRTDesc.DestBlendAlpha = BlendFactorToD3DBlend<D3D_BLEND>(SrcRTDesc.DestBlendAlpha);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  DstRTDesc.BlendOpAlpha = BlendOperationToD3DBlendOp<D3D_BLEND_OP>(SrcRTDesc.BlendOpAlpha);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  DstRTDesc.RenderTargetWriteMask = </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  ((SrcRTDesc.RenderTargetWriteMask & <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cab98fdb1a5bf1764c6c29e44adda56eec">COLOR_MASK_RED</a>) ? D3D_COLOR_WRITE_ENABLE_RED : 0) | </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  ((SrcRTDesc.RenderTargetWriteMask & <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca0c48f62df6e9f3dd4a13a0a8125a5176">COLOR_MASK_GREEN</a>) ? D3D_COLOR_WRITE_ENABLE_GREEN : 0) |</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  ((SrcRTDesc.RenderTargetWriteMask & <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca96c4ad2861f747d80853e59ee8bc9f73">COLOR_MASK_BLUE</a>) ? D3D_COLOR_WRITE_ENABLE_BLUE : 0) |</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  ((SrcRTDesc.RenderTargetWriteMask & <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca8914c618d54477b9fa5f2b2323f0f726">COLOR_MASK_ALPHA</a>) ? D3D_COLOR_WRITE_ENABLE_ALPHA : 0);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// ====================== Depth-stencil state attributes conversion functions ======================</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_STENCIL_OP></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  D3D_STENCIL_OP StencilOpToD3DStencilOp( <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilOp )</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keyword">static</span> D3D_STENCIL_OP StOpToD3DStOpMap[<a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab30744e3d550c11a684d8cb8a9c82336">STENCIL_OP_NUM_OPS</a>] = {};</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7">STENCIL_OP_KEEP</a> ] = D3D_STENCIL_OP_KEEP;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb6492e7d3ebd5cdfe9ff7fb8d666c90">STENCIL_OP_ZERO</a> ] = D3D_STENCIL_OP_ZERO;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a5f484be67a9ed5fea8f2823fe48c97d4">STENCIL_OP_REPLACE</a> ] = D3D_STENCIL_OP_REPLACE;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb3f32bf501fc645dea379a28e35df47">STENCIL_OP_INCR_SAT</a> ] = D3D_STENCIL_OP_INCR_SAT;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a67d7f951aaa57ed1522fe66f43e32c78">STENCIL_OP_DECR_SAT</a> ] = D3D_STENCIL_OP_DECR_SAT;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab365e790638343452b04c19e9b5064c1">STENCIL_OP_INVERT</a> ] = D3D_STENCIL_OP_INVERT;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29aa2be5a5eaa59b9dda5f2336dfc9e1548">STENCIL_OP_INCR_WRAP</a>] = D3D_STENCIL_OP_INCR;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29af6d504952c26323aff8175c8f117c943">STENCIL_OP_DECR_WRAP</a>] = D3D_STENCIL_OP_DECR;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span>( StencilOp > <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40">STENCIL_OP_UNDEFINED</a> && StencilOp < <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab30744e3d550c11a684d8cb8a9c82336">STENCIL_OP_NUM_OPS</a> )</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keyword">auto</span> d3dStencilOp = StOpToD3DStOpMap[StencilOp];</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  VERIFY( d3dStencilOp != 0, <span class="stringliteral">"Unexpected stencil op"</span> );</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> d3dStencilOp;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  UNEXPECTED( <span class="stringliteral">"Stencil operation ("</span>, StencilOp, <span class="stringliteral">") is out of allowed range [1, "</span>, <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab30744e3d550c11a684d8cb8a9c82336">STENCIL_OP_NUM_OPS</a> - 1, <span class="stringliteral">"]"</span> );</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_STENCIL_OP<span class="keyword">></span>(0);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_DEPTH_STENCILOP_DESC, <span class="keyword">typename</span> D3D_STENCIL_OP, <span class="keyword">typename</span> D3D_COMPARISON_FUNC></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  D3D_DEPTH_STENCILOP_DESC StencilOpDescToD3DStencilOpDesc(<span class="keyword">const</span> StencilOpDesc &StOpDesc)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// D3D12_DEPTH_STENCILOP_DESC is identical to D3D11_DEPTH_STENCILOP_DESC</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  D3D_DEPTH_STENCILOP_DESC D3DStOpDesc;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  D3DStOpDesc.StencilFailOp = StencilOpToD3DStencilOp<D3D_STENCIL_OP>( StOpDesc.StencilFailOp );</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  D3DStOpDesc.StencilDepthFailOp = StencilOpToD3DStencilOp<D3D_STENCIL_OP>( StOpDesc.StencilDepthFailOp );</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  D3DStOpDesc.StencilPassOp = StencilOpToD3DStencilOp<D3D_STENCIL_OP>( StOpDesc.StencilPassOp );</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  D3DStOpDesc.StencilFunc = ComparisonFuncToD3DComparisonFunc<D3D_COMPARISON_FUNC>( StOpDesc.StencilFunc );</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span> D3DStOpDesc;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_DEPTH_STENCIL_DESC, <span class="keyword">typename</span> D3D_DEPTH_STENCILOP_DESC, <span class="keyword">typename</span> D3D_STENCIL_OP, <span class="keyword">typename</span> D3D_COMPARISON_FUNC></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordtype">void</span> DepthStencilStateDesc_To_D3D_DEPTH_STENCIL_DESC(<span class="keyword">const</span> DepthStencilStateDesc &DepthStencilDesc, D3D_DEPTH_STENCIL_DESC &d3dDSSDesc)</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// D3D_DEPTH_STENCIL_DESC is identical to D3D11_DEPTH_STENCIL_DESC</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  d3dDSSDesc.DepthEnable = DepthStencilDesc.DepthEnable ? TRUE : FALSE;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  d3dDSSDesc.DepthWriteMask = DepthStencilDesc.DepthWriteEnable ? D3D_DEPTH_WRITE_MASK_ALL : D3D_DEPTH_WRITE_MASK_ZERO;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  d3dDSSDesc.DepthFunc = ComparisonFuncToD3DComparisonFunc<D3D_COMPARISON_FUNC>( DepthStencilDesc.DepthFunc );</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  d3dDSSDesc.StencilEnable = DepthStencilDesc.StencilEnable ? TRUE : FALSE;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  d3dDSSDesc.StencilReadMask = DepthStencilDesc.StencilReadMask;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  d3dDSSDesc.StencilWriteMask = DepthStencilDesc.StencilWriteMask;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  d3dDSSDesc.FrontFace = StencilOpDescToD3DStencilOpDesc<D3D_DEPTH_STENCILOP_DESC, D3D_STENCIL_OP, D3D_COMPARISON_FUNC>( DepthStencilDesc.FrontFace );</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  d3dDSSDesc.BackFace = StencilOpDescToD3DStencilOpDesc<D3D_DEPTH_STENCILOP_DESC, D3D_STENCIL_OP, D3D_COMPARISON_FUNC>( DepthStencilDesc.BackFace );</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_INPUT_ELEMENT_DESC></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordtype">void</span> LayoutElements_To_D3D_INPUT_ELEMENT_DESCs(<span class="keyword">const</span> std::vector<LayoutElement, STDAllocatorRawMem<LayoutElement> > &LayoutElements, std::vector<D3D_INPUT_ELEMENT_DESC, STDAllocatorRawMem<D3D_INPUT_ELEMENT_DESC>> &D3DInputElements)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="comment">// D3D12_INPUT_ELEMENT_DESC and D3D11_INPUT_ELEMENT_DESC are identical</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">auto</span> NumElements = LayoutElements.size();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  D3DInputElements.resize(NumElements);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> iElem=0; iElem < NumElements; ++iElem)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &CurrElem = LayoutElements[iElem];</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">auto</span> &D3DElem = D3DInputElements[iElem];</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  D3DElem.SemanticName = <span class="stringliteral">"ATTRIB"</span>;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  D3DElem.SemanticIndex = CurrElem.InputIndex;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  D3DElem.AlignedByteOffset = CurrElem.RelativeOffset;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  D3DElem.InputSlot = CurrElem.BufferSlot;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  D3DElem.Format = TypeToDXGI_Format(CurrElem.ValueType, CurrElem.NumComponents, CurrElem.IsNormalized);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  D3DElem.InputSlotClass = (CurrElem.Frequency == <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa82c41371a1ea79eb28874bdda04b24b7">LayoutElement::FREQUENCY_PER_VERTEX</a>) ? D3D_INPUT_CLASSIFICATION_PER_VERTEX_DATA : D3D_INPUT_CLASSIFICATION_PER_INSTANCE_DATA;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  D3DElem.InstanceDataStepRate = (CurrElem.Frequency == <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa82c41371a1ea79eb28874bdda04b24b7">LayoutElement::FREQUENCY_PER_VERTEX</a>) ? 0 : CurrElem.InstanceDataStepRate;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_FILTER></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  D3D_FILTER FilterTypeToD3DFilter(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MinFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MagFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MipFilter)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">switch</span>( MinFilter )</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="comment">// Regular filters</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>:</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_MAG_MIP_POINT;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_POINT_MAG_MIP_LINEAR;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>:</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_LINEAR_MAG_MIP_POINT;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_MAG_MIP_LINEAR;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>:</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  VERIFY( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a> && MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>,</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="stringliteral">"For anistropic filtering, all filters must be anisotropic"</span> );</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">return</span> D3D_FILTER_ANISOTROPIC;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">// Comparison filters</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a>:</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_MAG_MIP_POINT;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a>:</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97">FILTER_TYPE_COMPARISON_ANISOTROPIC</a>:</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  VERIFY( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97">FILTER_TYPE_COMPARISON_ANISOTROPIC</a> && MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97">FILTER_TYPE_COMPARISON_ANISOTROPIC</a>,</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="stringliteral">"For comparison anistropic filtering, all filters must be anisotropic"</span> );</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_ANISOTROPIC;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// Minimum filters</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a>:</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_MAG_MIP_POINT;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a>:</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4398678f25fd7f9c5ab22acb772a6188">FILTER_TYPE_MINIMUM_ANISOTROPIC</a>:</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  VERIFY( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4398678f25fd7f9c5ab22acb772a6188">FILTER_TYPE_MINIMUM_ANISOTROPIC</a> && MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4398678f25fd7f9c5ab22acb772a6188">FILTER_TYPE_MINIMUM_ANISOTROPIC</a>,</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="stringliteral">"For minimum anistropic filtering, all filters must be anisotropic"</span> );</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_ANISOTROPIC;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> </div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// Maximum filters</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a>:</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_MAG_MIP_POINT;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a>:</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3aff4370c3c16294f04a71dc1c08c1c33a">FILTER_TYPE_MAXIMUM_ANISOTROPIC</a>:</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  VERIFY( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3aff4370c3c16294f04a71dc1c08c1c33a">FILTER_TYPE_MAXIMUM_ANISOTROPIC</a> && MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3aff4370c3c16294f04a71dc1c08c1c33a">FILTER_TYPE_MAXIMUM_ANISOTROPIC</a>,</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="stringliteral">"For maximum anistropic filtering, all filters must be anisotropic"</span> );</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_ANISOTROPIC;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  }</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  UNEXPECTED( <span class="stringliteral">"Unsupported filter combination"</span> );</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_MAG_MIP_POINT;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> }</div><div class="ttc" id="namespace_diligent_html_ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869"><div class="ttname"><a href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">Diligent::PRIMITIVE_TOPOLOGY_POINT_LIST</a></div><div class="ttdoc">Interpret the vertex data as a list of points. D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_POINTLIST. OpenGL counterpart: GL_POINTS. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:71</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_COMPARISON_FUNC></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">inline</span> D3D_COMPARISON_FUNC ComparisonFuncToD3DComparisonFunc(<a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// D3D12_COMPARISON_FUNC is equal to D3D11_COMPARISON_FUNC</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">switch</span>(Func)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5">COMPARISON_FUNC_UNKNOWN</a>: UNEXPECTED(<span class="stringliteral">"Comparison function is not specified"</span> ); <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_ALWAYS;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb">COMPARISON_FUNC_NEVER</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_NEVER;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a411164cf3b8a7ce0e4d3792b4bfe3e63">COMPARISON_FUNC_LESS</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_LESS;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad33573ebed971ae2e788c0c2119433c8">COMPARISON_FUNC_EQUAL</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_EQUAL;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11">COMPARISON_FUNC_LESS_EQUAL</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_LESS_EQUAL;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ae3ab0763823fc67730b719b4acafeea2">COMPARISON_FUNC_GREATER</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_GREATER;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3abf16cedb7ad37988bab6e7a80e11f263">COMPARISON_FUNC_NOT_EQUAL</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_NOT_EQUAL;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad35e669229761e23a8b6d7b1dff8d6a3">COMPARISON_FUNC_GREATER_EQUAL</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_GREATER_EQUAL;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11">COMPARISON_FUNC_ALWAYS</a>: <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_ALWAYS;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unknown comparison function"</span> ); <span class="keywordflow">return</span> D3D_COMPARISON_FUNC_ALWAYS;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_TEXTURE_ADDRESS_MODE></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  D3D_TEXTURE_ADDRESS_MODE TexAddressModeToD3DAddressMode(<a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> Mode)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">switch</span>(Mode)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1ae4eb70142178447e2c072c2d66d5c002">TEXTURE_ADDRESS_UNKNOWN</a>: UNEXPECTED(<span class="stringliteral">"Texture address mode is not specified"</span> ); <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_CLAMP;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>: <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_WRAP;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a>: <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_MIRROR;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>: <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_CLAMP;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a3f55d99e8bb9fbd60ad58ad42f7754cd">TEXTURE_ADDRESS_BORDER</a>: <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_BORDER;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1afadca32bf8a0f145bc506aa8583712c2">TEXTURE_ADDRESS_MIRROR_ONCE</a>: <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_MIRROR_ONCE;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unknown texture address mode"</span> ); <span class="keywordflow">return</span> D3D_TEXTURE_ADDRESS_CLAMP;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  } </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_PRIM_TOPOLOGY></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  D3D_PRIM_TOPOLOGY TopologyToD3DTopology(<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> Topology)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">static</span> D3D_PRIM_TOPOLOGY d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad6da20e017f1d6cd47c8480b2e2d10c7">PRIMITIVE_TOPOLOGY_NUM_TOPOLOGIES</a>] = {};</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a>] = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ae92cbcbf18a66dbe4463436512255d71">PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</a>] = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7be4708b91dbb1e86bc0e83bf4f7c3d6">PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP</a>] = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">PRIMITIVE_TOPOLOGY_POINT_LIST</a>] = D3D_PRIMITIVE_TOPOLOGY_POINTLIST;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a9cc861405d74774fa3e1dfea46af38f5">PRIMITIVE_TOPOLOGY_LINE_LIST</a>] = D3D_PRIMITIVE_TOPOLOGY_LINELIST;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2391ccd64eef53c0afb38a4038ee60e8">PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa3f5de372e432227935523d3340c31c4">PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ab080bb03f1dd1780108a4f063f912f56">PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca80f744bb8fd1b7dfb7e9c6f30e7226">PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a143737d74c6d54f6d306e9cfaec5e123">PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a89e83959864817ded36df88d008a852d">PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a40cc9177e4dd6ebfe8af822805ca3a7b">PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a83efcf6d5e7344bded72e8ab0e4987fe">PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a4773f73683ef10aab0d173184c83fec3">PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a338f901ebaf7b1a39bf11df03b46706d">PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af29f2e03da5da233318e9fe143e56f65">PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad5927a7c5890e224061a1b47b2e882a7">PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ade1587aa65e3a045465613b1bed14480">PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aaff97290dcd0ae400127c49d1c693dd1">PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca9973c74c8771d563acd96c7ab90220">PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a751ea00e3c825f8db30a213956d91d6a">PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5ba5f423fa6a2cb829f3e1f9fe9ef777">PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af1631cf630c60572095ed644cf056314">PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7854b9554ef00a17316d63651d99c52b">PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a54a54ae55e13555e60038b5d1d224410">PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aafda4acec32c1420a69b04d9ca98b7b8">PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5afe47dcc2bb7023572919fd5422a8493a">PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a8006e8901a9dbca7bf00db8d9cc711ad">PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a25a7f7a9608c3f78767f2facafa0a58b">PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa5fe455cd87a8f5b43f6bc144f9999d6">PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad37f9f89d54d3ddcfb1148614d2b544a">PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a600ccba949f8fc8d83087b6e5fee313d">PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5a6323683bea2fbf85d9fbfe4d0c0f72">PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2ac786c751b2c89db5ecd320cc9cc15a">PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6a30c15e62e2cf8b568473e3de9f1fc2">PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aefa709253ebb4377a447a123c0cb1ad5">PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  d3dPrimTopology[<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aadfb69f9081328984e67040484a46d03">PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST</a>] = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  VERIFY_EXPR(Topology >= <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a> && Topology<<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad6da20e017f1d6cd47c8480b2e2d10c7">PRIMITIVE_TOPOLOGY_NUM_TOPOLOGIES</a>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> d3dPrimTopology[Topology];</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// ================= Rasterizer state attributes conversion functions ================= </span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_FILL_MODE></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  D3D_FILL_MODE FillModeToD3DFillMode(<a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> FillMode)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// D3D12_FILL_MODE is identical tp D3D11_FILL_MODE</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">static</span> D3D_FILL_MODE d3dFillModes[<a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4c5785c082fe9c9ab08c2558882af04f">FILL_MODE_NUM_MODES</a>] = {};</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  d3dFillModes[ <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a">FILL_MODE_WIREFRAME</a> ] = D3D_FILL_MODE_WIREFRAME;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  d3dFillModes[ <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf">FILL_MODE_SOLID</a> ] = D3D_FILL_MODE_SOLID;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>( <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4f9c2dce719b61de78321d1742ad4dd3">FILL_MODE_UNDEFINED</a> < FillMode && FillMode < <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4c5785c082fe9c9ab08c2558882af04f">FILL_MODE_NUM_MODES</a> )</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">auto</span> d3dFillMode = d3dFillModes[FillMode];</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  VERIFY( d3dFillMode != 0, <span class="stringliteral">"Incorrect fill mode"</span> );</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> d3dFillMode;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  UNEXPECTED( <span class="stringliteral">"Incorrect fill mode ("</span>, FillMode, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_FILL_MODE<span class="keyword">></span>(0);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_CULL_MODE></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  D3D_CULL_MODE CullModeToD3DCullMode( <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> CullMode )</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// D3D_CULL_MODE is identical to D3D11_CULL_MODE</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">static</span> D3D_CULL_MODE d3dCullModes[<a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a0b91e2f89b17819acce7200fbdf87d8d">CULL_MODE_NUM_MODES</a>] = {};</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  d3dCullModes[ <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a88bffa666bf1f0913c785f5adcc51a3c">CULL_MODE_NONE</a> ] = D3D_CULL_MODE_NONE;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  d3dCullModes[ <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a573069ffcc465c046134a3fc51a52d1b">CULL_MODE_FRONT</a> ] = D3D_CULL_MODE_FRONT;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  d3dCullModes[ <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aea9b199b178f12075d4d5df882043269">CULL_MODE_BACK</a> ] = D3D_CULL_MODE_BACK;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>( <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aceb414f364000c13d75a7a17fa0416ca">CULL_MODE_UNDEFINED</a> < CullMode && CullMode < <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a0b91e2f89b17819acce7200fbdf87d8d">CULL_MODE_NUM_MODES</a> )</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">auto</span> d3dCullMode = d3dCullModes[CullMode];</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  VERIFY( d3dCullMode != 0, <span class="stringliteral">"Incorrect cull mode"</span> );</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> d3dCullMode;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  UNEXPECTED( <span class="stringliteral">"Incorrect cull mode ("</span>, CullMode, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_CULL_MODE<span class="keyword">></span>(0);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_RASTERIZER_DESC, <span class="keyword">typename</span> D3D_FILL_MODE, <span class="keyword">typename</span> D3D_CULL_MODE></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">void</span> RasterizerStateDesc_To_D3D_RASTERIZER_DESC(<span class="keyword">const</span> RasterizerStateDesc &RasterizerDesc, D3D_RASTERIZER_DESC &d3dRSDesc)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  d3dRSDesc.FillMode = FillModeToD3DFillMode<D3D_FILL_MODE>(RasterizerDesc.FillMode);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  d3dRSDesc.CullMode = CullModeToD3DCullMode<D3D_CULL_MODE>(RasterizerDesc.CullMode);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  d3dRSDesc.FrontCounterClockwise = RasterizerDesc.FrontCounterClockwise ? TRUE : FALSE;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  d3dRSDesc.DepthBias = RasterizerDesc.DepthBias;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  d3dRSDesc.DepthBiasClamp = RasterizerDesc.DepthBiasClamp; </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  d3dRSDesc.SlopeScaledDepthBias = RasterizerDesc.SlopeScaledDepthBias;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  d3dRSDesc.DepthClipEnable = RasterizerDesc.DepthClipEnable ? TRUE : FALSE;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">//d3d12RSDesc.ScissorEnable = RSDesc.ScissorEnable ? TRUE : FALSE; </span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  d3dRSDesc.AntialiasedLineEnable = RasterizerDesc.AntialiasedLineEnable ? TRUE : FALSE;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  d3dRSDesc.MultisampleEnable = d3dRSDesc.AntialiasedLineEnable;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// ================= Blend state attributes conversion functions ================= </span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_BLEND></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  D3D_BLEND BlendFactorToD3DBlend( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> bf )</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// D3D11_BLEND and D3D12_BLEND are identical</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Note that this code is safe for multithreaded environments since</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// bIsInit is set to true only AFTER the entire map is initialized.</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">static</span> D3D_BLEND D3DBlend[<a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a4ac776a641c5abe06578c37c22e1c2a0">BLEND_FACTOR_NUM_FACTORS</a>] = {};</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// In a multithreaded environment, several threads can potentially enter</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// this block. This is not a problem since they will just initialize the </span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// memory with the same values more than once</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1aa78e79d5fc95c45698a965cb657a21b4">BLEND_FACTOR_ZERO</a> ] = D3D_BLEND_ZERO;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ab81b4c36868770ea6a97048bb46190f9">BLEND_FACTOR_ONE</a> ] = D3D_BLEND_ONE;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a565d3f80967d8c90ca2613cbe5bf07e7">BLEND_FACTOR_SRC_COLOR</a> ] = D3D_BLEND_SRC_COLOR;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1ae5bf98a17ed70db4950c1bd852000fe3">BLEND_FACTOR_INV_SRC_COLOR</a> ] = D3D_BLEND_INV_SRC_COLOR;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a948b5c73475cba94c6c028092f2b9e3a">BLEND_FACTOR_SRC_ALPHA</a> ] = D3D_BLEND_SRC_ALPHA;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a5bb6a5588766529cd50db693951fc976">BLEND_FACTOR_INV_SRC_ALPHA</a> ] = D3D_BLEND_INV_SRC_ALPHA;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a6ae74671ee262ba8d396e898f90398ee">BLEND_FACTOR_DEST_ALPHA</a> ] = D3D_BLEND_DEST_ALPHA;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a26b0fdff59e555e405da24bda789186b">BLEND_FACTOR_INV_DEST_ALPHA</a> ] = D3D_BLEND_INV_DEST_ALPHA;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a874d7c0d6c6212a313a2565b8289edd3">BLEND_FACTOR_DEST_COLOR</a> ] = D3D_BLEND_DEST_COLOR;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a923de8f8b25551fb02c1265961bf2dcc">BLEND_FACTOR_INV_DEST_COLOR</a> ] = D3D_BLEND_INV_DEST_COLOR;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1af63ab4a6d981c0f847faae9f68421028">BLEND_FACTOR_SRC_ALPHA_SAT</a> ] = D3D_BLEND_SRC_ALPHA_SAT;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a55990a5c0e48e2ecd81090e433e6ef06">BLEND_FACTOR_BLEND_FACTOR</a> ] = D3D_BLEND_BLEND_FACTOR;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a636346de2f019fa3a3ae3392e37f1af8">BLEND_FACTOR_INV_BLEND_FACTOR</a> ] = D3D_BLEND_INV_BLEND_FACTOR;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2a9de58773a193ca26dc5747ad15d5a0">BLEND_FACTOR_SRC1_COLOR</a> ] = D3D_BLEND_SRC1_COLOR;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1abdb1924164eb185c9103ebb31558b81a">BLEND_FACTOR_INV_SRC1_COLOR</a> ] = D3D_BLEND_INV_SRC1_COLOR;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a2add20baaa9ee7598b28e83c0cf64c9b">BLEND_FACTOR_SRC1_ALPHA</a> ] = D3D_BLEND_SRC1_ALPHA;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  D3DBlend[ <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1afd98dec225244fa1a213f528f4937615">BLEND_FACTOR_INV_SRC1_ALPHA</a> ] = D3D_BLEND_INV_SRC1_ALPHA;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span>( bf > <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a607e0164f4cc7dace2760c1074c760be">BLEND_FACTOR_UNDEFINED</a> && bf < <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a4ac776a641c5abe06578c37c22e1c2a0">BLEND_FACTOR_NUM_FACTORS</a> )</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keyword">auto</span> d3dbf = D3DBlend[bf];</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  VERIFY( d3dbf != 0, <span class="stringliteral">"Incorrect blend factor"</span> );</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">return</span> d3dbf;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  UNEXPECTED(<span class="stringliteral">"Incorrect blend factor ("</span>, bf, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_BLEND<span class="keyword">></span>( 0 );</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_BLEND_OP></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  D3D_BLEND_OP BlendOperationToD3DBlendOp( <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">BLEND_OPERATION</a> BlendOp )</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">// D3D12_BLEND_OP and D3D11_BLEND_OP are identical</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">static</span> D3D_BLEND_OP D3DBlendOp[<a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a3cd17b3a0762e892dd7dfc842a968406">BLEND_OPERATION_NUM_OPERATIONS</a>] = {};</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  D3DBlendOp[ <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a9e84f0b1a683c460a49427cdc716a531">BLEND_OPERATION_ADD</a> ] = D3D_BLEND_OP_ADD;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  D3DBlendOp[ <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a1ed369e906a5f05ba38bb58dbb30faeb">BLEND_OPERATION_SUBTRACT</a> ] = D3D_BLEND_OP_SUBTRACT;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  D3DBlendOp[ <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3aae2cc1969f4c2d769409d9aaf4e39c00">BLEND_OPERATION_REV_SUBTRACT</a> ] = D3D_BLEND_OP_REV_SUBTRACT;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  D3DBlendOp[ <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a8842278a3b21bcc3ac743eb14cc34f15">BLEND_OPERATION_MIN</a> ] = D3D_BLEND_OP_MIN;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  D3DBlendOp[ <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a538393fe379730eeb9472350b8e6f01c">BLEND_OPERATION_MAX</a> ] = D3D_BLEND_OP_MAX;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>( BlendOp > <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a987616518a77bdf05e92b26fc957d407">BLEND_OPERATION_UNDEFINED</a> && BlendOp < <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3a3cd17b3a0762e892dd7dfc842a968406">BLEND_OPERATION_NUM_OPERATIONS</a> )</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">auto</span> d3dbop = D3DBlendOp[BlendOp];</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  VERIFY( d3dbop != 0, <span class="stringliteral">"Incorrect blend operation"</span> );</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> d3dbop;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  UNEXPECTED( <span class="stringliteral">"Incorrect blend operation ("</span>, BlendOp, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_BLEND_OP<span class="keyword">></span>(0);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_BLEND_DESC, <span class="keyword">typename</span> D3D_BLEND, <span class="keyword">typename</span> D3D_BLEND_OP></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">void</span> BlendStateDescToD3DBlendDesc(<span class="keyword">const</span> BlendStateDesc &BSDesc, D3D_BLEND_DESC &d3d12BlendDesc)</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// D3D_BLEND_DESC and D3D11_BLEND_DESC structures are identical</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  d3d12BlendDesc.AlphaToCoverageEnable = BSDesc.AlphaToCoverageEnable ? TRUE : FALSE;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  d3d12BlendDesc.IndependentBlendEnable = BSDesc.IndependentBlendEnable ? TRUE : FALSE;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  VERIFY( BSDesc.MaxRenderTargets >= 8, <span class="stringliteral">"Number of render targets is expected to be at least 8"</span> );</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 8; ++i )</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& SrcRTDesc = BSDesc.RenderTargets[i];</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keyword">auto</span> &DstRTDesc = d3d12BlendDesc.RenderTarget[i];</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  DstRTDesc.BlendEnable = SrcRTDesc.BlendEnable ? TRUE : FALSE;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  DstRTDesc.SrcBlend = BlendFactorToD3DBlend<D3D_BLEND>(SrcRTDesc.SrcBlend);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  DstRTDesc.DestBlend = BlendFactorToD3DBlend<D3D_BLEND>(SrcRTDesc.DestBlend);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  DstRTDesc.BlendOp = BlendOperationToD3DBlendOp<D3D_BLEND_OP>(SrcRTDesc.BlendOp);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  DstRTDesc.SrcBlendAlpha = BlendFactorToD3DBlend<D3D_BLEND>(SrcRTDesc.SrcBlendAlpha);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  DstRTDesc.DestBlendAlpha = BlendFactorToD3DBlend<D3D_BLEND>(SrcRTDesc.DestBlendAlpha);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  DstRTDesc.BlendOpAlpha = BlendOperationToD3DBlendOp<D3D_BLEND_OP>(SrcRTDesc.BlendOpAlpha);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  DstRTDesc.RenderTargetWriteMask = </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  ((SrcRTDesc.RenderTargetWriteMask & <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35cab98fdb1a5bf1764c6c29e44adda56eec">COLOR_MASK_RED</a>) ? D3D_COLOR_WRITE_ENABLE_RED : 0) | </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  ((SrcRTDesc.RenderTargetWriteMask & <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca0c48f62df6e9f3dd4a13a0a8125a5176">COLOR_MASK_GREEN</a>) ? D3D_COLOR_WRITE_ENABLE_GREEN : 0) |</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  ((SrcRTDesc.RenderTargetWriteMask & <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca96c4ad2861f747d80853e59ee8bc9f73">COLOR_MASK_BLUE</a>) ? D3D_COLOR_WRITE_ENABLE_BLUE : 0) |</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  ((SrcRTDesc.RenderTargetWriteMask & <a class="code" href="namespace_diligent.html#a8dfef3a8f30375369b1ea5fe76abc35ca8914c618d54477b9fa5f2b2323f0f726">COLOR_MASK_ALPHA</a>) ? D3D_COLOR_WRITE_ENABLE_ALPHA : 0);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// ====================== Depth-stencil state attributes conversion functions ======================</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_STENCIL_OP></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  D3D_STENCIL_OP StencilOpToD3DStencilOp( <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilOp )</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> bIsInit = <span class="keyword">false</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keyword">static</span> D3D_STENCIL_OP StOpToD3DStOpMap[<a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab30744e3d550c11a684d8cb8a9c82336">STENCIL_OP_NUM_OPS</a>] = {};</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">if</span>( !bIsInit )</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7">STENCIL_OP_KEEP</a> ] = D3D_STENCIL_OP_KEEP;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb6492e7d3ebd5cdfe9ff7fb8d666c90">STENCIL_OP_ZERO</a> ] = D3D_STENCIL_OP_ZERO;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a5f484be67a9ed5fea8f2823fe48c97d4">STENCIL_OP_REPLACE</a> ] = D3D_STENCIL_OP_REPLACE;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb3f32bf501fc645dea379a28e35df47">STENCIL_OP_INCR_SAT</a> ] = D3D_STENCIL_OP_INCR_SAT;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a67d7f951aaa57ed1522fe66f43e32c78">STENCIL_OP_DECR_SAT</a> ] = D3D_STENCIL_OP_DECR_SAT;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab365e790638343452b04c19e9b5064c1">STENCIL_OP_INVERT</a> ] = D3D_STENCIL_OP_INVERT;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29aa2be5a5eaa59b9dda5f2336dfc9e1548">STENCIL_OP_INCR_WRAP</a>] = D3D_STENCIL_OP_INCR;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  StOpToD3DStOpMap[ <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29af6d504952c26323aff8175c8f117c943">STENCIL_OP_DECR_WRAP</a>] = D3D_STENCIL_OP_DECR;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  bIsInit = <span class="keyword">true</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span>( StencilOp > <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40">STENCIL_OP_UNDEFINED</a> && StencilOp < <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab30744e3d550c11a684d8cb8a9c82336">STENCIL_OP_NUM_OPS</a> )</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keyword">auto</span> d3dStencilOp = StOpToD3DStOpMap[StencilOp];</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  VERIFY( d3dStencilOp != 0, <span class="stringliteral">"Unexpected stencil op"</span> );</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> d3dStencilOp;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  UNEXPECTED( <span class="stringliteral">"Stencil operation ("</span>, StencilOp, <span class="stringliteral">") is out of allowed range [1, "</span>, <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab30744e3d550c11a684d8cb8a9c82336">STENCIL_OP_NUM_OPS</a> - 1, <span class="stringliteral">"]"</span> );</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_STENCIL_OP<span class="keyword">></span>(0);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_DEPTH_STENCILOP_DESC, <span class="keyword">typename</span> D3D_STENCIL_OP, <span class="keyword">typename</span> D3D_COMPARISON_FUNC></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  D3D_DEPTH_STENCILOP_DESC StencilOpDescToD3DStencilOpDesc(<span class="keyword">const</span> StencilOpDesc &StOpDesc)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// D3D12_DEPTH_STENCILOP_DESC is identical to D3D11_DEPTH_STENCILOP_DESC</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  D3D_DEPTH_STENCILOP_DESC D3DStOpDesc;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  D3DStOpDesc.StencilFailOp = StencilOpToD3DStencilOp<D3D_STENCIL_OP>( StOpDesc.StencilFailOp );</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  D3DStOpDesc.StencilDepthFailOp = StencilOpToD3DStencilOp<D3D_STENCIL_OP>( StOpDesc.StencilDepthFailOp );</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  D3DStOpDesc.StencilPassOp = StencilOpToD3DStencilOp<D3D_STENCIL_OP>( StOpDesc.StencilPassOp );</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  D3DStOpDesc.StencilFunc = ComparisonFuncToD3DComparisonFunc<D3D_COMPARISON_FUNC>( StOpDesc.StencilFunc );</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span> D3DStOpDesc;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_DEPTH_STENCIL_DESC, <span class="keyword">typename</span> D3D_DEPTH_STENCILOP_DESC, <span class="keyword">typename</span> D3D_STENCIL_OP, <span class="keyword">typename</span> D3D_COMPARISON_FUNC></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordtype">void</span> DepthStencilStateDesc_To_D3D_DEPTH_STENCIL_DESC(<span class="keyword">const</span> DepthStencilStateDesc &DepthStencilDesc, D3D_DEPTH_STENCIL_DESC &d3dDSSDesc)</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// D3D_DEPTH_STENCIL_DESC is identical to D3D11_DEPTH_STENCIL_DESC</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  d3dDSSDesc.DepthEnable = DepthStencilDesc.DepthEnable ? TRUE : FALSE;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  d3dDSSDesc.DepthWriteMask = DepthStencilDesc.DepthWriteEnable ? D3D_DEPTH_WRITE_MASK_ALL : D3D_DEPTH_WRITE_MASK_ZERO;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  d3dDSSDesc.DepthFunc = ComparisonFuncToD3DComparisonFunc<D3D_COMPARISON_FUNC>( DepthStencilDesc.DepthFunc );</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  d3dDSSDesc.StencilEnable = DepthStencilDesc.StencilEnable ? TRUE : FALSE;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  d3dDSSDesc.StencilReadMask = DepthStencilDesc.StencilReadMask;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  d3dDSSDesc.StencilWriteMask = DepthStencilDesc.StencilWriteMask;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  d3dDSSDesc.FrontFace = StencilOpDescToD3DStencilOpDesc<D3D_DEPTH_STENCILOP_DESC, D3D_STENCIL_OP, D3D_COMPARISON_FUNC>( DepthStencilDesc.FrontFace );</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  d3dDSSDesc.BackFace = StencilOpDescToD3DStencilOpDesc<D3D_DEPTH_STENCILOP_DESC, D3D_STENCIL_OP, D3D_COMPARISON_FUNC>( DepthStencilDesc.BackFace );</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_INPUT_ELEMENT_DESC></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordtype">void</span> LayoutElements_To_D3D_INPUT_ELEMENT_DESCs(<span class="keyword">const</span> std::vector<LayoutElement, STDAllocatorRawMem<LayoutElement> > &LayoutElements, std::vector<D3D_INPUT_ELEMENT_DESC, STDAllocatorRawMem<D3D_INPUT_ELEMENT_DESC>> &D3DInputElements)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="comment">// D3D12_INPUT_ELEMENT_DESC and D3D11_INPUT_ELEMENT_DESC are identical</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">auto</span> NumElements = LayoutElements.size();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  D3DInputElements.resize(NumElements);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> iElem=0; iElem < NumElements; ++iElem)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &CurrElem = LayoutElements[iElem];</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">auto</span> &D3DElem = D3DInputElements[iElem];</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  D3DElem.SemanticName = <span class="stringliteral">"ATTRIB"</span>;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  D3DElem.SemanticIndex = CurrElem.InputIndex;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  D3DElem.AlignedByteOffset = CurrElem.RelativeOffset;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  D3DElem.InputSlot = CurrElem.BufferSlot;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  D3DElem.Format = TypeToDXGI_Format(CurrElem.ValueType, CurrElem.NumComponents, CurrElem.IsNormalized);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  D3DElem.InputSlotClass = (CurrElem.Frequency == <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa82c41371a1ea79eb28874bdda04b24b7">LayoutElement::FREQUENCY_PER_VERTEX</a>) ? D3D_INPUT_CLASSIFICATION_PER_VERTEX_DATA : D3D_INPUT_CLASSIFICATION_PER_INSTANCE_DATA;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  D3DElem.InstanceDataStepRate = (CurrElem.Frequency == <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa82c41371a1ea79eb28874bdda04b24b7">LayoutElement::FREQUENCY_PER_VERTEX</a>) ? 0 : CurrElem.InstanceDataStepRate;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_FILTER></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  D3D_FILTER FilterTypeToD3DFilter(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MinFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MagFilter, <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> MipFilter)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">switch</span>( MinFilter )</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="comment">// Regular filters</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>:</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_MAG_MIP_POINT;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_POINT_MAG_MIP_LINEAR;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>:</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_LINEAR_MAG_MIP_POINT;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a> )</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a> )</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_MAG_MIP_LINEAR;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>:</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  VERIFY( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a> && MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>,</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="stringliteral">"For anistropic filtering, all filters must be anisotropic"</span> );</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">return</span> D3D_FILTER_ANISOTROPIC;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">// Comparison filters</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a>:</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_MAG_MIP_POINT;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a>:</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a> )</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a> )</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97">FILTER_TYPE_COMPARISON_ANISOTROPIC</a>:</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  VERIFY( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97">FILTER_TYPE_COMPARISON_ANISOTROPIC</a> && MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97">FILTER_TYPE_COMPARISON_ANISOTROPIC</a>,</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="stringliteral">"For comparison anistropic filtering, all filters must be anisotropic"</span> );</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">return</span> D3D_FILTER_COMPARISON_ANISOTROPIC;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// Minimum filters</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a>:</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_MAG_MIP_POINT;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a>:</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a> )</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a> )</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4398678f25fd7f9c5ab22acb772a6188">FILTER_TYPE_MINIMUM_ANISOTROPIC</a>:</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  VERIFY( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4398678f25fd7f9c5ab22acb772a6188">FILTER_TYPE_MINIMUM_ANISOTROPIC</a> && MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4398678f25fd7f9c5ab22acb772a6188">FILTER_TYPE_MINIMUM_ANISOTROPIC</a>,</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="stringliteral">"For minimum anistropic filtering, all filters must be anisotropic"</span> );</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">return</span> D3D_FILTER_MINIMUM_ANISOTROPIC;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> </div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// Maximum filters</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a>:</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_MAG_MIP_POINT;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a>:</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a> )</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a> )</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3aff4370c3c16294f04a71dc1c08c1c33a">FILTER_TYPE_MAXIMUM_ANISOTROPIC</a>:</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  VERIFY( MagFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3aff4370c3c16294f04a71dc1c08c1c33a">FILTER_TYPE_MAXIMUM_ANISOTROPIC</a> && MipFilter == <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3aff4370c3c16294f04a71dc1c08c1c33a">FILTER_TYPE_MAXIMUM_ANISOTROPIC</a>,</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="stringliteral">"For maximum anistropic filtering, all filters must be anisotropic"</span> );</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">return</span> D3D_FILTER_MAXIMUM_ANISOTROPIC;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  }</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  UNEXPECTED( <span class="stringliteral">"Unsupported filter combination"</span> );</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">return</span> D3D_FILTER_MIN_MAG_MIP_POINT;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> }</div><div class="ttc" id="namespace_diligent_html_ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869"><div class="ttname"><a href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">Diligent::PRIMITIVE_TOPOLOGY_POINT_LIST</a></div><div class="ttdoc">Interpret the vertex data as a list of points. D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_POINTLIST. OpenGL counterpart: GL_POINTS. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:71</div></div> <div class="ttc" id="namespace_diligent_html_a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11"><div class="ttname"><a href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11">Diligent::COMPARISON_FUNC_LESS_EQUAL</a></div><div class="ttdoc">Comparison passes if the source data is less than or equal to the destination data. Direct3D counterpart: D3D11_COMPARISON_LESS_EQUAL/D3D12_COMPARISON_FUNC_LESS_EQUAL. OpenGL counterpart: GL_LEQUAL. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:866</div></div> <div class="ttc" id="namespace_diligent_html_a1a15723d053d87194d02437ffd2f55f3"><div class="ttname"><a href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">Diligent::BLEND_OPERATION</a></div><div class="ttdeci">BLEND_OPERATION</div><div class="ttdoc">Blending operation. </div><div class="ttdef"><b>Definition:</b> BlendState.h:130</div></div> <div class="ttc" id="namespace_diligent_html_a781bf760ca4b6e5258059a857c2f70b1a607e0164f4cc7dace2760c1074c760be"><div class="ttname"><a href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1a607e0164f4cc7dace2760c1074c760be">Diligent::BLEND_FACTOR_UNDEFINED</a></div><div class="ttdoc">Undefined blend factor. </div><div class="ttdef"><b>Definition:</b> BlendState.h:46</div></div> diff --git a/doc/html/_d3_d_view_desc_conversion_impl_8h_source.html b/doc/html/_d3_d_view_desc_conversion_impl_8h_source.html index 38a634ac..3c83ce48 100644 --- a/doc/html/_d3_d_view_desc_conversion_impl_8h_source.html +++ b/doc/html/_d3_d_view_desc_conversion_impl_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">D3DViewDescConversionImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DXGITypeConversions.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_SHADER_RESOURCE_VIEW_DESC></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">void</span> TextureViewDesc_to_D3D_SRV_DESC(<span class="keyword">const</span> TextureViewDesc& SRVDesc, D3D_SHADER_RESOURCE_VIEW_DESC &d3dSRVDesc, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SampleCount)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  memset(&d3dSRVDesc, 0, <span class="keyword">sizeof</span>(d3dSRVDesc));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  d3dSRVDesc.Format = TexFormatToDXGI_Format(SRVDesc.Format, <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">switch</span> (SRVDesc.TextureDim)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE1D;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  d3dSRVDesc.Texture1D.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  d3dSRVDesc.Texture1D.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE1DARRAY;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  d3dSRVDesc.Texture1DArray.ArraySize = SRVDesc.NumArraySlices;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  d3dSRVDesc.Texture1DArray.FirstArraySlice = SRVDesc.FirstArraySlice;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  d3dSRVDesc.Texture1DArray.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  d3dSRVDesc.Texture1DArray.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE2DMS;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  d3dSRVDesc.Texture2DMS.UnusedField_NothingToDefine = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE2D;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  d3dSRVDesc.Texture2D.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  d3dSRVDesc.Texture2D.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  d3dSRVDesc.Texture2DMSArray.ArraySize = SRVDesc.NumArraySlices;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  d3dSRVDesc.Texture2DMSArray.FirstArraySlice = SRVDesc.FirstArraySlice;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE2DARRAY;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  d3dSRVDesc.Texture2DArray.ArraySize = SRVDesc.NumArraySlices;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  d3dSRVDesc.Texture2DArray.FirstArraySlice = SRVDesc.FirstArraySlice;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  d3dSRVDesc.Texture2DArray.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  d3dSRVDesc.Texture2DArray.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>:</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE3D;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  d3dSRVDesc.Texture3D.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  d3dSRVDesc.Texture3D.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURECUBE;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  d3dSRVDesc.TextureCube.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  d3dSRVDesc.TextureCube.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURECUBEARRAY;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  d3dSRVDesc.TextureCubeArray.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  d3dSRVDesc.TextureCubeArray.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  d3dSRVDesc.TextureCubeArray.First2DArrayFace = SRVDesc.FirstArraySlice;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  d3dSRVDesc.TextureCubeArray.NumCubes = SRVDesc.NumArraySlices / 6;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  UNEXPECTED( <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_RENDER_TARGET_VIEW_DESC></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">void</span> TextureViewDesc_to_D3D_RTV_DESC(<span class="keyword">const</span> TextureViewDesc& RTVDesc, D3D_RENDER_TARGET_VIEW_DESC &d3dRTVDesc, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SampleCount)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  memset(&d3dRTVDesc, 0, <span class="keyword">sizeof</span>(d3dRTVDesc));</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  d3dRTVDesc.Format = TexFormatToDXGI_Format(RTVDesc.Format, <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">BIND_RENDER_TARGET</a>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">switch</span>(RTVDesc.TextureDim)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>:</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE1D;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  d3dRTVDesc.Texture1D.MipSlice = RTVDesc.MostDetailedMip;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>:</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE1DARRAY;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  d3dRTVDesc.Texture1DArray.ArraySize = RTVDesc.NumArraySlices;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  d3dRTVDesc.Texture1DArray.FirstArraySlice = RTVDesc.FirstArraySlice;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  d3dRTVDesc.Texture1DArray.MipSlice = RTVDesc.MostDetailedMip;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE2DMS;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  d3dRTVDesc.Texture2DMS.UnusedField_NothingToDefine = 0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE2D;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  d3dRTVDesc.Texture2D.MipSlice = RTVDesc.MostDetailedMip;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE2DMSARRAY;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  d3dRTVDesc.Texture2DMSArray.ArraySize = RTVDesc.NumArraySlices;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  d3dRTVDesc.Texture2DMSArray.FirstArraySlice = RTVDesc.FirstArraySlice;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE2DARRAY;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  d3dRTVDesc.Texture2DArray.ArraySize = RTVDesc.NumArraySlices;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  d3dRTVDesc.Texture2DArray.FirstArraySlice = RTVDesc.FirstArraySlice;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  d3dRTVDesc.Texture2DArray.MipSlice = RTVDesc.MostDetailedMip;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>:</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE3D;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  d3dRTVDesc.Texture3D.FirstWSlice = RTVDesc.FirstDepthSlice;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  d3dRTVDesc.Texture3D.WSize = RTVDesc.NumDepthSlices;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  d3dRTVDesc.Texture3D.MipSlice = RTVDesc.MostDetailedMip;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  UNEXPECTED( <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_DEPTH_STENCIL_VIEW_DESC></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordtype">void</span> TextureViewDesc_to_D3D_DSV_DESC(<span class="keyword">const</span> TextureViewDesc& DSVDesc, D3D_DEPTH_STENCIL_VIEW_DESC &d3dDSVDesc, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SampleCount)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  memset(&d3dDSVDesc, 0, <span class="keyword">sizeof</span>(d3dDSVDesc));</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  d3dDSVDesc.Format = TexFormatToDXGI_Format(DSVDesc.Format, <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08">BIND_DEPTH_STENCIL</a>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">switch</span>(DSVDesc.TextureDim)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE1D;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  d3dDSVDesc.Texture1D.MipSlice = DSVDesc.MostDetailedMip;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>:</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE1DARRAY;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  d3dDSVDesc.Texture1DArray.ArraySize = DSVDesc.NumArraySlices;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  d3dDSVDesc.Texture1DArray.FirstArraySlice = DSVDesc.FirstArraySlice;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  d3dDSVDesc.Texture1DArray.MipSlice = DSVDesc.MostDetailedMip;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>:</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE2DMS;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  d3dDSVDesc.Texture2DMS.UnusedField_NothingToDefine = 0;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE2D;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  d3dDSVDesc.Texture2D.MipSlice = DSVDesc.MostDetailedMip;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>:</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE2DMSARRAY;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  d3dDSVDesc.Texture2DMSArray.ArraySize = DSVDesc.NumArraySlices;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  d3dDSVDesc.Texture2DMSArray.FirstArraySlice = DSVDesc.FirstArraySlice;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE2DARRAY;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  d3dDSVDesc.Texture2DArray.ArraySize = DSVDesc.NumArraySlices;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  d3dDSVDesc.Texture2DArray.FirstArraySlice = DSVDesc.FirstArraySlice;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  d3dDSVDesc.Texture2DArray.MipSlice = DSVDesc.MostDetailedMip;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>:</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  LOG_ERROR_AND_THROW(<span class="stringliteral">"Depth stencil views are not supported for 3D textures"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  UNEXPECTED( <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_UNORDERED_ACCESS_VIEW_DESC></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordtype">void</span> TextureViewDesc_to_D3D_UAV_DESC(<span class="keyword">const</span> TextureViewDesc& UAVDesc, D3D_UNORDERED_ACCESS_VIEW_DESC &d3dUAVDesc)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  memset(&d3dUAVDesc, 0, <span class="keyword">sizeof</span>(d3dUAVDesc));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  d3dUAVDesc.Format = TexFormatToDXGI_Format(UAVDesc.Format, <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">switch</span>(UAVDesc.TextureDim)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>:</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_TEXTURE1D;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  d3dUAVDesc.Texture1D.MipSlice = UAVDesc.MostDetailedMip;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_TEXTURE1DARRAY;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  d3dUAVDesc.Texture1DArray.ArraySize = UAVDesc.NumArraySlices;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  d3dUAVDesc.Texture1DArray.FirstArraySlice = UAVDesc.FirstArraySlice;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  d3dUAVDesc.Texture1DArray.MipSlice = UAVDesc.MostDetailedMip;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>:</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_TEXTURE2D;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  d3dUAVDesc.Texture2D.MipSlice = UAVDesc.MostDetailedMip;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>:</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_TEXTURE2DARRAY;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  d3dUAVDesc.Texture2DArray.ArraySize = UAVDesc.NumArraySlices;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  d3dUAVDesc.Texture2DArray.FirstArraySlice = UAVDesc.FirstArraySlice;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  d3dUAVDesc.Texture2DArray.MipSlice = UAVDesc.MostDetailedMip;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>:</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_TEXTURE3D;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  d3dUAVDesc.Texture3D.FirstWSlice = UAVDesc.FirstDepthSlice;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  d3dUAVDesc.Texture3D.WSize = UAVDesc.NumDepthSlices;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  d3dUAVDesc.Texture3D.MipSlice = UAVDesc.MostDetailedMip;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  UNEXPECTED( <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_UNORDERED_ACCESS_VIEW_DESC></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordtype">void</span> BufferViewDesc_to_D3D_SRV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& SRVDesc, D3D_UNORDERED_ACCESS_VIEW_DESC &d3dSRVDesc)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span>( SRVDesc.ByteOffset != 0 )</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  VERIFY( BuffDesc.Mode == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa8795c0e51bc4091c1efab4f65e5062e7">BUFFER_MODE_STRUCTURED</a>, <span class="stringliteral">"Non-zero byte offset is only supported for structured buffers"</span> );</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  memset( &d3dSRVDesc, 0, <span class="keyword">sizeof</span>( d3dSRVDesc ) );</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BuffFmt = BuffDesc.Format;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span>( BuffDesc.Mode == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daafd0744a938df39ac9cd93fdbf9bb704e">BUFFER_MODE_FORMATTED</a> )</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  d3dSRVDesc.Format = TypeToDXGI_Format( BuffFmt.ValueType, BuffFmt.NumComponents, BuffFmt.IsNormalized );</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  VERIFY( SRVDesc.ViewType == <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b">BUFFER_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Incorrect view type: shader resource is expected"</span> );</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  VERIFY( (SRVDesc.ByteOffset % BuffDesc.ElementByteStride) == 0, <span class="stringliteral">"Byte offest is not multiple of element byte stride"</span> );</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  VERIFY( (SRVDesc.ByteWidth % BuffDesc.ElementByteStride) == 0, <span class="stringliteral">"Byte width is not multiple of element byte stride"</span> );</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  d3dSRVDesc.Buffer.FirstElement = SRVDesc.ByteOffset / BuffDesc.ElementByteStride;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  d3dSRVDesc.Buffer.NumElements = SRVDesc.ByteWidth / BuffDesc.ElementByteStride;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_BUFFER;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_UNORDERED_ACCESS_VIEW_DESC></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordtype">void</span> BufferViewDesc_to_D3D_UAV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& UAVDesc, D3D_UNORDERED_ACCESS_VIEW_DESC &d3dUAVDesc)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span>( UAVDesc.ByteOffset != 0 )</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  VERIFY( BuffDesc.Mode == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa8795c0e51bc4091c1efab4f65e5062e7">BUFFER_MODE_STRUCTURED</a>, <span class="stringliteral">"Non-zero byte offset is only supported for structured buffers"</span> );</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  memset( &d3dUAVDesc, 0, <span class="keyword">sizeof</span>(d3dUAVDesc) );</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BuffFmt = BuffDesc.Format;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">if</span>( BuffDesc.Mode == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daafd0744a938df39ac9cd93fdbf9bb704e">BUFFER_MODE_FORMATTED</a> )</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  d3dUAVDesc.Format = TypeToDXGI_Format( BuffFmt.ValueType, BuffFmt.NumComponents, BuffFmt.IsNormalized );</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  VERIFY( UAVDesc.ViewType == <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a">BUFFER_VIEW_UNORDERED_ACCESS</a>, <span class="stringliteral">"Incorrect view type: unordered access is expected"</span> );</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  VERIFY( (UAVDesc.ByteOffset % BuffDesc.ElementByteStride) == 0, <span class="stringliteral">"Byte offest is not multiple of element byte stride"</span> );</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  VERIFY( (UAVDesc.ByteWidth % BuffDesc.ElementByteStride) == 0, <span class="stringliteral">"Byte width is not multiple of element byte stride"</span> );</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  d3dUAVDesc.Buffer.FirstElement = UAVDesc.ByteOffset / BuffDesc.ElementByteStride;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  d3dUAVDesc.Buffer.NumElements = UAVDesc.ByteWidth / BuffDesc.ElementByteStride;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_BUFFER;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> }</div><div class="ttc" id="namespace_diligent_html_aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9"><div class="ttname"><a href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">Diligent::RESOURCE_DIM_TEX_CUBE</a></div><div class="ttdoc">Cube-map texture. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:181</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DXGITypeConversions.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_SHADER_RESOURCE_VIEW_DESC></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">void</span> TextureViewDesc_to_D3D_SRV_DESC(<span class="keyword">const</span> TextureViewDesc& SRVDesc, D3D_SHADER_RESOURCE_VIEW_DESC &d3dSRVDesc, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SampleCount)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  memset(&d3dSRVDesc, 0, <span class="keyword">sizeof</span>(d3dSRVDesc));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  d3dSRVDesc.Format = TexFormatToDXGI_Format(SRVDesc.Format, <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">switch</span> (SRVDesc.TextureDim)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE1D;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  d3dSRVDesc.Texture1D.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  d3dSRVDesc.Texture1D.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE1DARRAY;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  d3dSRVDesc.Texture1DArray.ArraySize = SRVDesc.NumArraySlices;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  d3dSRVDesc.Texture1DArray.FirstArraySlice = SRVDesc.FirstArraySlice;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  d3dSRVDesc.Texture1DArray.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  d3dSRVDesc.Texture1DArray.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE2DMS;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  d3dSRVDesc.Texture2DMS.UnusedField_NothingToDefine = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE2D;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  d3dSRVDesc.Texture2D.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  d3dSRVDesc.Texture2D.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  d3dSRVDesc.Texture2DMSArray.ArraySize = SRVDesc.NumArraySlices;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  d3dSRVDesc.Texture2DMSArray.FirstArraySlice = SRVDesc.FirstArraySlice;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE2DARRAY;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  d3dSRVDesc.Texture2DArray.ArraySize = SRVDesc.NumArraySlices;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  d3dSRVDesc.Texture2DArray.FirstArraySlice = SRVDesc.FirstArraySlice;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  d3dSRVDesc.Texture2DArray.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  d3dSRVDesc.Texture2DArray.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>:</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURE3D;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  d3dSRVDesc.Texture3D.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  d3dSRVDesc.Texture3D.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURECUBE;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  d3dSRVDesc.TextureCube.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  d3dSRVDesc.TextureCube.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_TEXTURECUBEARRAY;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  d3dSRVDesc.TextureCubeArray.MipLevels = SRVDesc.NumMipLevels;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  d3dSRVDesc.TextureCubeArray.MostDetailedMip = SRVDesc.MostDetailedMip;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  d3dSRVDesc.TextureCubeArray.First2DArrayFace = SRVDesc.FirstArraySlice;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  d3dSRVDesc.TextureCubeArray.NumCubes = SRVDesc.NumArraySlices / 6;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  UNEXPECTED( <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_RENDER_TARGET_VIEW_DESC></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">void</span> TextureViewDesc_to_D3D_RTV_DESC(<span class="keyword">const</span> TextureViewDesc& RTVDesc, D3D_RENDER_TARGET_VIEW_DESC &d3dRTVDesc, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SampleCount)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  memset(&d3dRTVDesc, 0, <span class="keyword">sizeof</span>(d3dRTVDesc));</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  d3dRTVDesc.Format = TexFormatToDXGI_Format(RTVDesc.Format, <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">BIND_RENDER_TARGET</a>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">switch</span>(RTVDesc.TextureDim)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>:</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE1D;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  d3dRTVDesc.Texture1D.MipSlice = RTVDesc.MostDetailedMip;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>:</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE1DARRAY;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  d3dRTVDesc.Texture1DArray.ArraySize = RTVDesc.NumArraySlices;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  d3dRTVDesc.Texture1DArray.FirstArraySlice = RTVDesc.FirstArraySlice;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  d3dRTVDesc.Texture1DArray.MipSlice = RTVDesc.MostDetailedMip;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE2DMS;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  d3dRTVDesc.Texture2DMS.UnusedField_NothingToDefine = 0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE2D;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  d3dRTVDesc.Texture2D.MipSlice = RTVDesc.MostDetailedMip;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE2DMSARRAY;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  d3dRTVDesc.Texture2DMSArray.ArraySize = RTVDesc.NumArraySlices;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  d3dRTVDesc.Texture2DMSArray.FirstArraySlice = RTVDesc.FirstArraySlice;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE2DARRAY;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  d3dRTVDesc.Texture2DArray.ArraySize = RTVDesc.NumArraySlices;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  d3dRTVDesc.Texture2DArray.FirstArraySlice = RTVDesc.FirstArraySlice;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  d3dRTVDesc.Texture2DArray.MipSlice = RTVDesc.MostDetailedMip;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>:</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  d3dRTVDesc.ViewDimension = D3D_RTV_DIMENSION_TEXTURE3D;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  d3dRTVDesc.Texture3D.FirstWSlice = RTVDesc.FirstDepthSlice;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  d3dRTVDesc.Texture3D.WSize = RTVDesc.NumDepthSlices;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  d3dRTVDesc.Texture3D.MipSlice = RTVDesc.MostDetailedMip;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  UNEXPECTED( <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_DEPTH_STENCIL_VIEW_DESC></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordtype">void</span> TextureViewDesc_to_D3D_DSV_DESC(<span class="keyword">const</span> TextureViewDesc& DSVDesc, D3D_DEPTH_STENCIL_VIEW_DESC &d3dDSVDesc, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SampleCount)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  memset(&d3dDSVDesc, 0, <span class="keyword">sizeof</span>(d3dDSVDesc));</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  d3dDSVDesc.Format = TexFormatToDXGI_Format(DSVDesc.Format, <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08">BIND_DEPTH_STENCIL</a>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">switch</span>(DSVDesc.TextureDim)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE1D;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  d3dDSVDesc.Texture1D.MipSlice = DSVDesc.MostDetailedMip;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>:</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE1DARRAY;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  d3dDSVDesc.Texture1DArray.ArraySize = DSVDesc.NumArraySlices;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  d3dDSVDesc.Texture1DArray.FirstArraySlice = DSVDesc.FirstArraySlice;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  d3dDSVDesc.Texture1DArray.MipSlice = DSVDesc.MostDetailedMip;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>:</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE2DMS;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  d3dDSVDesc.Texture2DMS.UnusedField_NothingToDefine = 0;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE2D;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  d3dDSVDesc.Texture2D.MipSlice = DSVDesc.MostDetailedMip;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>:</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">if</span>( SampleCount > 1 )</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE2DMSARRAY;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  d3dDSVDesc.Texture2DMSArray.ArraySize = DSVDesc.NumArraySlices;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  d3dDSVDesc.Texture2DMSArray.FirstArraySlice = DSVDesc.FirstArraySlice;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  d3dDSVDesc.ViewDimension = D3D_DSV_DIMENSION_TEXTURE2DARRAY;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  d3dDSVDesc.Texture2DArray.ArraySize = DSVDesc.NumArraySlices;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  d3dDSVDesc.Texture2DArray.FirstArraySlice = DSVDesc.FirstArraySlice;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  d3dDSVDesc.Texture2DArray.MipSlice = DSVDesc.MostDetailedMip;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>:</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  LOG_ERROR_AND_THROW(<span class="stringliteral">"Depth stencil views are not supported for 3D textures"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  UNEXPECTED( <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_UNORDERED_ACCESS_VIEW_DESC></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordtype">void</span> TextureViewDesc_to_D3D_UAV_DESC(<span class="keyword">const</span> TextureViewDesc& UAVDesc, D3D_UNORDERED_ACCESS_VIEW_DESC &d3dUAVDesc)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  memset(&d3dUAVDesc, 0, <span class="keyword">sizeof</span>(d3dUAVDesc));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  d3dUAVDesc.Format = TexFormatToDXGI_Format(UAVDesc.Format, <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">switch</span>(UAVDesc.TextureDim)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>:</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_TEXTURE1D;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  d3dUAVDesc.Texture1D.MipSlice = UAVDesc.MostDetailedMip;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_TEXTURE1DARRAY;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  d3dUAVDesc.Texture1DArray.ArraySize = UAVDesc.NumArraySlices;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  d3dUAVDesc.Texture1DArray.FirstArraySlice = UAVDesc.FirstArraySlice;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  d3dUAVDesc.Texture1DArray.MipSlice = UAVDesc.MostDetailedMip;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>:</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_TEXTURE2D;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  d3dUAVDesc.Texture2D.MipSlice = UAVDesc.MostDetailedMip;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>:</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_TEXTURE2DARRAY;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  d3dUAVDesc.Texture2DArray.ArraySize = UAVDesc.NumArraySlices;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  d3dUAVDesc.Texture2DArray.FirstArraySlice = UAVDesc.FirstArraySlice;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  d3dUAVDesc.Texture2DArray.MipSlice = UAVDesc.MostDetailedMip;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>:</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_TEXTURE3D;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  d3dUAVDesc.Texture3D.FirstWSlice = UAVDesc.FirstDepthSlice;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  d3dUAVDesc.Texture3D.WSize = UAVDesc.NumDepthSlices;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  d3dUAVDesc.Texture3D.MipSlice = UAVDesc.MostDetailedMip;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  UNEXPECTED( <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_UNORDERED_ACCESS_VIEW_DESC></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordtype">void</span> BufferViewDesc_to_D3D_SRV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& SRVDesc, D3D_UNORDERED_ACCESS_VIEW_DESC &d3dSRVDesc)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span>( SRVDesc.ByteOffset != 0 )</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  VERIFY( BuffDesc.Mode == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa8795c0e51bc4091c1efab4f65e5062e7">BUFFER_MODE_STRUCTURED</a>, <span class="stringliteral">"Non-zero byte offset is only supported for structured buffers"</span> );</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  memset( &d3dSRVDesc, 0, <span class="keyword">sizeof</span>( d3dSRVDesc ) );</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BuffFmt = BuffDesc.Format;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span>( BuffDesc.Mode == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daafd0744a938df39ac9cd93fdbf9bb704e">BUFFER_MODE_FORMATTED</a> )</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  d3dSRVDesc.Format = TypeToDXGI_Format( BuffFmt.ValueType, BuffFmt.NumComponents, BuffFmt.IsNormalized );</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  VERIFY( SRVDesc.ViewType == <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b">BUFFER_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Incorrect view type: shader resource is expected"</span> );</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  VERIFY( (SRVDesc.ByteOffset % BuffDesc.ElementByteStride) == 0, <span class="stringliteral">"Byte offest is not multiple of element byte stride"</span> );</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  VERIFY( (SRVDesc.ByteWidth % BuffDesc.ElementByteStride) == 0, <span class="stringliteral">"Byte width is not multiple of element byte stride"</span> );</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  d3dSRVDesc.Buffer.FirstElement = SRVDesc.ByteOffset / BuffDesc.ElementByteStride;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  d3dSRVDesc.Buffer.NumElements = SRVDesc.ByteWidth / BuffDesc.ElementByteStride;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  d3dSRVDesc.ViewDimension = D3D_SRV_DIMENSION_BUFFER;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">template</span><<span class="keyword">typename</span> D3D_UNORDERED_ACCESS_VIEW_DESC></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordtype">void</span> BufferViewDesc_to_D3D_UAV_DESC(<span class="keyword">const</span> BufferDesc &BuffDesc, <span class="keyword">const</span> BufferViewDesc& UAVDesc, D3D_UNORDERED_ACCESS_VIEW_DESC &d3dUAVDesc)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span>( UAVDesc.ByteOffset != 0 )</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  VERIFY( BuffDesc.Mode == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daa8795c0e51bc4091c1efab4f65e5062e7">BUFFER_MODE_STRUCTURED</a>, <span class="stringliteral">"Non-zero byte offset is only supported for structured buffers"</span> );</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  memset( &d3dUAVDesc, 0, <span class="keyword">sizeof</span>(d3dUAVDesc) );</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BuffFmt = BuffDesc.Format;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">if</span>( BuffDesc.Mode == <a class="code" href="namespace_diligent.html#afbdac277dbbb5b93d32b3ffd7df8b7daafd0744a938df39ac9cd93fdbf9bb704e">BUFFER_MODE_FORMATTED</a> )</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  d3dUAVDesc.Format = TypeToDXGI_Format( BuffFmt.ValueType, BuffFmt.NumComponents, BuffFmt.IsNormalized );</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  VERIFY( UAVDesc.ViewType == <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a">BUFFER_VIEW_UNORDERED_ACCESS</a>, <span class="stringliteral">"Incorrect view type: unordered access is expected"</span> );</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  VERIFY( (UAVDesc.ByteOffset % BuffDesc.ElementByteStride) == 0, <span class="stringliteral">"Byte offest is not multiple of element byte stride"</span> );</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  VERIFY( (UAVDesc.ByteWidth % BuffDesc.ElementByteStride) == 0, <span class="stringliteral">"Byte width is not multiple of element byte stride"</span> );</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  d3dUAVDesc.Buffer.FirstElement = UAVDesc.ByteOffset / BuffDesc.ElementByteStride;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  d3dUAVDesc.Buffer.NumElements = UAVDesc.ByteWidth / BuffDesc.ElementByteStride;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  d3dUAVDesc.ViewDimension = D3D_UAV_DIMENSION_BUFFER;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> }</div><div class="ttc" id="namespace_diligent_html_aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9"><div class="ttname"><a href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">Diligent::RESOURCE_DIM_TEX_CUBE</a></div><div class="ttdoc">Cube-map texture. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:181</div></div> <div class="ttc" id="namespace_diligent_html_aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c"><div class="ttname"><a href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">Diligent::RESOURCE_DIM_TEX_2D</a></div><div class="ttdoc">Two-dimensional texture. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:178</div></div> <div class="ttc" id="namespace_diligent_html_ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89"><div class="ttname"><a href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">Diligent::BIND_RENDER_TARGET</a></div><div class="ttdoc">A texture can be bound as a render target. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:71</div></div> <div class="ttc" id="namespace_diligent_html_aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa"><div class="ttname"><a href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">Diligent::RESOURCE_DIM_TEX_1D</a></div><div class="ttdoc">One-dimensional texture. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:176</div></div> diff --git a/doc/html/_d_x_g_i_type_conversions_8h_source.html b/doc/html/_d_x_g_i_type_conversions_8h_source.html index 0c788f4e..de425b7f 100644 --- a/doc/html/_d_x_g_i_type_conversions_8h_source.html +++ b/doc/html/_d_x_g_i_type_conversions_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">DXGITypeConversions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <dxgi.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  DXGI_FORMAT TexFormatToDXGI_Format(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> BindFlags = 0);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> DXGI_FormatToTexFormat(DXGI_FORMAT DXGIFormat);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  DXGI_FORMAT TypeToDXGI_Format(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> ValType, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumComponents, <a class="code" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Bool</a> bIsNormalized);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <dxgi.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  DXGI_FORMAT TexFormatToDXGI_Format(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> BindFlags = 0);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> DXGI_FormatToTexFormat(DXGI_FORMAT DXGIFormat);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  DXGI_FORMAT TypeToDXGI_Format(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> ValType, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumComponents, <a class="code" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Bool</a> bIsNormalized);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a1348d994a23f6b38215d775be3931056"><div class="ttname"><a href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Diligent::Bool</a></div><div class="ttdeci">bool Bool</div><div class="ttdoc">Boolean. </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:46</div></div> <div class="ttc" id="namespace_diligent_html_a1d12e97c6da58b2d4dd003db4a8a957a"><div class="ttname"><a href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">Diligent::VALUE_TYPE</a></div><div class="ttdeci">VALUE_TYPE</div><div class="ttdoc">Value type. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:39</div></div> diff --git a/doc/html/_data_blob_8h_source.html b/doc/html/_data_blob_8h_source.html index b147246d..b77f56c1 100644 --- a/doc/html/_data_blob_8h_source.html +++ b/doc/html/_data_blob_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">DataBlob.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {F578FF0D-ABD2-4514-9D32-7CB454D4A73B}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DataBlob = </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xf578ff0d, 0xabd2, 0x4514, { 0x9d, 0x32, 0x7c, 0xb4, 0x54, 0xd4, 0xa7, 0x3b } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_data_blob.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_data_blob.html">IDataBlob</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_object.html">IObject</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_data_blob.html#a7898086d24b32e25828003e6004d599b">Resize</a>( <span class="keywordtype">size_t</span> NewSize ) = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_i_data_blob.html#a279172d76e1fb9bd08ef5b4f6b34eb06">GetSize</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_i_data_blob.html#ac0cc4cb0ea097a1d44f4af99fc58dbaf">GetDataPtr</a>() = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {F578FF0D-ABD2-4514-9D32-7CB454D4A73B}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DataBlob = </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xf578ff0d, 0xabd2, 0x4514, { 0x9d, 0x32, 0x7c, 0xb4, 0x54, 0xd4, 0xa7, 0x3b } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_data_blob.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_data_blob.html">IDataBlob</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_object.html">IObject</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_data_blob.html#a7898086d24b32e25828003e6004d599b">Resize</a>( <span class="keywordtype">size_t</span> NewSize ) = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_i_data_blob.html#a279172d76e1fb9bd08ef5b4f6b34eb06">GetSize</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_i_data_blob.html#ac0cc4cb0ea097a1d44f4af99fc58dbaf">GetDataPtr</a>() = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="class_diligent_1_1_i_data_blob_html"><div class="ttname"><a href="class_diligent_1_1_i_data_blob.html">Diligent::IDataBlob</a></div><div class="ttdoc">Base interface for a file stream. </div><div class="ttdef"><b>Definition:</b> DataBlob.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_data_blob_html_a7898086d24b32e25828003e6004d599b"><div class="ttname"><a href="class_diligent_1_1_i_data_blob.html#a7898086d24b32e25828003e6004d599b">Diligent::IDataBlob::Resize</a></div><div class="ttdeci">virtual void Resize(size_t NewSize)=0</div><div class="ttdoc">Sets the size of the internal data buffer. </div></div> <div class="ttc" id="class_diligent_1_1_i_data_blob_html_a279172d76e1fb9bd08ef5b4f6b34eb06"><div class="ttname"><a href="class_diligent_1_1_i_data_blob.html#a279172d76e1fb9bd08ef5b4f6b34eb06">Diligent::IDataBlob::GetSize</a></div><div class="ttdeci">virtual size_t GetSize()=0</div><div class="ttdoc">Returns the size of the internal data buffer. </div></div> diff --git a/doc/html/_data_blob_impl_8h_source.html b/doc/html/_data_blob_impl_8h_source.html index 4101092d..bf18a4f9 100644 --- a/doc/html/_data_blob_impl_8h_source.html +++ b/doc/html/_data_blob_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DataBlobImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_data_blob_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_data_blob_impl.html">DataBlobImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a><IDataBlob></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">Diligent::ObjectBase<IDataBlob></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_data_blob_impl.html">DataBlobImpl</a>( IReferenceCounters *pRefCounters, <span class="keywordtype">size_t</span> InitialSize = 0 );</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_data_blob_impl.html#a324a721107fa22c3113e49f61b9bca83">Resize</a>( <span class="keywordtype">size_t</span> NewSize )<span class="keyword">override</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_data_blob_impl.html#a25783f78326dc09b2df27659a843d45f">GetSize</a>()<span class="keyword">override</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_data_blob_impl.html#a9b7efb629349251c069be80ba7270d3e">GetDataPtr</a>()<span class="keyword">override</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::vector<Diligent::Uint8> m_DataBuff;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_data_blob_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_data_blob_impl.html">DataBlobImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a><IDataBlob></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">Diligent::ObjectBase<IDataBlob></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_data_blob_impl.html">DataBlobImpl</a>( IReferenceCounters *pRefCounters, <span class="keywordtype">size_t</span> InitialSize = 0 );</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_data_blob_impl.html#a324a721107fa22c3113e49f61b9bca83">Resize</a>( <span class="keywordtype">size_t</span> NewSize )<span class="keyword">override</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_data_blob_impl.html#a25783f78326dc09b2df27659a843d45f">GetSize</a>()<span class="keyword">override</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_data_blob_impl.html#a9b7efb629349251c069be80ba7270d3e">GetDataPtr</a>()<span class="keyword">override</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::vector<Diligent::Uint8> m_DataBuff;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_data_blob_impl_html_a324a721107fa22c3113e49f61b9bca83"><div class="ttname"><a href="class_diligent_1_1_data_blob_impl.html#a324a721107fa22c3113e49f61b9bca83">Diligent::DataBlobImpl::Resize</a></div><div class="ttdeci">virtual void Resize(size_t NewSize) override</div><div class="ttdoc">Sets the size of the internal data buffer. </div><div class="ttdef"><b>Definition:</b> DataBlobImpl.cpp:38</div></div> <div class="ttc" id="class_diligent_1_1_data_blob_impl_html"><div class="ttname"><a href="class_diligent_1_1_data_blob_impl.html">Diligent::DataBlobImpl</a></div><div class="ttdoc">Base interface for a file stream. </div><div class="ttdef"><b>Definition:</b> DataBlobImpl.h:38</div></div> @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_debug_utilities_8h_source.html b/doc/html/_debug_utilities_8h_source.html index 28dc61d8..14621537 100644 --- a/doc/html/_debug_utilities_8h_source.html +++ b/doc/html/_debug_utilities_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">DebugUtilities.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "FormatMessage.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BasicPlatformDebug.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <typeinfo></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// This function is only requried to ensure that Message argument passed to the macro</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// is actually string and not something else</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> EnsureStr( <span class="keyword">const</span> <span class="keywordtype">char</span>* ){}</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define ASSERTION_FAILED(Message, ...)\</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor"> EnsureStr(Message); \</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"> Diligent::MsgStream ms; \</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"> Diligent::FormatMsg( ms, Message, ##__VA_ARGS__);\</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> DebugAssertionFailed( ms.str().c_str(), __FUNCTION__, __FILE__, __LINE__); \</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define VERIFY(Expr, Message, ...)\</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"> do{ \</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"> EnsureStr(Message); \</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"> if( !(Expr) ) \</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor"> ASSERTION_FAILED(Message, ##__VA_ARGS__);\</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"> }while(false)</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor"># define UNEXPECTED ASSERTION_FAILED</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor"># define UNSUPPORTED ASSERTION_FAILED</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor"># define VERIFY_EXPR(Expr) VERIFY(Expr, "Debug exression failed:\n", #Expr)</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">template</span><<span class="keyword">typename</span> DstType, <span class="keyword">typename</span> SrcType></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keywordtype">void</span> CheckDynamicType( SrcType *pSrcPtr )</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  VERIFY(pSrcPtr == <span class="keyword">nullptr</span> || dynamic_cast<DstType*> (pSrcPtr) != <span class="keyword">nullptr</span>, <span class="stringliteral">"Dynamic type cast failed. Src typeid: \'"</span>, <span class="keyword">typeid</span>(*pSrcPtr).name(), <span class="stringliteral">"\' Dst typeid: \'"</span>, <span class="keyword">typeid</span>(DstType).name(), <span class="charliteral">'\''</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"># define CHECK_DYNAMIC_TYPE(DstType, pSrcPtr) do{ CheckDynamicType<DstType>(pSrcPtr); }while(false)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"># define CHECK_DYNAMIC_TYPE(...)do{}while(false)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"># define VERIFY(...)do{}while(false)</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"># define UNEXPECTED(...)do{}while(false)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"># define UNSUPPORTED(...)do{}while(false)</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"># define VERIFY_EXPR(...)do{}while(false)</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "FormatMessage.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BasicPlatformDebug.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <typeinfo></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// This function is only requried to ensure that Message argument passed to the macro</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// is actually string and not something else</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> EnsureStr( <span class="keyword">const</span> <span class="keywordtype">char</span>* ){}</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define ASSERTION_FAILED(Message, ...)\</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor"> EnsureStr(Message); \</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"> Diligent::MsgStream ms; \</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"> Diligent::FormatMsg( ms, Message, ##__VA_ARGS__);\</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> DebugAssertionFailed( ms.str().c_str(), __FUNCTION__, __FILE__, __LINE__); \</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define VERIFY(Expr, Message, ...)\</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"> do{ \</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"> EnsureStr(Message); \</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"> if( !(Expr) ) \</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor"> ASSERTION_FAILED(Message, ##__VA_ARGS__);\</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"> }while(false)</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor"># define UNEXPECTED ASSERTION_FAILED</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor"># define UNSUPPORTED ASSERTION_FAILED</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor"># define VERIFY_EXPR(Expr) VERIFY(Expr, "Debug exression failed:\n", #Expr)</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">template</span><<span class="keyword">typename</span> DstType, <span class="keyword">typename</span> SrcType></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keywordtype">void</span> CheckDynamicType( SrcType *pSrcPtr )</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  VERIFY(pSrcPtr == <span class="keyword">nullptr</span> || dynamic_cast<DstType*> (pSrcPtr) != <span class="keyword">nullptr</span>, <span class="stringliteral">"Dynamic type cast failed. Src typeid: \'"</span>, <span class="keyword">typeid</span>(*pSrcPtr).name(), <span class="stringliteral">"\' Dst typeid: \'"</span>, <span class="keyword">typeid</span>(DstType).name(), <span class="charliteral">'\''</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"># define CHECK_DYNAMIC_TYPE(DstType, pSrcPtr) do{ CheckDynamicType<DstType>(pSrcPtr); }while(false)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"># define CHECK_DYNAMIC_TYPE(...)do{}while(false)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"># define VERIFY(...)do{}while(false)</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"># define UNEXPECTED(...)do{}while(false)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"># define UNSUPPORTED(...)do{}while(false)</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"># define VERIFY_EXPR(...)do{}while(false)</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_default_raw_memory_allocator_8h_source.html b/doc/html/_default_raw_memory_allocator_8h_source.html index 2aec4e2b..e37f797a 100644 --- a/doc/html/_default_raw_memory_allocator_8h_source.html +++ b/doc/html/_default_raw_memory_allocator_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">DefaultRawMemoryAllocator.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span>DefaultRawMemoryAllocator : <span class="keyword">public</span> IMemoryAllocator</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  DefaultRawMemoryAllocator();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* Allocate( <span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)<span class="keyword">override</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span> *Ptr)<span class="keyword">override</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">static</span> DefaultRawMemoryAllocator& GetAllocator();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  DefaultRawMemoryAllocator(<span class="keyword">const</span> DefaultRawMemoryAllocator&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  DefaultRawMemoryAllocator(DefaultRawMemoryAllocator&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  DefaultRawMemoryAllocator& operator = (<span class="keyword">const</span> DefaultRawMemoryAllocator&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  DefaultRawMemoryAllocator& operator = (DefaultRawMemoryAllocator&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span>DefaultRawMemoryAllocator : <span class="keyword">public</span> IMemoryAllocator</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  DefaultRawMemoryAllocator();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* Allocate( <span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)<span class="keyword">override</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span> *Ptr)<span class="keyword">override</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">static</span> DefaultRawMemoryAllocator& GetAllocator();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  DefaultRawMemoryAllocator(<span class="keyword">const</span> DefaultRawMemoryAllocator&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  DefaultRawMemoryAllocator(DefaultRawMemoryAllocator&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  DefaultRawMemoryAllocator& operator = (<span class="keyword">const</span> DefaultRawMemoryAllocator&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  DefaultRawMemoryAllocator& operator = (DefaultRawMemoryAllocator&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_defines_8h_source.html b/doc/html/_defines_8h_source.html index bed9944a..c46a23cd 100644 --- a/doc/html/_defines_8h_source.html +++ b/doc/html/_defines_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">Defines.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_depth_stencil_state_8h_source.html b/doc/html/_depth_stencil_state_8h_source.html index 743cc8dc..d10c6c7b 100644 --- a/doc/html/_depth_stencil_state_8h_source.html +++ b/doc/html/_depth_stencil_state_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DepthStencilState.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29"> 42</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> : Int32</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40"> 45</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40">STENCIL_OP_UNDEFINED</a> = 0,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7"> 49</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7">STENCIL_OP_KEEP</a> = 1,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb6492e7d3ebd5cdfe9ff7fb8d666c90"> 53</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb6492e7d3ebd5cdfe9ff7fb8d666c90">STENCIL_OP_ZERO</a> = 2,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a5f484be67a9ed5fea8f2823fe48c97d4"> 57</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a5f484be67a9ed5fea8f2823fe48c97d4">STENCIL_OP_REPLACE</a> = 3,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb3f32bf501fc645dea379a28e35df47"> 61</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb3f32bf501fc645dea379a28e35df47">STENCIL_OP_INCR_SAT</a> = 4,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a67d7f951aaa57ed1522fe66f43e32c78"> 65</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a67d7f951aaa57ed1522fe66f43e32c78">STENCIL_OP_DECR_SAT</a> = 5,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab365e790638343452b04c19e9b5064c1"> 69</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab365e790638343452b04c19e9b5064c1">STENCIL_OP_INVERT</a> = 6,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29aa2be5a5eaa59b9dda5f2336dfc9e1548"> 74</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29aa2be5a5eaa59b9dda5f2336dfc9e1548">STENCIL_OP_INCR_WRAP</a> = 7,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29af6d504952c26323aff8175c8f117c943"> 79</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29af6d504952c26323aff8175c8f117c943">STENCIL_OP_DECR_WRAP</a> = 8,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab30744e3d550c11a684d8cb8a9c82336"> 82</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab30744e3d550c11a684d8cb8a9c82336">STENCIL_OP_NUM_OPS</a></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> };</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html"> 92</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_stencil_op_desc.html">StencilOpDesc</a></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad"> 95</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad">StencilFailOp</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1"> 98</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1">StencilDepthFailOp</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785"> 101</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">StencilPassOp</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f"> 105</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">StencilFunc</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#abf76081f63b3aa0e2f45daddd530b28c"> 116</a></span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abf76081f63b3aa0e2f45daddd530b28c">StencilOpDesc</a>() : </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad">StencilFailOp</a> ( <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7">STENCIL_OP_KEEP</a> ),</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1">StencilDepthFailOp</a>( <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7">STENCIL_OP_KEEP</a> ),</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">StencilPassOp</a> ( <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7">STENCIL_OP_KEEP</a> ),</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">StencilFunc</a> ( <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11">COMPARISON_FUNC_ALWAYS</a> )</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {}</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#a62169ecf07e45e9244bfe27c0caf3982"> 129</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a62169ecf07e45e9244bfe27c0caf3982">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html">StencilOpDesc</a>& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad">StencilFailOp</a> == rhs.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad">StencilFailOp</a> &&</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1">StencilDepthFailOp</a> == rhs.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1">StencilDepthFailOp</a> &&</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">StencilPassOp</a> == rhs.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">StencilPassOp</a> &&</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">StencilFunc</a> == rhs.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">StencilFunc</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> };</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html"> 145</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html">DepthStencilStateDesc</a></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b"> 150</a></span>  Bool <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b">DepthEnable</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79"> 153</a></span>  Bool <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79">DepthWriteEnable</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851"> 157</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851">DepthFunc</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b"> 160</a></span>  Bool <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b">StencilEnable</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025"> 163</a></span>  Uint8 <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025">StencilReadMask</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086"> 166</a></span>  Uint8 <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086">StencilWriteMask</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a59ced16fe3f430d8ac8e68bf95803c2d"> 169</a></span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html">StencilOpDesc</a> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a59ced16fe3f430d8ac8e68bf95803c2d">FrontFace</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#ab70d10ee856e265058df2777461aa4bb"> 172</a></span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html">StencilOpDesc</a> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#ab70d10ee856e265058df2777461aa4bb">BackFace</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a7eac7ebb962fb68b902f60a2e223d30d"> 188</a></span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a7eac7ebb962fb68b902f60a2e223d30d">DepthStencilStateDesc</a>(Bool _DepthEnable = True,</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  Bool _DepthWriteEnable = True,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> _DepthFunc = <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a411164cf3b8a7ce0e4d3792b4bfe3e63">COMPARISON_FUNC_LESS</a>,</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  Bool _StencilEnable = False,</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  Uint8 _StencilReadMask = 0xFF,</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  Uint8 _StencilWriteMask = 0xFF) : </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b">DepthEnable</a> ( _DepthEnable ),</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79">DepthWriteEnable</a>( _DepthWriteEnable ),</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851">DepthFunc</a> ( _DepthFunc ),</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b">StencilEnable</a> ( _StencilEnable ),</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025">StencilReadMask</a> ( _StencilReadMask ),</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086">StencilWriteMask</a>( _StencilWriteMask )</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {}</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0d676528673a25693499f031af7e2a50"> 208</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0d676528673a25693499f031af7e2a50">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html">DepthStencilStateDesc</a>& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b">DepthEnable</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b">DepthEnable</a> &&</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79">DepthWriteEnable</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79">DepthWriteEnable</a> &&</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851">DepthFunc</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851">DepthFunc</a> &&</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b">StencilEnable</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b">StencilEnable</a> &&</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025">StencilReadMask</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025">StencilReadMask</a> &&</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086">StencilWriteMask</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086">StencilWriteMask</a> &&</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a59ced16fe3f430d8ac8e68bf95803c2d">FrontFace</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a59ced16fe3f430d8ac8e68bf95803c2d">FrontFace</a> &&</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#ab70d10ee856e265058df2777461aa4bb">BackFace</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#ab70d10ee856e265058df2777461aa4bb">BackFace</a>; </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> };</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div><div class="ttc" id="struct_diligent_1_1_stencil_op_desc_html_abb9e31d08669cafb05cb4e3b9f600785"><div class="ttname"><a href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">Diligent::StencilOpDesc::StencilPassOp</a></div><div class="ttdeci">STENCIL_OP StencilPassOp</div><div class="ttdoc">The stencil operation to perform when stencil testing and depth testing both pass. </div><div class="ttdef"><b>Definition:</b> DepthStencilState.h:101</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29"> 42</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> : Int32</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40"> 45</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40">STENCIL_OP_UNDEFINED</a> = 0,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7"> 49</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7">STENCIL_OP_KEEP</a> = 1,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb6492e7d3ebd5cdfe9ff7fb8d666c90"> 53</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb6492e7d3ebd5cdfe9ff7fb8d666c90">STENCIL_OP_ZERO</a> = 2,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a5f484be67a9ed5fea8f2823fe48c97d4"> 57</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a5f484be67a9ed5fea8f2823fe48c97d4">STENCIL_OP_REPLACE</a> = 3,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb3f32bf501fc645dea379a28e35df47"> 61</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29acb3f32bf501fc645dea379a28e35df47">STENCIL_OP_INCR_SAT</a> = 4,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a67d7f951aaa57ed1522fe66f43e32c78"> 65</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a67d7f951aaa57ed1522fe66f43e32c78">STENCIL_OP_DECR_SAT</a> = 5,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab365e790638343452b04c19e9b5064c1"> 69</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab365e790638343452b04c19e9b5064c1">STENCIL_OP_INVERT</a> = 6,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29aa2be5a5eaa59b9dda5f2336dfc9e1548"> 74</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29aa2be5a5eaa59b9dda5f2336dfc9e1548">STENCIL_OP_INCR_WRAP</a> = 7,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29af6d504952c26323aff8175c8f117c943"> 79</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29af6d504952c26323aff8175c8f117c943">STENCIL_OP_DECR_WRAP</a> = 8,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab30744e3d550c11a684d8cb8a9c82336"> 82</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29ab30744e3d550c11a684d8cb8a9c82336">STENCIL_OP_NUM_OPS</a></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> };</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html"> 92</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_stencil_op_desc.html">StencilOpDesc</a></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad"> 95</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad">StencilFailOp</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1"> 98</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1">StencilDepthFailOp</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785"> 101</a></span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">StencilPassOp</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f"> 105</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">StencilFunc</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#abf76081f63b3aa0e2f45daddd530b28c"> 116</a></span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abf76081f63b3aa0e2f45daddd530b28c">StencilOpDesc</a>() : </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad">StencilFailOp</a> ( <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7">STENCIL_OP_KEEP</a> ),</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1">StencilDepthFailOp</a>( <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7">STENCIL_OP_KEEP</a> ),</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">StencilPassOp</a> ( <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29a6e4efcc92b9fdd457f6a5d753b8ee6b7">STENCIL_OP_KEEP</a> ),</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">StencilFunc</a> ( <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11">COMPARISON_FUNC_ALWAYS</a> )</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {}</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_stencil_op_desc.html#a62169ecf07e45e9244bfe27c0caf3982"> 129</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a62169ecf07e45e9244bfe27c0caf3982">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html">StencilOpDesc</a>& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad">StencilFailOp</a> == rhs.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad">StencilFailOp</a> &&</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1">StencilDepthFailOp</a> == rhs.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1">StencilDepthFailOp</a> &&</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">StencilPassOp</a> == rhs.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">StencilPassOp</a> &&</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">StencilFunc</a> == rhs.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">StencilFunc</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> };</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html"> 145</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html">DepthStencilStateDesc</a></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b"> 150</a></span>  Bool <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b">DepthEnable</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79"> 153</a></span>  Bool <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79">DepthWriteEnable</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851"> 157</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851">DepthFunc</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b"> 160</a></span>  Bool <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b">StencilEnable</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025"> 163</a></span>  Uint8 <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025">StencilReadMask</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086"> 166</a></span>  Uint8 <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086">StencilWriteMask</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a59ced16fe3f430d8ac8e68bf95803c2d"> 169</a></span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html">StencilOpDesc</a> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a59ced16fe3f430d8ac8e68bf95803c2d">FrontFace</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#ab70d10ee856e265058df2777461aa4bb"> 172</a></span>  <a class="code" href="struct_diligent_1_1_stencil_op_desc.html">StencilOpDesc</a> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#ab70d10ee856e265058df2777461aa4bb">BackFace</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a7eac7ebb962fb68b902f60a2e223d30d"> 188</a></span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a7eac7ebb962fb68b902f60a2e223d30d">DepthStencilStateDesc</a>(Bool _DepthEnable = True,</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  Bool _DepthWriteEnable = True,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> _DepthFunc = <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a411164cf3b8a7ce0e4d3792b4bfe3e63">COMPARISON_FUNC_LESS</a>,</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  Bool _StencilEnable = False,</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  Uint8 _StencilReadMask = 0xFF,</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  Uint8 _StencilWriteMask = 0xFF) : </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b">DepthEnable</a> ( _DepthEnable ),</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79">DepthWriteEnable</a>( _DepthWriteEnable ),</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851">DepthFunc</a> ( _DepthFunc ),</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b">StencilEnable</a> ( _StencilEnable ),</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025">StencilReadMask</a> ( _StencilReadMask ),</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086">StencilWriteMask</a>( _StencilWriteMask )</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {}</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0d676528673a25693499f031af7e2a50"> 208</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0d676528673a25693499f031af7e2a50">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html">DepthStencilStateDesc</a>& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b">DepthEnable</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b">DepthEnable</a> &&</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79">DepthWriteEnable</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79">DepthWriteEnable</a> &&</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851">DepthFunc</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851">DepthFunc</a> &&</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b">StencilEnable</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b">StencilEnable</a> &&</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025">StencilReadMask</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025">StencilReadMask</a> &&</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086">StencilWriteMask</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086">StencilWriteMask</a> &&</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a59ced16fe3f430d8ac8e68bf95803c2d">FrontFace</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a59ced16fe3f430d8ac8e68bf95803c2d">FrontFace</a> &&</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#ab70d10ee856e265058df2777461aa4bb">BackFace</a> == rhs.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#ab70d10ee856e265058df2777461aa4bb">BackFace</a>; </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> };</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div><div class="ttc" id="struct_diligent_1_1_stencil_op_desc_html_abb9e31d08669cafb05cb4e3b9f600785"><div class="ttname"><a href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">Diligent::StencilOpDesc::StencilPassOp</a></div><div class="ttdeci">STENCIL_OP StencilPassOp</div><div class="ttdoc">The stencil operation to perform when stencil testing and depth testing both pass. </div><div class="ttdef"><b>Definition:</b> DepthStencilState.h:101</div></div> <div class="ttc" id="struct_diligent_1_1_stencil_op_desc_html_a5fbdb05e365ec418ba5a449265c3791f"><div class="ttname"><a href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">Diligent::StencilOpDesc::StencilFunc</a></div><div class="ttdeci">COMPARISON_FUNCTION StencilFunc</div><div class="ttdoc">A function that compares stencil data against existing stencil data. See Diligent::COMPARISON_FUNCTIO...</div><div class="ttdef"><b>Definition:</b> DepthStencilState.h:105</div></div> <div class="ttc" id="namespace_diligent_html_a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11"><div class="ttname"><a href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11">Diligent::COMPARISON_FUNC_ALWAYS</a></div><div class="ttdoc">Comparison always passes. Direct3D counterpart: D3D11_COMPARISON_ALWAYS/D3D12_COMPARISON_FUNC_ALWAY...</div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:882</div></div> <div class="ttc" id="namespace_diligent_html_a4d5f2c67b76f870790521dd26e4a8a29"><div class="ttname"><a href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">Diligent::STENCIL_OP</a></div><div class="ttdeci">STENCIL_OP</div><div class="ttdoc">Stencil operation. </div><div class="ttdef"><b>Definition:</b> DepthStencilState.h:42</div></div> @@ -107,7 +107,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_descriptor_heap_8h_source.html b/doc/html/_descriptor_heap_8h_source.html index f6594566..3aee927c 100644 --- a/doc/html/_descriptor_heap_8h_source.html +++ b/doc/html/_descriptor_heap_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">DescriptorHeap.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// Descriptor heap management utilities. </span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/managing-descriptor-heaps/ for details</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <mutex></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <queue></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "VariableSizeGPUAllocationsManager.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>DescriptorHeapAllocation;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>DescriptorHeapAllocationManager;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>RenderDeviceD3D12Impl;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">class </span>IDescriptorAllocator</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Allocate Count descriptors</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> DescriptorHeapAllocation Allocate( uint32_t Count ) = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(DescriptorHeapAllocation&& Allocation) = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> Uint32 GetDescriptorSize()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// The class represents descriptor heap allocation (continuous descriptor range in a descriptor heap)</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// </span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// m_FirstCpuHandle</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// |</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// | ~ ~ ~ ~ ~ X X X X X X X ~ ~ ~ ~ ~ ~ | D3D12 Descriptor Heap</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// |</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// m_FirstGpuHandle</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">//</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">class </span>DescriptorHeapAllocation</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Creates null allocation</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  DescriptorHeapAllocation() : </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_NumHandles(1), <span class="comment">// One null descriptor handle</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_pDescriptorHeap(nullptr),</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_DescriptorSize(0)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_FirstCpuHandle.ptr = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_FirstGpuHandle.ptr = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Initializes non-null allocation </span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  DescriptorHeapAllocation( IDescriptorAllocator *pAllocator, </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  ID3D12DescriptorHeap *pHeap, </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  D3D12_CPU_DESCRIPTOR_HANDLE CpuHandle, </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  D3D12_GPU_DESCRIPTOR_HANDLE GpuHandle, </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint32 NHandles, </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Uint16 AllocationManagerId = static_cast<Uint16>(-1) ) : </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_FirstCpuHandle(CpuHandle), </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_FirstGpuHandle(GpuHandle),</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_pAllocator(pAllocator),</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_NumHandles(NHandles),</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_pDescriptorHeap(pHeap),</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_AllocationManagerId(AllocationManagerId)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  VERIFY_EXPR(m_pAllocator != <span class="keyword">nullptr</span> && m_pDescriptorHeap != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">auto</span> DescriptorSize = m_pAllocator->GetDescriptorSize();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  VERIFY(DescriptorSize < std::numeric_limits<Uint16>::max(), <span class="stringliteral">"DescriptorSize exceeds allowed limit"</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_DescriptorSize = <span class="keyword">static_cast<</span>Uint16<span class="keyword">></span>( DescriptorSize );</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Move constructor (copy is not allowed)</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  DescriptorHeapAllocation(DescriptorHeapAllocation &&Allocation) : </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_FirstCpuHandle(Allocation.m_FirstCpuHandle),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_FirstGpuHandle(Allocation.m_FirstGpuHandle),</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_NumHandles(Allocation.m_NumHandles),</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_pAllocator(<a class="code" href="namespacestd.html">std</a>::move(Allocation.m_pAllocator)),</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_AllocationManagerId(<a class="code" href="namespacestd.html">std</a>::move(Allocation.m_AllocationManagerId)),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_pDescriptorHeap(<a class="code" href="namespacestd.html">std</a>::move(Allocation.m_pDescriptorHeap) ),</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_DescriptorSize(<a class="code" href="namespacestd.html">std</a>::move(Allocation.m_DescriptorSize) )</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  Allocation.m_pAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  Allocation.m_FirstCpuHandle.ptr = 0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  Allocation.m_FirstGpuHandle.ptr = 0;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  Allocation.m_NumHandles = 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  Allocation.m_pDescriptorHeap = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  Allocation.m_DescriptorSize = 0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  Allocation.m_AllocationManagerId = <span class="keyword">static_cast<</span>Uint16<span class="keyword">></span>(-1);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Move assignment (assignment is not allowed)</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  DescriptorHeapAllocation& operator = (DescriptorHeapAllocation &&Allocation)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  { </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_FirstCpuHandle = Allocation.m_FirstCpuHandle;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_FirstGpuHandle = Allocation.m_FirstGpuHandle;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_NumHandles = Allocation.m_NumHandles;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_pAllocator = std::move(Allocation.m_pAllocator);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_AllocationManagerId = std::move(Allocation.m_AllocationManagerId);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_pDescriptorHeap = std::move(Allocation.m_pDescriptorHeap);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_DescriptorSize = std::move(Allocation.m_DescriptorSize);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  Allocation.m_FirstCpuHandle.ptr = 0;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  Allocation.m_FirstGpuHandle.ptr = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  Allocation.m_NumHandles = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Allocation.m_pAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  Allocation.m_pDescriptorHeap = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  Allocation.m_DescriptorSize = 0;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  Allocation.m_AllocationManagerId = <span class="keyword">static_cast<</span>Uint16<span class="keyword">></span>(-1);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// Destructor automatically releases this allocation through the allocator</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  ~DescriptorHeapAllocation()</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(!IsNull() && m_pAllocator)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  m_pAllocator->Free(std::move(*<span class="keyword">this</span>));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// Allocation must have been disposed by the allocator</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  VERIFY(IsNull(), <span class="stringliteral">"Non-null descriptor is being destroyed"</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Returns CPU descriptor handle at the specified offset</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  D3D12_CPU_DESCRIPTOR_HANDLE GetCpuHandle(Uint32 Offset = 0)<span class="keyword"> const </span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="keyword"> </span>{ </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  VERIFY_EXPR(Offset >= 0 && Offset < m_NumHandles); </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  D3D12_CPU_DESCRIPTOR_HANDLE CPUHandle = m_FirstCpuHandle; </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span> (Offset != 0)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  CPUHandle.ptr += m_DescriptorSize * Offset;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> CPUHandle;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// Returns GPU descriptor handle at the specified offset</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  D3D12_GPU_DESCRIPTOR_HANDLE GetGpuHandle(Uint32 Offset = 0)<span class="keyword"> const</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="keyword"> </span>{ </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  VERIFY_EXPR(Offset >= 0 && Offset < m_NumHandles); </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  D3D12_GPU_DESCRIPTOR_HANDLE GPUHandle = m_FirstGpuHandle;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span> (Offset != 0)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  GPUHandle.ptr += m_DescriptorSize * Offset;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> GPUHandle;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// Returns pointer to D3D12 descriptor heap that contains this allocation</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  ID3D12DescriptorHeap *GetDescriptorHeap(){<span class="keywordflow">return</span> m_pDescriptorHeap;}</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">size_t</span> GetNumHandles()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumHandles;}</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">bool</span> IsNull()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_FirstCpuHandle.ptr == 0; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordtype">bool</span> IsShaderVisible()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_FirstGpuHandle.ptr != 0; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">size_t</span> GetAllocationManagerId(){<span class="keywordflow">return</span> m_AllocationManagerId;}</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  UINT GetDescriptorSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_DescriptorSize;}</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// No copies, only moves are allowed</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  DescriptorHeapAllocation(<span class="keyword">const</span> DescriptorHeapAllocation&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  DescriptorHeapAllocation& operator= (<span class="keyword">const</span> DescriptorHeapAllocation&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// First CPU descriptor handle in this allocation</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  D3D12_CPU_DESCRIPTOR_HANDLE m_FirstCpuHandle = {0};</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// First GPU descriptor handle in this allocation</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  D3D12_GPU_DESCRIPTOR_HANDLE m_FirstGpuHandle = {0};</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// Keep strong reference to the parent heap to make sure it is alive while allocation is alive - TOO EXPENSIVE</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">//RefCntAutoPtr<IDescriptorAllocator> m_pAllocator;</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Pointer to the descriptor heap allocator that created this allocation</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  IDescriptorAllocator* m_pAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Pointer to the D3D12 descriptor heap that contains descriptors in this allocation</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  ID3D12DescriptorHeap* m_pDescriptorHeap = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// Number of descriptors in the allocation</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  Uint32 m_NumHandles = 0;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// Allocation manager ID. One allocator may support several </span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// allocation managers. This field is required to identify</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// the manager within the allocator that was used to create</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// this allocation</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  Uint16 m_AllocationManagerId = <span class="keyword">static_cast<</span>Uint16<span class="keyword">></span>(-1);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// Descriptor size </span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  Uint16 m_DescriptorSize = 0;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> };</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// The class performs suballocations within one D3D12 descriptor heap. </span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="comment">// It uses VariableSizeGPUAllocationsManager to manage free space in the heap</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="comment">//</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="comment">// | X X X X O O O X X O O X O O O O | D3D12 descriptor heap</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="comment">// </span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="comment">// X - used descriptor</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="comment">// O - available descriptor</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment">//</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="keyword">class </span>DescriptorHeapAllocationManager</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">// Creates a new D3D12 descriptor heap</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  DescriptorHeapAllocationManager(IMemoryAllocator &Allocator, </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  RenderDeviceD3D12Impl *pDeviceD3D12Impl,</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  IDescriptorAllocator *pParentAllocator,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordtype">size_t</span> ThisManagerId,</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">const</span> D3D12_DESCRIPTOR_HEAP_DESC &HeapDesc);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Uses subrange of descriptors in the existing D3D12 descriptor heap</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="comment">// that starts at offset FirstDescriptor and uses NumDescriptors descriptors</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  DescriptorHeapAllocationManager(IMemoryAllocator &Allocator, </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  RenderDeviceD3D12Impl *pDeviceD3D12Impl,</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  IDescriptorAllocator *pParentAllocator,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordtype">size_t</span> ThisManagerId,</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  ID3D12DescriptorHeap *pd3d12DescriptorHeap,</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  Uint32 FirstDescriptor,</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  Uint32 NumDescriptors);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// = default causes compiler error when instantiating std::vector::emplace_back() in Visual Studio 2015 (Version 14.0.23107.0 D14REL)</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  DescriptorHeapAllocationManager(DescriptorHeapAllocationManager&& rhs) : </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_FreeBlockManager(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_FreeBlockManager)),</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_HeapDesc(rhs.m_HeapDesc),</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_pd3d12DescriptorHeap(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_pd3d12DescriptorHeap)),</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_FirstCPUHandle(rhs.m_FirstCPUHandle),</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_FirstGPUHandle(rhs.m_FirstGPUHandle),</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  m_DescriptorSize(rhs.m_DescriptorSize),</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_NumDescriptorsInAllocation(rhs.m_NumDescriptorsInAllocation),</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="comment">// Mutex is not movable</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">//m_AllocationMutex(std::move(rhs.m_AllocationMutex))</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_pDeviceD3D12Impl(rhs.m_pDeviceD3D12Impl),</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_pParentAllocator(rhs.m_pParentAllocator),</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_ThisManagerId(rhs.m_ThisManagerId)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  rhs.m_FirstCPUHandle.ptr = 0;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  rhs.m_FirstGPUHandle.ptr = 0;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  rhs.m_DescriptorSize = 0;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  rhs.m_NumDescriptorsInAllocation = 0;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  rhs.m_HeapDesc.NumDescriptors = 0;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  rhs.m_pDeviceD3D12Impl = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  rhs.m_pParentAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  rhs.m_ThisManagerId = <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(-1);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="comment">// No copies or move-assignments</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  DescriptorHeapAllocationManager& operator = (DescriptorHeapAllocationManager&& rhs) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  DescriptorHeapAllocationManager(<span class="keyword">const</span> DescriptorHeapAllocationManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  DescriptorHeapAllocationManager& operator = (<span class="keyword">const</span> DescriptorHeapAllocationManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  ~DescriptorHeapAllocationManager();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// Allocates Count descriptors</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  DescriptorHeapAllocation Allocate( uint32_t Count );</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// Releases descriptor heap allocation. </span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// Note that the allocation is not released immediately, but</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// added to the release queue in the allocations manager</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordtype">void</span> Free(DescriptorHeapAllocation&& Allocation);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// Releases all stale allocation used by completed command lists</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// The method takes the last known completed fence value N</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// and releases all allocations whose associated fence value n <= N </span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordtype">void</span> ReleaseStaleAllocations(Uint64 LastCompletedFenceValue);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordtype">size_t</span> GetNumAvailableDescriptors()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_FreeBlockManager.GetFreeSize();}</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordtype">size_t</span> GetNumStaleDescriptors()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_FreeBlockManager.GetStaleAllocationsSize(); }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  Uint32 GetMaxDescriptors()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_NumDescriptorsInAllocation; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// Allocations manager used to handle descriptor allocations within the heap</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  VariableSizeGPUAllocationsManager m_FreeBlockManager;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">// Heap description</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  D3D12_DESCRIPTOR_HEAP_DESC m_HeapDesc;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="comment">// Strong reference to D3D12 descriptor heap object</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  CComPtr<ID3D12DescriptorHeap> m_pd3d12DescriptorHeap;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="comment">// First CPU descriptor handle in the available descriptor range</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  D3D12_CPU_DESCRIPTOR_HANDLE m_FirstCPUHandle = {0};</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// First GPU descriptor handle in the available descriptor range</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  D3D12_GPU_DESCRIPTOR_HANDLE m_FirstGPUHandle = {0};</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  UINT m_DescriptorSize = 0;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// Number of descriptors in the allocation. </span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="comment">// If this manager was initialized as a subrange in the existing heap,</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// this value may be different from m_HeapDesc.NumDescriptors</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  Uint32 m_NumDescriptorsInAllocation = 0;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  std::mutex m_AllocationMutex;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  RenderDeviceD3D12Impl *m_pDeviceD3D12Impl = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  IDescriptorAllocator *m_pParentAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="comment">// External ID assigned to this descriptor allocations manager</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordtype">size_t</span> m_ThisManagerId = <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(-1);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> };</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="comment">// CPU descriptor heap is intended to provide storage for resource view descriptor handles</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="comment">// It contains a pool of DescriptorHeapAllocationManager object instances, where every instance manages</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="comment">// its own CPU-only D3D12 descriptor heap:</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="comment">//</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="comment">// m_HeapPool[0] m_HeapPool[1] m_HeapPool[2]</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="comment">// | X X X X X X X X |, | X X X O O X X O |, | X O O O O O O O |</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="comment">//</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="comment">// X - used descriptor m_AvailableHeaps = {1,2}</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="comment">// O - available descriptor</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="comment">//</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="comment">// Allocation routine goes through the list of managers that have available descriptors and tries to process </span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="comment">// the request using every manager. If there are no available managers or no manager was able to handle the request, </span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="comment">// the function creates a new descriptor heap manager and lets it handle the request</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="comment">//</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="comment">// Render device contains four CPUDescriptorHeap object instances (one for each D3D12 heap type). The heaps are accessed</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="comment">// when a texture or a buffer view is created.</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment">//</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="keyword">class </span>CPUDescriptorHeap : <span class="keyword">public</span> IDescriptorAllocator</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// Initializes the heap</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  CPUDescriptorHeap(IMemoryAllocator &Allocator, </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  RenderDeviceD3D12Impl *pDeviceD3D12Impl, </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  Uint32 NumDescriptorsInHeap, </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  D3D12_DESCRIPTOR_HEAP_TYPE Type, </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  D3D12_DESCRIPTOR_HEAP_FLAGS Flags);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  CPUDescriptorHeap(<span class="keyword">const</span> CPUDescriptorHeap&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  CPUDescriptorHeap(CPUDescriptorHeap&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  CPUDescriptorHeap& operator = (<span class="keyword">const</span> CPUDescriptorHeap&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  CPUDescriptorHeap& operator = (CPUDescriptorHeap&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  ~CPUDescriptorHeap();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">virtual</span> DescriptorHeapAllocation Allocate( uint32_t Count )<span class="keyword">override</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(DescriptorHeapAllocation&& Allocation)<span class="keyword">override</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">virtual</span> Uint32 GetDescriptorSize()<span class="keyword">const override</span>{<span class="keywordflow">return</span> m_DescriptorSize;}</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="comment">// Releases all stale allocation used by completed command lists</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="comment">// The method takes the last known completed fence value N</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="comment">// and releases all allocations whose associated fence value n <= N </span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordtype">void</span> ReleaseStaleAllocations(Uint64 LastCompletedFenceValue);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="comment">// Pool of descriptor heap managers</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  std::vector<DescriptorHeapAllocationManager, STDAllocatorRawMem<DescriptorHeapAllocationManager> > m_HeapPool;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="comment">// Indices of available descriptor heap managers</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  std::set<size_t, std::less<size_t>, STDAllocatorRawMem<size_t> > m_AvailableHeaps;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  IMemoryAllocator &m_MemAllocator;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  std::mutex m_AllocationMutex;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  D3D12_DESCRIPTOR_HEAP_DESC m_HeapDesc;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  RenderDeviceD3D12Impl *m_pDeviceD3D12Impl;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  UINT m_DescriptorSize;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// Maximum heap size during the application lifetime - for statistic purposes</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  Uint32 m_MaxHeapSize = 0;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  Uint32 m_MaxStaleSize = 0;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  Uint32 m_CurrentSize = 0; <span class="comment">// This size does not count stale allocation</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> };</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="comment">// GPU descriptor heap provides storage for shader-visible descriptors</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="comment">// The heap contains single D3D12 descriptor heap that is broken into two parts.</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="comment">// The first part stores static and mutable resource descriptor handles.</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="comment">// The second part is intended to provide temporary storage for dynamic resources</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="comment">// Space for dynamic resources is allocated in chunks, and then descriptors are suballocated within every</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="comment">// chunk. DynamicSuballocationsManager facilitates this process</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="comment">//</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="comment">// </span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="comment">// static and mutable handles || dynamic space</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="comment">// || chunk 0 chunk 1 chunk 2 unused</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="comment">// | X O O X X O X O O O O X X X X O || | X X X O | | X X O O | | O O O O | O O O O ||</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="comment">// | |</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="comment">// suballocation suballocation</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="comment">// within chunk 0 within chunk 1</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="comment">//</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="comment">// Render device contains two GPUDescriptorHeap instances (CBV_SRV_UAV and SAMPLER). The heaps</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="comment">// are used to allocate GPU-visible descriptors for shader resource binding objects. The heaps</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="comment">// are also used by the command contexts (through DynamicSuballocationsManager to allocated dynamic descriptors)</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="comment">//</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="comment">// _______________________________________________________________________________________________________________________________</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="comment">// | Render Device |</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="comment">// | |</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="comment">// | m_CPUDescriptorHeaps[CBV_SRV_UAV] | X X X X X X X X |, | X X X X X X X X |, | X O O X O O O O | |</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="comment">// | m_CPUDescriptorHeaps[SAMPLER] | X X X X O O O X |, | X O O X O O O O | |</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="comment">// | m_CPUDescriptorHeaps[RTV] | X X X O O O O O |, | O O O O O O O O | |</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="comment">// | m_CPUDescriptorHeaps[DSV] | X X X O X O X O | |</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="comment">// | ctx1 ctx2 |</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="comment">// | m_GPUDescriptorHeaps[CBV_SRV_UAV] | X O O X X O X O O O O X X X X O || | X X X O | | X X O O | | O O O O | O O O O || |</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="comment">// | m_GPUDescriptorHeaps[SAMPLER] | X X O O X O X X X O O X O O O O || | X X O O | | X O O O | | O O O O | O O O O || |</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="comment">// | |</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="comment">// |_______________________________________________________________________________________________________________________________|</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="comment">// </span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="comment">// ________________________________________________ ________________________________________________ </span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="comment">// |Device Context 1 | |Device Context 2 |</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="comment">// | | | |</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="comment">// | m_DynamicGPUDescriptorAllocator[CBV_SRV_UAV] | | m_DynamicGPUDescriptorAllocator[CBV_SRV_UAV] |</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="comment">// | m_DynamicGPUDescriptorAllocator[SAMPLER] | | m_DynamicGPUDescriptorAllocator[SAMPLER] |</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="comment">// |________________________________________________| |________________________________________________|</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="comment">//</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="keyword">class </span>GPUDescriptorHeap : <span class="keyword">public</span> IDescriptorAllocator</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  GPUDescriptorHeap(IMemoryAllocator &Allocator, </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  RenderDeviceD3D12Impl *pDevice, </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  Uint32 NumDescriptorsInHeap, </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  Uint32 NumDynamicDescriptors,</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  D3D12_DESCRIPTOR_HEAP_TYPE Type, </div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  D3D12_DESCRIPTOR_HEAP_FLAGS Flags);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  GPUDescriptorHeap(<span class="keyword">const</span> GPUDescriptorHeap&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  GPUDescriptorHeap(GPUDescriptorHeap&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  GPUDescriptorHeap& operator = (<span class="keyword">const</span> GPUDescriptorHeap&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  GPUDescriptorHeap& operator = (GPUDescriptorHeap&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  ~GPUDescriptorHeap();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keyword">virtual</span> DescriptorHeapAllocation Allocate( uint32_t Count )<span class="keyword">override</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(DescriptorHeapAllocation&& Allocation)<span class="keyword">override</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keyword">virtual</span> Uint32 GetDescriptorSize()<span class="keyword">const override</span>{<span class="keywordflow">return</span> m_DescriptorSize;}</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  DescriptorHeapAllocation AllocateDynamic( uint32_t Count );</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// Releases all stale allocation used by completed command lists</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// The method takes the last known completed fence value N</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// and releases all allocations whose associated fence value n <= N </span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordtype">void</span> ReleaseStaleAllocations(Uint64 LastCompletedFenceValue);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keyword">const</span> D3D12_DESCRIPTOR_HEAP_DESC &GetHeapDesc()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_HeapDesc;}</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  Uint32 GetMaxStaticDescriptors()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_HeapAllocationManager.GetMaxDescriptors(); }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  Uint32 GetMaxDynamicDescriptors()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_DynamicAllocationsManager.GetMaxDescriptors(); }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  D3D12_DESCRIPTOR_HEAP_DESC m_HeapDesc;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  CComPtr<ID3D12DescriptorHeap> m_pd3d12DescriptorHeap;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  UINT m_DescriptorSize = 0;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  std::mutex m_AllocMutex, m_DynAllocMutex;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="comment">// Allocation manager for static/mutable part</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  DescriptorHeapAllocationManager m_HeapAllocationManager;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// Allocation manager for dynamic part</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  DescriptorHeapAllocationManager m_DynamicAllocationsManager;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  RenderDeviceD3D12Impl *m_pDeviceD3D12;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  Uint32 m_CurrentSize = 0;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// Maximum static/mutable part size during the application lifetime - for statistic purposes</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  Uint32 m_MaxHeapSize = 0;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  Uint32 m_MaxStaleSize = 0;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  Uint32 m_CurrentDynamicSize = 0;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="comment">// Maximum dynamic part size during the application lifetime - for statistic purposes</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  Uint32 m_MaxDynamicSize = 0;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  Uint32 m_MaxDynamicStaleSize = 0;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> };</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="comment">// The class facilitates allocation of dynamic descriptor handles. It requests a chunk of heap</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="comment">// from the master GPU descriptor heap and then performs linear suballocation within the chunk</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="comment">// At the end of the frame all allocations are disposed.</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="comment">// static and mutable handles || dynamic space</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="comment">// || chunk 0 chunk 2 </span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="comment">// | || | X X X O | | O O O O | || GPU Descriptor Heap</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment">// | |</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="comment">// m_Suballocations[0] m_Suballocations[1]</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="comment">//</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="keyword">class </span>DynamicSuballocationsManager : <span class="keyword">public</span> IDescriptorAllocator</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  DynamicSuballocationsManager(IMemoryAllocator &Allocator, GPUDescriptorHeap& ParentGPUHeap, Uint32 DynamicChunkSize);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  DynamicSuballocationsManager(<span class="keyword">const</span> DynamicSuballocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  DynamicSuballocationsManager(DynamicSuballocationsManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  DynamicSuballocationsManager& operator = (<span class="keyword">const</span> DynamicSuballocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  DynamicSuballocationsManager& operator = (DynamicSuballocationsManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordtype">void</span> DiscardAllocations(Uint64 <span class="comment">/*FenceValue*/</span>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keyword">virtual</span> DescriptorHeapAllocation Allocate( Uint32 Count )<span class="keyword">override</span>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(DescriptorHeapAllocation&& Allocation)<span class="keyword">override</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keyword">virtual</span> Uint32 GetDescriptorSize()<span class="keyword">const override</span>{<span class="keywordflow">return</span> m_ParentGPUHeap.GetDescriptorSize();}</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="comment">// List of chunks allocated from the master GPU descriptor heap. All chunks are disposed at the end</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="comment">// of the frame</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  std::vector<DescriptorHeapAllocation, STDAllocatorRawMem<DescriptorHeapAllocation> > m_Suballocations;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  Uint32 m_CurrentSuballocationOffset = 0;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  Uint32 m_DynamicChunkSize = 0;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// Parent GPU descriptor heap that is used to allocate chunks</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  GPUDescriptorHeap &m_ParentGPUHeap;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> };</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// Descriptor heap management utilities. </span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/managing-descriptor-heaps/ for details</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <mutex></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <queue></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "VariableSizeGPUAllocationsManager.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>DescriptorHeapAllocation;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>DescriptorHeapAllocationManager;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>RenderDeviceD3D12Impl;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">class </span>IDescriptorAllocator</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Allocate Count descriptors</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> DescriptorHeapAllocation Allocate( uint32_t Count ) = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(DescriptorHeapAllocation&& Allocation) = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> Uint32 GetDescriptorSize()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// The class represents descriptor heap allocation (continuous descriptor range in a descriptor heap)</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// </span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// m_FirstCpuHandle</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// |</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// | ~ ~ ~ ~ ~ X X X X X X X ~ ~ ~ ~ ~ ~ | D3D12 Descriptor Heap</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// |</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// m_FirstGpuHandle</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">//</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">class </span>DescriptorHeapAllocation</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Creates null allocation</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  DescriptorHeapAllocation() : </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_NumHandles(1), <span class="comment">// One null descriptor handle</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_pDescriptorHeap(nullptr),</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_DescriptorSize(0)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_FirstCpuHandle.ptr = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_FirstGpuHandle.ptr = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Initializes non-null allocation </span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  DescriptorHeapAllocation( IDescriptorAllocator *pAllocator, </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  ID3D12DescriptorHeap *pHeap, </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  D3D12_CPU_DESCRIPTOR_HANDLE CpuHandle, </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  D3D12_GPU_DESCRIPTOR_HANDLE GpuHandle, </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint32 NHandles, </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Uint16 AllocationManagerId = static_cast<Uint16>(-1) ) : </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_FirstCpuHandle(CpuHandle), </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_FirstGpuHandle(GpuHandle),</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_pAllocator(pAllocator),</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_NumHandles(NHandles),</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_pDescriptorHeap(pHeap),</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_AllocationManagerId(AllocationManagerId)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  VERIFY_EXPR(m_pAllocator != <span class="keyword">nullptr</span> && m_pDescriptorHeap != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">auto</span> DescriptorSize = m_pAllocator->GetDescriptorSize();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  VERIFY(DescriptorSize < std::numeric_limits<Uint16>::max(), <span class="stringliteral">"DescriptorSize exceeds allowed limit"</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_DescriptorSize = <span class="keyword">static_cast<</span>Uint16<span class="keyword">></span>( DescriptorSize );</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Move constructor (copy is not allowed)</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  DescriptorHeapAllocation(DescriptorHeapAllocation &&Allocation) : </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_FirstCpuHandle(Allocation.m_FirstCpuHandle),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_FirstGpuHandle(Allocation.m_FirstGpuHandle),</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_NumHandles(Allocation.m_NumHandles),</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_pAllocator(<a class="code" href="namespacestd.html">std</a>::move(Allocation.m_pAllocator)),</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_AllocationManagerId(<a class="code" href="namespacestd.html">std</a>::move(Allocation.m_AllocationManagerId)),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_pDescriptorHeap(<a class="code" href="namespacestd.html">std</a>::move(Allocation.m_pDescriptorHeap) ),</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_DescriptorSize(<a class="code" href="namespacestd.html">std</a>::move(Allocation.m_DescriptorSize) )</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  Allocation.m_pAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  Allocation.m_FirstCpuHandle.ptr = 0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  Allocation.m_FirstGpuHandle.ptr = 0;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  Allocation.m_NumHandles = 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  Allocation.m_pDescriptorHeap = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  Allocation.m_DescriptorSize = 0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  Allocation.m_AllocationManagerId = <span class="keyword">static_cast<</span>Uint16<span class="keyword">></span>(-1);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Move assignment (assignment is not allowed)</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  DescriptorHeapAllocation& operator = (DescriptorHeapAllocation &&Allocation)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  { </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_FirstCpuHandle = Allocation.m_FirstCpuHandle;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_FirstGpuHandle = Allocation.m_FirstGpuHandle;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_NumHandles = Allocation.m_NumHandles;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_pAllocator = std::move(Allocation.m_pAllocator);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_AllocationManagerId = std::move(Allocation.m_AllocationManagerId);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_pDescriptorHeap = std::move(Allocation.m_pDescriptorHeap);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_DescriptorSize = std::move(Allocation.m_DescriptorSize);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  Allocation.m_FirstCpuHandle.ptr = 0;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  Allocation.m_FirstGpuHandle.ptr = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  Allocation.m_NumHandles = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Allocation.m_pAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  Allocation.m_pDescriptorHeap = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  Allocation.m_DescriptorSize = 0;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  Allocation.m_AllocationManagerId = <span class="keyword">static_cast<</span>Uint16<span class="keyword">></span>(-1);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// Destructor automatically releases this allocation through the allocator</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  ~DescriptorHeapAllocation()</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(!IsNull() && m_pAllocator)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  m_pAllocator->Free(std::move(*<span class="keyword">this</span>));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// Allocation must have been disposed by the allocator</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  VERIFY(IsNull(), <span class="stringliteral">"Non-null descriptor is being destroyed"</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Returns CPU descriptor handle at the specified offset</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  D3D12_CPU_DESCRIPTOR_HANDLE GetCpuHandle(Uint32 Offset = 0)<span class="keyword"> const </span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="keyword"> </span>{ </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  VERIFY_EXPR(Offset >= 0 && Offset < m_NumHandles); </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  D3D12_CPU_DESCRIPTOR_HANDLE CPUHandle = m_FirstCpuHandle; </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span> (Offset != 0)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  CPUHandle.ptr += m_DescriptorSize * Offset;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> CPUHandle;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// Returns GPU descriptor handle at the specified offset</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  D3D12_GPU_DESCRIPTOR_HANDLE GetGpuHandle(Uint32 Offset = 0)<span class="keyword"> const</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="keyword"> </span>{ </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  VERIFY_EXPR(Offset >= 0 && Offset < m_NumHandles); </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  D3D12_GPU_DESCRIPTOR_HANDLE GPUHandle = m_FirstGpuHandle;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span> (Offset != 0)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  GPUHandle.ptr += m_DescriptorSize * Offset;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> GPUHandle;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// Returns pointer to D3D12 descriptor heap that contains this allocation</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  ID3D12DescriptorHeap *GetDescriptorHeap(){<span class="keywordflow">return</span> m_pDescriptorHeap;}</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">size_t</span> GetNumHandles()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumHandles;}</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">bool</span> IsNull()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_FirstCpuHandle.ptr == 0; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordtype">bool</span> IsShaderVisible()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_FirstGpuHandle.ptr != 0; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">size_t</span> GetAllocationManagerId(){<span class="keywordflow">return</span> m_AllocationManagerId;}</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  UINT GetDescriptorSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_DescriptorSize;}</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// No copies, only moves are allowed</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  DescriptorHeapAllocation(<span class="keyword">const</span> DescriptorHeapAllocation&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  DescriptorHeapAllocation& operator= (<span class="keyword">const</span> DescriptorHeapAllocation&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// First CPU descriptor handle in this allocation</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  D3D12_CPU_DESCRIPTOR_HANDLE m_FirstCpuHandle = {0};</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// First GPU descriptor handle in this allocation</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  D3D12_GPU_DESCRIPTOR_HANDLE m_FirstGpuHandle = {0};</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// Keep strong reference to the parent heap to make sure it is alive while allocation is alive - TOO EXPENSIVE</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">//RefCntAutoPtr<IDescriptorAllocator> m_pAllocator;</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Pointer to the descriptor heap allocator that created this allocation</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  IDescriptorAllocator* m_pAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Pointer to the D3D12 descriptor heap that contains descriptors in this allocation</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  ID3D12DescriptorHeap* m_pDescriptorHeap = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// Number of descriptors in the allocation</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  Uint32 m_NumHandles = 0;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// Allocation manager ID. One allocator may support several </span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// allocation managers. This field is required to identify</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// the manager within the allocator that was used to create</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// this allocation</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  Uint16 m_AllocationManagerId = <span class="keyword">static_cast<</span>Uint16<span class="keyword">></span>(-1);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// Descriptor size </span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  Uint16 m_DescriptorSize = 0;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> };</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// The class performs suballocations within one D3D12 descriptor heap. </span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="comment">// It uses VariableSizeGPUAllocationsManager to manage free space in the heap</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="comment">//</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="comment">// | X X X X O O O X X O O X O O O O | D3D12 descriptor heap</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="comment">// </span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="comment">// X - used descriptor</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="comment">// O - available descriptor</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment">//</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="keyword">class </span>DescriptorHeapAllocationManager</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">// Creates a new D3D12 descriptor heap</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  DescriptorHeapAllocationManager(IMemoryAllocator &Allocator, </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  RenderDeviceD3D12Impl *pDeviceD3D12Impl,</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  IDescriptorAllocator *pParentAllocator,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordtype">size_t</span> ThisManagerId,</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">const</span> D3D12_DESCRIPTOR_HEAP_DESC &HeapDesc);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Uses subrange of descriptors in the existing D3D12 descriptor heap</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="comment">// that starts at offset FirstDescriptor and uses NumDescriptors descriptors</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  DescriptorHeapAllocationManager(IMemoryAllocator &Allocator, </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  RenderDeviceD3D12Impl *pDeviceD3D12Impl,</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  IDescriptorAllocator *pParentAllocator,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordtype">size_t</span> ThisManagerId,</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  ID3D12DescriptorHeap *pd3d12DescriptorHeap,</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  Uint32 FirstDescriptor,</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  Uint32 NumDescriptors);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// = default causes compiler error when instantiating std::vector::emplace_back() in Visual Studio 2015 (Version 14.0.23107.0 D14REL)</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  DescriptorHeapAllocationManager(DescriptorHeapAllocationManager&& rhs) : </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_FreeBlockManager(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_FreeBlockManager)),</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_HeapDesc(rhs.m_HeapDesc),</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_pd3d12DescriptorHeap(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_pd3d12DescriptorHeap)),</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_FirstCPUHandle(rhs.m_FirstCPUHandle),</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_FirstGPUHandle(rhs.m_FirstGPUHandle),</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  m_DescriptorSize(rhs.m_DescriptorSize),</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_NumDescriptorsInAllocation(rhs.m_NumDescriptorsInAllocation),</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="comment">// Mutex is not movable</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">//m_AllocationMutex(std::move(rhs.m_AllocationMutex))</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_pDeviceD3D12Impl(rhs.m_pDeviceD3D12Impl),</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_pParentAllocator(rhs.m_pParentAllocator),</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_ThisManagerId(rhs.m_ThisManagerId)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  rhs.m_FirstCPUHandle.ptr = 0;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  rhs.m_FirstGPUHandle.ptr = 0;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  rhs.m_DescriptorSize = 0;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  rhs.m_NumDescriptorsInAllocation = 0;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  rhs.m_HeapDesc.NumDescriptors = 0;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  rhs.m_pDeviceD3D12Impl = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  rhs.m_pParentAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  rhs.m_ThisManagerId = <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(-1);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="comment">// No copies or move-assignments</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  DescriptorHeapAllocationManager& operator = (DescriptorHeapAllocationManager&& rhs) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  DescriptorHeapAllocationManager(<span class="keyword">const</span> DescriptorHeapAllocationManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  DescriptorHeapAllocationManager& operator = (<span class="keyword">const</span> DescriptorHeapAllocationManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  ~DescriptorHeapAllocationManager();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// Allocates Count descriptors</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  DescriptorHeapAllocation Allocate( uint32_t Count );</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// Releases descriptor heap allocation. </span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// Note that the allocation is not released immediately, but</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// added to the release queue in the allocations manager</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordtype">void</span> Free(DescriptorHeapAllocation&& Allocation);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// Releases all stale allocation used by completed command lists</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// The method takes the last known completed fence value N</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// and releases all allocations whose associated fence value n <= N </span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordtype">void</span> ReleaseStaleAllocations(Uint64 LastCompletedFenceValue);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordtype">size_t</span> GetNumAvailableDescriptors()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_FreeBlockManager.GetFreeSize();}</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordtype">size_t</span> GetNumStaleDescriptors()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_FreeBlockManager.GetStaleAllocationsSize(); }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  Uint32 GetMaxDescriptors()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_NumDescriptorsInAllocation; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// Allocations manager used to handle descriptor allocations within the heap</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  VariableSizeGPUAllocationsManager m_FreeBlockManager;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">// Heap description</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  D3D12_DESCRIPTOR_HEAP_DESC m_HeapDesc;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="comment">// Strong reference to D3D12 descriptor heap object</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  CComPtr<ID3D12DescriptorHeap> m_pd3d12DescriptorHeap;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="comment">// First CPU descriptor handle in the available descriptor range</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  D3D12_CPU_DESCRIPTOR_HANDLE m_FirstCPUHandle = {0};</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// First GPU descriptor handle in the available descriptor range</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  D3D12_GPU_DESCRIPTOR_HANDLE m_FirstGPUHandle = {0};</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  UINT m_DescriptorSize = 0;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// Number of descriptors in the allocation. </span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="comment">// If this manager was initialized as a subrange in the existing heap,</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// this value may be different from m_HeapDesc.NumDescriptors</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  Uint32 m_NumDescriptorsInAllocation = 0;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  std::mutex m_AllocationMutex;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  RenderDeviceD3D12Impl *m_pDeviceD3D12Impl = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  IDescriptorAllocator *m_pParentAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="comment">// External ID assigned to this descriptor allocations manager</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordtype">size_t</span> m_ThisManagerId = <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(-1);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> };</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="comment">// CPU descriptor heap is intended to provide storage for resource view descriptor handles</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="comment">// It contains a pool of DescriptorHeapAllocationManager object instances, where every instance manages</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="comment">// its own CPU-only D3D12 descriptor heap:</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="comment">//</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="comment">// m_HeapPool[0] m_HeapPool[1] m_HeapPool[2]</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="comment">// | X X X X X X X X |, | X X X O O X X O |, | X O O O O O O O |</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="comment">//</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="comment">// X - used descriptor m_AvailableHeaps = {1,2}</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="comment">// O - available descriptor</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="comment">//</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="comment">// Allocation routine goes through the list of managers that have available descriptors and tries to process </span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="comment">// the request using every manager. If there are no available managers or no manager was able to handle the request, </span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="comment">// the function creates a new descriptor heap manager and lets it handle the request</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="comment">//</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="comment">// Render device contains four CPUDescriptorHeap object instances (one for each D3D12 heap type). The heaps are accessed</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="comment">// when a texture or a buffer view is created.</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment">//</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="keyword">class </span>CPUDescriptorHeap : <span class="keyword">public</span> IDescriptorAllocator</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// Initializes the heap</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  CPUDescriptorHeap(IMemoryAllocator &Allocator, </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  RenderDeviceD3D12Impl *pDeviceD3D12Impl, </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  Uint32 NumDescriptorsInHeap, </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  D3D12_DESCRIPTOR_HEAP_TYPE Type, </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  D3D12_DESCRIPTOR_HEAP_FLAGS Flags);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  CPUDescriptorHeap(<span class="keyword">const</span> CPUDescriptorHeap&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  CPUDescriptorHeap(CPUDescriptorHeap&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  CPUDescriptorHeap& operator = (<span class="keyword">const</span> CPUDescriptorHeap&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  CPUDescriptorHeap& operator = (CPUDescriptorHeap&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  ~CPUDescriptorHeap();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">virtual</span> DescriptorHeapAllocation Allocate( uint32_t Count )<span class="keyword">override</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(DescriptorHeapAllocation&& Allocation)<span class="keyword">override</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">virtual</span> Uint32 GetDescriptorSize()<span class="keyword">const override</span>{<span class="keywordflow">return</span> m_DescriptorSize;}</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="comment">// Releases all stale allocation used by completed command lists</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="comment">// The method takes the last known completed fence value N</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="comment">// and releases all allocations whose associated fence value n <= N </span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordtype">void</span> ReleaseStaleAllocations(Uint64 LastCompletedFenceValue);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="comment">// Pool of descriptor heap managers</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  std::vector<DescriptorHeapAllocationManager, STDAllocatorRawMem<DescriptorHeapAllocationManager> > m_HeapPool;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="comment">// Indices of available descriptor heap managers</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  std::set<size_t, std::less<size_t>, STDAllocatorRawMem<size_t> > m_AvailableHeaps;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  IMemoryAllocator &m_MemAllocator;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  std::mutex m_AllocationMutex;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  D3D12_DESCRIPTOR_HEAP_DESC m_HeapDesc;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  RenderDeviceD3D12Impl *m_pDeviceD3D12Impl;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  UINT m_DescriptorSize;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// Maximum heap size during the application lifetime - for statistic purposes</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  Uint32 m_MaxHeapSize = 0;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  Uint32 m_MaxStaleSize = 0;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  Uint32 m_CurrentSize = 0; <span class="comment">// This size does not count stale allocation</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> };</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="comment">// GPU descriptor heap provides storage for shader-visible descriptors</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="comment">// The heap contains single D3D12 descriptor heap that is broken into two parts.</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="comment">// The first part stores static and mutable resource descriptor handles.</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="comment">// The second part is intended to provide temporary storage for dynamic resources</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="comment">// Space for dynamic resources is allocated in chunks, and then descriptors are suballocated within every</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="comment">// chunk. DynamicSuballocationsManager facilitates this process</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="comment">//</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="comment">// </span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="comment">// static and mutable handles || dynamic space</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="comment">// || chunk 0 chunk 1 chunk 2 unused</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="comment">// | X O O X X O X O O O O X X X X O || | X X X O | | X X O O | | O O O O | O O O O ||</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="comment">// | |</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="comment">// suballocation suballocation</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="comment">// within chunk 0 within chunk 1</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="comment">//</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="comment">// Render device contains two GPUDescriptorHeap instances (CBV_SRV_UAV and SAMPLER). The heaps</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="comment">// are used to allocate GPU-visible descriptors for shader resource binding objects. The heaps</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="comment">// are also used by the command contexts (through DynamicSuballocationsManager to allocated dynamic descriptors)</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="comment">//</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="comment">// _______________________________________________________________________________________________________________________________</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="comment">// | Render Device |</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="comment">// | |</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="comment">// | m_CPUDescriptorHeaps[CBV_SRV_UAV] | X X X X X X X X |, | X X X X X X X X |, | X O O X O O O O | |</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="comment">// | m_CPUDescriptorHeaps[SAMPLER] | X X X X O O O X |, | X O O X O O O O | |</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="comment">// | m_CPUDescriptorHeaps[RTV] | X X X O O O O O |, | O O O O O O O O | |</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="comment">// | m_CPUDescriptorHeaps[DSV] | X X X O X O X O | |</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="comment">// | ctx1 ctx2 |</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="comment">// | m_GPUDescriptorHeaps[CBV_SRV_UAV] | X O O X X O X O O O O X X X X O || | X X X O | | X X O O | | O O O O | O O O O || |</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="comment">// | m_GPUDescriptorHeaps[SAMPLER] | X X O O X O X X X O O X O O O O || | X X O O | | X O O O | | O O O O | O O O O || |</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="comment">// | |</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="comment">// |_______________________________________________________________________________________________________________________________|</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="comment">// </span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="comment">// ________________________________________________ ________________________________________________ </span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="comment">// |Device Context 1 | |Device Context 2 |</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="comment">// | | | |</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="comment">// | m_DynamicGPUDescriptorAllocator[CBV_SRV_UAV] | | m_DynamicGPUDescriptorAllocator[CBV_SRV_UAV] |</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="comment">// | m_DynamicGPUDescriptorAllocator[SAMPLER] | | m_DynamicGPUDescriptorAllocator[SAMPLER] |</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="comment">// |________________________________________________| |________________________________________________|</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="comment">//</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="keyword">class </span>GPUDescriptorHeap : <span class="keyword">public</span> IDescriptorAllocator</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  GPUDescriptorHeap(IMemoryAllocator &Allocator, </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  RenderDeviceD3D12Impl *pDevice, </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  Uint32 NumDescriptorsInHeap, </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  Uint32 NumDynamicDescriptors,</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  D3D12_DESCRIPTOR_HEAP_TYPE Type, </div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  D3D12_DESCRIPTOR_HEAP_FLAGS Flags);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  GPUDescriptorHeap(<span class="keyword">const</span> GPUDescriptorHeap&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  GPUDescriptorHeap(GPUDescriptorHeap&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  GPUDescriptorHeap& operator = (<span class="keyword">const</span> GPUDescriptorHeap&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  GPUDescriptorHeap& operator = (GPUDescriptorHeap&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  ~GPUDescriptorHeap();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keyword">virtual</span> DescriptorHeapAllocation Allocate( uint32_t Count )<span class="keyword">override</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(DescriptorHeapAllocation&& Allocation)<span class="keyword">override</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keyword">virtual</span> Uint32 GetDescriptorSize()<span class="keyword">const override</span>{<span class="keywordflow">return</span> m_DescriptorSize;}</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  DescriptorHeapAllocation AllocateDynamic( uint32_t Count );</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// Releases all stale allocation used by completed command lists</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// The method takes the last known completed fence value N</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// and releases all allocations whose associated fence value n <= N </span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordtype">void</span> ReleaseStaleAllocations(Uint64 LastCompletedFenceValue);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keyword">const</span> D3D12_DESCRIPTOR_HEAP_DESC &GetHeapDesc()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_HeapDesc;}</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  Uint32 GetMaxStaticDescriptors()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_HeapAllocationManager.GetMaxDescriptors(); }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  Uint32 GetMaxDynamicDescriptors()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_DynamicAllocationsManager.GetMaxDescriptors(); }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  D3D12_DESCRIPTOR_HEAP_DESC m_HeapDesc;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  CComPtr<ID3D12DescriptorHeap> m_pd3d12DescriptorHeap;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  UINT m_DescriptorSize = 0;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  std::mutex m_AllocMutex, m_DynAllocMutex;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="comment">// Allocation manager for static/mutable part</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  DescriptorHeapAllocationManager m_HeapAllocationManager;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// Allocation manager for dynamic part</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  DescriptorHeapAllocationManager m_DynamicAllocationsManager;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  RenderDeviceD3D12Impl *m_pDeviceD3D12;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  Uint32 m_CurrentSize = 0;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// Maximum static/mutable part size during the application lifetime - for statistic purposes</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  Uint32 m_MaxHeapSize = 0;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  Uint32 m_MaxStaleSize = 0;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  Uint32 m_CurrentDynamicSize = 0;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="comment">// Maximum dynamic part size during the application lifetime - for statistic purposes</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  Uint32 m_MaxDynamicSize = 0;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  Uint32 m_MaxDynamicStaleSize = 0;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> };</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="comment">// The class facilitates allocation of dynamic descriptor handles. It requests a chunk of heap</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="comment">// from the master GPU descriptor heap and then performs linear suballocation within the chunk</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="comment">// At the end of the frame all allocations are disposed.</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="comment">// static and mutable handles || dynamic space</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="comment">// || chunk 0 chunk 2 </span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="comment">// | || | X X X O | | O O O O | || GPU Descriptor Heap</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment">// | |</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="comment">// m_Suballocations[0] m_Suballocations[1]</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="comment">//</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="keyword">class </span>DynamicSuballocationsManager : <span class="keyword">public</span> IDescriptorAllocator</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  DynamicSuballocationsManager(IMemoryAllocator &Allocator, GPUDescriptorHeap& ParentGPUHeap, Uint32 DynamicChunkSize);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  DynamicSuballocationsManager(<span class="keyword">const</span> DynamicSuballocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  DynamicSuballocationsManager(DynamicSuballocationsManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  DynamicSuballocationsManager& operator = (<span class="keyword">const</span> DynamicSuballocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  DynamicSuballocationsManager& operator = (DynamicSuballocationsManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordtype">void</span> DiscardAllocations(Uint64 <span class="comment">/*FenceValue*/</span>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keyword">virtual</span> DescriptorHeapAllocation Allocate( Uint32 Count )<span class="keyword">override</span>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Free(DescriptorHeapAllocation&& Allocation)<span class="keyword">override</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keyword">virtual</span> Uint32 GetDescriptorSize()<span class="keyword">const override</span>{<span class="keywordflow">return</span> m_ParentGPUHeap.GetDescriptorSize();}</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="comment">// List of chunks allocated from the master GPU descriptor heap. All chunks are disposed at the end</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="comment">// of the frame</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  std::vector<DescriptorHeapAllocation, STDAllocatorRawMem<DescriptorHeapAllocation> > m_Suballocations;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  Uint32 m_CurrentSuballocationOffset = 0;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  Uint32 m_DynamicChunkSize = 0;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// Parent GPU descriptor heap that is used to allocate chunks</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  GPUDescriptorHeap &m_ParentGPUHeap;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> };</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_caps_8h_source.html b/doc/html/_device_caps_8h_source.html index 2a0b557a..0934a4bf 100644 --- a/doc/html/_device_caps_8h_source.html +++ b/doc/html/_device_caps_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceCaps.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18"> 34</a></span>  <span class="keyword">enum class</span> <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18">DeviceType</a> : Int32</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18aec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18ad51c33ce106109ecd1596d83a11632a5">D3D11</a>, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18afac777d230cd7175697748a8c5260df6">D3D12</a>, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18a760716b590ee7c0adc25f434f577d8be">OpenGL</a>, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18af4b7db07e13ba92157b1b7d961abfaae">OpenGLES</a> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  };</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_caps.html"> 44</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_sampler_caps.html">SamplerCaps</a></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_caps.html#ae7e0572d6cf6ccb8404693cc76934125"> 47</a></span>  Bool <a class="code" href="struct_diligent_1_1_sampler_caps.html#ae7e0572d6cf6ccb8404693cc76934125">bBorderSamplingModeSupported</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_caps.html#af72690e36ea28653de40fb24c69cc128"> 50</a></span>  Bool <a class="code" href="struct_diligent_1_1_sampler_caps.html#af72690e36ea28653de40fb24c69cc128">bAnisotropicFilteringSupported</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_caps.html#a8c006d5540e11b89fd8cb8668758469d"> 53</a></span>  Bool <a class="code" href="struct_diligent_1_1_sampler_caps.html#a8c006d5540e11b89fd8cb8668758469d">bLODBiasSupported</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_caps.html#abc1a0c3e9cccb15573e1cdf1ac99a18a"> 56</a></span>  <a class="code" href="struct_diligent_1_1_sampler_caps.html#abc1a0c3e9cccb15573e1cdf1ac99a18a">SamplerCaps</a>() :</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="struct_diligent_1_1_sampler_caps.html#ae7e0572d6cf6ccb8404693cc76934125">bBorderSamplingModeSupported</a>( True ),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="struct_diligent_1_1_sampler_caps.html#af72690e36ea28653de40fb24c69cc128">bAnisotropicFilteringSupported</a>( True ),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="struct_diligent_1_1_sampler_caps.html#a8c006d5540e11b89fd8cb8668758469d">bLODBiasSupported</a>( True )</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {}</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html"> 64</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_caps.html">TextureCaps</a></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#abc44c7348aaa30d2e046b5ccc3ab08d1"> 67</a></span>  Bool <a class="code" href="struct_diligent_1_1_texture_caps.html#abc44c7348aaa30d2e046b5ccc3ab08d1">bTexture1DSupported</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#aa4e3aeb3b8a7ae275d4b43a1a67bfe6e"> 70</a></span>  Bool <a class="code" href="struct_diligent_1_1_texture_caps.html#aa4e3aeb3b8a7ae275d4b43a1a67bfe6e">bTexture1DArraySupported</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#a5bdc97b634fffa3f7e9505845dd67c06"> 73</a></span>  Bool <a class="code" href="struct_diligent_1_1_texture_caps.html#a5bdc97b634fffa3f7e9505845dd67c06">bTexture2DMSSupported</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#ab56a36e4792921cef9ebdba1402904af"> 76</a></span>  Bool <a class="code" href="struct_diligent_1_1_texture_caps.html#ab56a36e4792921cef9ebdba1402904af">bTexture2DMSArraySupported</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#aecfd0691323563f4af543d3d02cdb07c"> 79</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_caps.html#aecfd0691323563f4af543d3d02cdb07c">bTextureViewSupported</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#a81cb7047b115144874298d7554207dc1"> 82</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_caps.html#a81cb7047b115144874298d7554207dc1">bCubemapArraysSupported</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#a325029c491ac552b745fe03bcf63e0e0"> 85</a></span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#a325029c491ac552b745fe03bcf63e0e0">TextureCaps</a>():</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#abc44c7348aaa30d2e046b5ccc3ab08d1">bTexture1DSupported</a>( True ),</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#aa4e3aeb3b8a7ae275d4b43a1a67bfe6e">bTexture1DArraySupported</a>( True ),</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#a5bdc97b634fffa3f7e9505845dd67c06">bTexture2DMSSupported</a>( True ),</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#ab56a36e4792921cef9ebdba1402904af">bTexture2DMSArraySupported</a>( True ),</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#aecfd0691323563f4af543d3d02cdb07c">bTextureViewSupported</a>( True ),</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#a81cb7047b115144874298d7554207dc1">bCubemapArraysSupported</a>( True )</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {}</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  };</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html"> 96</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_device_caps.html">DeviceCaps</a></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#abccee23ca3ca2340126ffa78e5800196"> 99</a></span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18">DeviceType</a> <a class="code" href="struct_diligent_1_1_device_caps.html#abccee23ca3ca2340126ffa78e5800196">DevType</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#aa6930d494e233ea0b46d0ec7d260a870"> 103</a></span>  Int32 <a class="code" href="struct_diligent_1_1_device_caps.html#aa6930d494e233ea0b46d0ec7d260a870">MajorVersion</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#abdc1be2715af7e39f54454b26395ac73"> 107</a></span>  Int32 <a class="code" href="struct_diligent_1_1_device_caps.html#abdc1be2715af7e39f54454b26395ac73">MinorVersion</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a0972c2a042cd7266a5450a9f51452517"> 110</a></span>  Bool <a class="code" href="struct_diligent_1_1_device_caps.html#a0972c2a042cd7266a5450a9f51452517">bSeparableProgramSupported</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a2a17664a40e5eb90a20c68a520a487e8"> 113</a></span>  Bool <a class="code" href="struct_diligent_1_1_device_caps.html#a2a17664a40e5eb90a20c68a520a487e8">bIndirectRenderingSupported</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a04d752cb6bcb7fc56ff2533cdf48e796"> 116</a></span>  Bool <a class="code" href="struct_diligent_1_1_device_caps.html#a04d752cb6bcb7fc56ff2533cdf48e796">bWireframeFillSupported</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a5e5213f80ddd3160766ec51c5ed2ab4b"> 119</a></span>  Bool <a class="code" href="struct_diligent_1_1_device_caps.html#a5e5213f80ddd3160766ec51c5ed2ab4b">bMultithreadedResourceCreationSupported</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a408a266a56d81c953cdd0813617838af"> 122</a></span>  <a class="code" href="struct_diligent_1_1_sampler_caps.html">SamplerCaps</a> <a class="code" href="struct_diligent_1_1_device_caps.html#a408a266a56d81c953cdd0813617838af">SamCaps</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#ac95e490fb96d7bd0b4d1d91eb8d0c3bc"> 125</a></span>  <a class="code" href="struct_diligent_1_1_texture_caps.html">TextureCaps</a> <a class="code" href="struct_diligent_1_1_device_caps.html#ac95e490fb96d7bd0b4d1d91eb8d0c3bc">TexCaps</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a391b39a34d996b7a368a6255ae8923d2"> 128</a></span>  <a class="code" href="struct_diligent_1_1_device_caps.html#a391b39a34d996b7a368a6255ae8923d2">DeviceCaps</a>() :</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#abccee23ca3ca2340126ffa78e5800196">DevType</a>( <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18">DeviceType</a>::Undefined ),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#aa6930d494e233ea0b46d0ec7d260a870">MajorVersion</a>( 0 ),</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#abdc1be2715af7e39f54454b26395ac73">MinorVersion</a>( 0 ),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#a0972c2a042cd7266a5450a9f51452517">bSeparableProgramSupported</a>( True ),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#a2a17664a40e5eb90a20c68a520a487e8">bIndirectRenderingSupported</a>( True ),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#a04d752cb6bcb7fc56ff2533cdf48e796">bWireframeFillSupported</a>( True ),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#a5e5213f80ddd3160766ec51c5ed2ab4b">bMultithreadedResourceCreationSupported</a>( False )</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {}</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  };</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="ttc" id="struct_diligent_1_1_device_caps_html_a0972c2a042cd7266a5450a9f51452517"><div class="ttname"><a href="struct_diligent_1_1_device_caps.html#a0972c2a042cd7266a5450a9f51452517">Diligent::DeviceCaps::bSeparableProgramSupported</a></div><div class="ttdeci">Bool bSeparableProgramSupported</div><div class="ttdoc">Indicates if device supports separable programs. </div><div class="ttdef"><b>Definition:</b> DeviceCaps.h:110</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18"> 34</a></span>  <span class="keyword">enum class</span> <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18">DeviceType</a> : Int32</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18aec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18ad51c33ce106109ecd1596d83a11632a5">D3D11</a>, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18afac777d230cd7175697748a8c5260df6">D3D12</a>, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18a760716b590ee7c0adc25f434f577d8be">OpenGL</a>, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18af4b7db07e13ba92157b1b7d961abfaae">OpenGLES</a> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  };</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_caps.html"> 44</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_sampler_caps.html">SamplerCaps</a></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_caps.html#ae7e0572d6cf6ccb8404693cc76934125"> 47</a></span>  Bool <a class="code" href="struct_diligent_1_1_sampler_caps.html#ae7e0572d6cf6ccb8404693cc76934125">bBorderSamplingModeSupported</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_caps.html#af72690e36ea28653de40fb24c69cc128"> 50</a></span>  Bool <a class="code" href="struct_diligent_1_1_sampler_caps.html#af72690e36ea28653de40fb24c69cc128">bAnisotropicFilteringSupported</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_caps.html#a8c006d5540e11b89fd8cb8668758469d"> 53</a></span>  Bool <a class="code" href="struct_diligent_1_1_sampler_caps.html#a8c006d5540e11b89fd8cb8668758469d">bLODBiasSupported</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_caps.html#abc1a0c3e9cccb15573e1cdf1ac99a18a"> 56</a></span>  <a class="code" href="struct_diligent_1_1_sampler_caps.html#abc1a0c3e9cccb15573e1cdf1ac99a18a">SamplerCaps</a>() :</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="struct_diligent_1_1_sampler_caps.html#ae7e0572d6cf6ccb8404693cc76934125">bBorderSamplingModeSupported</a>( True ),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="struct_diligent_1_1_sampler_caps.html#af72690e36ea28653de40fb24c69cc128">bAnisotropicFilteringSupported</a>( True ),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="struct_diligent_1_1_sampler_caps.html#a8c006d5540e11b89fd8cb8668758469d">bLODBiasSupported</a>( True )</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {}</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html"> 64</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_caps.html">TextureCaps</a></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#abc44c7348aaa30d2e046b5ccc3ab08d1"> 67</a></span>  Bool <a class="code" href="struct_diligent_1_1_texture_caps.html#abc44c7348aaa30d2e046b5ccc3ab08d1">bTexture1DSupported</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#aa4e3aeb3b8a7ae275d4b43a1a67bfe6e"> 70</a></span>  Bool <a class="code" href="struct_diligent_1_1_texture_caps.html#aa4e3aeb3b8a7ae275d4b43a1a67bfe6e">bTexture1DArraySupported</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#a5bdc97b634fffa3f7e9505845dd67c06"> 73</a></span>  Bool <a class="code" href="struct_diligent_1_1_texture_caps.html#a5bdc97b634fffa3f7e9505845dd67c06">bTexture2DMSSupported</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#ab56a36e4792921cef9ebdba1402904af"> 76</a></span>  Bool <a class="code" href="struct_diligent_1_1_texture_caps.html#ab56a36e4792921cef9ebdba1402904af">bTexture2DMSArraySupported</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#aecfd0691323563f4af543d3d02cdb07c"> 79</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_caps.html#aecfd0691323563f4af543d3d02cdb07c">bTextureViewSupported</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#a81cb7047b115144874298d7554207dc1"> 82</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_caps.html#a81cb7047b115144874298d7554207dc1">bCubemapArraysSupported</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_caps.html#a325029c491ac552b745fe03bcf63e0e0"> 85</a></span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#a325029c491ac552b745fe03bcf63e0e0">TextureCaps</a>():</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#abc44c7348aaa30d2e046b5ccc3ab08d1">bTexture1DSupported</a>( True ),</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#aa4e3aeb3b8a7ae275d4b43a1a67bfe6e">bTexture1DArraySupported</a>( True ),</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#a5bdc97b634fffa3f7e9505845dd67c06">bTexture2DMSSupported</a>( True ),</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#ab56a36e4792921cef9ebdba1402904af">bTexture2DMSArraySupported</a>( True ),</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#aecfd0691323563f4af543d3d02cdb07c">bTextureViewSupported</a>( True ),</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="struct_diligent_1_1_texture_caps.html#a81cb7047b115144874298d7554207dc1">bCubemapArraysSupported</a>( True )</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {}</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  };</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html"> 96</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_device_caps.html">DeviceCaps</a></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#abccee23ca3ca2340126ffa78e5800196"> 99</a></span>  <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18">DeviceType</a> <a class="code" href="struct_diligent_1_1_device_caps.html#abccee23ca3ca2340126ffa78e5800196">DevType</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#aa6930d494e233ea0b46d0ec7d260a870"> 103</a></span>  Int32 <a class="code" href="struct_diligent_1_1_device_caps.html#aa6930d494e233ea0b46d0ec7d260a870">MajorVersion</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#abdc1be2715af7e39f54454b26395ac73"> 107</a></span>  Int32 <a class="code" href="struct_diligent_1_1_device_caps.html#abdc1be2715af7e39f54454b26395ac73">MinorVersion</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a0972c2a042cd7266a5450a9f51452517"> 110</a></span>  Bool <a class="code" href="struct_diligent_1_1_device_caps.html#a0972c2a042cd7266a5450a9f51452517">bSeparableProgramSupported</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a2a17664a40e5eb90a20c68a520a487e8"> 113</a></span>  Bool <a class="code" href="struct_diligent_1_1_device_caps.html#a2a17664a40e5eb90a20c68a520a487e8">bIndirectRenderingSupported</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a04d752cb6bcb7fc56ff2533cdf48e796"> 116</a></span>  Bool <a class="code" href="struct_diligent_1_1_device_caps.html#a04d752cb6bcb7fc56ff2533cdf48e796">bWireframeFillSupported</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a5e5213f80ddd3160766ec51c5ed2ab4b"> 119</a></span>  Bool <a class="code" href="struct_diligent_1_1_device_caps.html#a5e5213f80ddd3160766ec51c5ed2ab4b">bMultithreadedResourceCreationSupported</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a408a266a56d81c953cdd0813617838af"> 122</a></span>  <a class="code" href="struct_diligent_1_1_sampler_caps.html">SamplerCaps</a> <a class="code" href="struct_diligent_1_1_device_caps.html#a408a266a56d81c953cdd0813617838af">SamCaps</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#ac95e490fb96d7bd0b4d1d91eb8d0c3bc"> 125</a></span>  <a class="code" href="struct_diligent_1_1_texture_caps.html">TextureCaps</a> <a class="code" href="struct_diligent_1_1_device_caps.html#ac95e490fb96d7bd0b4d1d91eb8d0c3bc">TexCaps</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_caps.html#a391b39a34d996b7a368a6255ae8923d2"> 128</a></span>  <a class="code" href="struct_diligent_1_1_device_caps.html#a391b39a34d996b7a368a6255ae8923d2">DeviceCaps</a>() :</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#abccee23ca3ca2340126ffa78e5800196">DevType</a>( <a class="code" href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18">DeviceType</a>::Undefined ),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#aa6930d494e233ea0b46d0ec7d260a870">MajorVersion</a>( 0 ),</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#abdc1be2715af7e39f54454b26395ac73">MinorVersion</a>( 0 ),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#a0972c2a042cd7266a5450a9f51452517">bSeparableProgramSupported</a>( True ),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#a2a17664a40e5eb90a20c68a520a487e8">bIndirectRenderingSupported</a>( True ),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#a04d752cb6bcb7fc56ff2533cdf48e796">bWireframeFillSupported</a>( True ),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="struct_diligent_1_1_device_caps.html#a5e5213f80ddd3160766ec51c5ed2ab4b">bMultithreadedResourceCreationSupported</a>( False )</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {}</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  };</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="ttc" id="struct_diligent_1_1_device_caps_html_a0972c2a042cd7266a5450a9f51452517"><div class="ttname"><a href="struct_diligent_1_1_device_caps.html#a0972c2a042cd7266a5450a9f51452517">Diligent::DeviceCaps::bSeparableProgramSupported</a></div><div class="ttdeci">Bool bSeparableProgramSupported</div><div class="ttdoc">Indicates if device supports separable programs. </div><div class="ttdef"><b>Definition:</b> DeviceCaps.h:110</div></div> <div class="ttc" id="struct_diligent_1_1_texture_caps_html_a5bdc97b634fffa3f7e9505845dd67c06"><div class="ttname"><a href="struct_diligent_1_1_texture_caps.html#a5bdc97b634fffa3f7e9505845dd67c06">Diligent::TextureCaps::bTexture2DMSSupported</a></div><div class="ttdeci">Bool bTexture2DMSSupported</div><div class="ttdoc">Indicates if device supports 2D multisampled textures. </div><div class="ttdef"><b>Definition:</b> DeviceCaps.h:73</div></div> <div class="ttc" id="struct_diligent_1_1_device_caps_html_a5e5213f80ddd3160766ec51c5ed2ab4b"><div class="ttname"><a href="struct_diligent_1_1_device_caps.html#a5e5213f80ddd3160766ec51c5ed2ab4b">Diligent::DeviceCaps::bMultithreadedResourceCreationSupported</a></div><div class="ttdeci">Bool bMultithreadedResourceCreationSupported</div><div class="ttdoc">Indicates if device supports multithreaded resource creation. </div><div class="ttdef"><b>Definition:</b> DeviceCaps.h:119</div></div> <div class="ttc" id="namespace_diligent_html_a905d9d44892311167e9b28962bbf7e18afac777d230cd7175697748a8c5260df6"><div class="ttname"><a href="namespace_diligent.html#a905d9d44892311167e9b28962bbf7e18afac777d230cd7175697748a8c5260df6">Diligent::DeviceType::D3D12</a></div><div class="ttdoc">D3D12 device. </div></div> @@ -105,7 +105,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_context_8h_source.html b/doc/html/_device_context_8h_source.html index 319b5795..405c0cdd 100644 --- a/doc/html/_device_context_8h_source.html +++ b/doc/html/_device_context_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceContext.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceCaps.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Constants.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "InputLayout.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "DepthStencilState.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "BlendState.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "CommandList.h"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// {DC92711B-A1BE-4319-B2BD-C662D1CC19E4}</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DeviceContext =</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> { 0xdc92711b, 0xa1be, 0x4319, { 0xb2, 0xbd, 0xc6, 0x62, 0xd1, 0xcc, 0x19, 0xe4 } };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5"> 56</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> : Int32</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543"> 59</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a> = 0,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ae92cbcbf18a66dbe4463436512255d71"> 63</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ae92cbcbf18a66dbe4463436512255d71">PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</a>,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7be4708b91dbb1e86bc0e83bf4f7c3d6"> 67</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7be4708b91dbb1e86bc0e83bf4f7c3d6">PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP</a>,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869"> 71</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">PRIMITIVE_TOPOLOGY_POINT_LIST</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a9cc861405d74774fa3e1dfea46af38f5"> 75</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a9cc861405d74774fa3e1dfea46af38f5">PRIMITIVE_TOPOLOGY_LINE_LIST</a>,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2391ccd64eef53c0afb38a4038ee60e8"> 79</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2391ccd64eef53c0afb38a4038ee60e8">PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa3f5de372e432227935523d3340c31c4"> 83</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa3f5de372e432227935523d3340c31c4">PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ab080bb03f1dd1780108a4f063f912f56"> 87</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ab080bb03f1dd1780108a4f063f912f56">PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca80f744bb8fd1b7dfb7e9c6f30e7226"> 91</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca80f744bb8fd1b7dfb7e9c6f30e7226">PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a143737d74c6d54f6d306e9cfaec5e123"> 95</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a143737d74c6d54f6d306e9cfaec5e123">PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a89e83959864817ded36df88d008a852d"> 99</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a89e83959864817ded36df88d008a852d">PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a40cc9177e4dd6ebfe8af822805ca3a7b"> 103</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a40cc9177e4dd6ebfe8af822805ca3a7b">PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a83efcf6d5e7344bded72e8ab0e4987fe"> 107</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a83efcf6d5e7344bded72e8ab0e4987fe">PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a4773f73683ef10aab0d173184c83fec3"> 111</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a4773f73683ef10aab0d173184c83fec3">PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a338f901ebaf7b1a39bf11df03b46706d"> 115</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a338f901ebaf7b1a39bf11df03b46706d">PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af29f2e03da5da233318e9fe143e56f65"> 119</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af29f2e03da5da233318e9fe143e56f65">PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad5927a7c5890e224061a1b47b2e882a7"> 123</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad5927a7c5890e224061a1b47b2e882a7">PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ade1587aa65e3a045465613b1bed14480"> 127</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ade1587aa65e3a045465613b1bed14480">PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aaff97290dcd0ae400127c49d1c693dd1"> 131</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aaff97290dcd0ae400127c49d1c693dd1">PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca9973c74c8771d563acd96c7ab90220"> 135</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca9973c74c8771d563acd96c7ab90220">PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a751ea00e3c825f8db30a213956d91d6a"> 139</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a751ea00e3c825f8db30a213956d91d6a">PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5ba5f423fa6a2cb829f3e1f9fe9ef777"> 143</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5ba5f423fa6a2cb829f3e1f9fe9ef777">PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af1631cf630c60572095ed644cf056314"> 147</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af1631cf630c60572095ed644cf056314">PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7854b9554ef00a17316d63651d99c52b"> 151</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7854b9554ef00a17316d63651d99c52b">PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a54a54ae55e13555e60038b5d1d224410"> 155</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a54a54ae55e13555e60038b5d1d224410">PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aafda4acec32c1420a69b04d9ca98b7b8"> 159</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aafda4acec32c1420a69b04d9ca98b7b8">PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5afe47dcc2bb7023572919fd5422a8493a"> 163</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5afe47dcc2bb7023572919fd5422a8493a">PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a8006e8901a9dbca7bf00db8d9cc711ad"> 167</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a8006e8901a9dbca7bf00db8d9cc711ad">PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a25a7f7a9608c3f78767f2facafa0a58b"> 171</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a25a7f7a9608c3f78767f2facafa0a58b">PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa5fe455cd87a8f5b43f6bc144f9999d6"> 175</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa5fe455cd87a8f5b43f6bc144f9999d6">PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  </div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad37f9f89d54d3ddcfb1148614d2b544a"> 179</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad37f9f89d54d3ddcfb1148614d2b544a">PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a600ccba949f8fc8d83087b6e5fee313d"> 183</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a600ccba949f8fc8d83087b6e5fee313d">PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5a6323683bea2fbf85d9fbfe4d0c0f72"> 187</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5a6323683bea2fbf85d9fbfe4d0c0f72">PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2ac786c751b2c89db5ecd320cc9cc15a"> 191</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2ac786c751b2c89db5ecd320cc9cc15a">PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6a30c15e62e2cf8b568473e3de9f1fc2"> 195</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6a30c15e62e2cf8b568473e3de9f1fc2">PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aefa709253ebb4377a447a123c0cb1ad5"> 199</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aefa709253ebb4377a447a123c0cb1ad5">PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  </div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aadfb69f9081328984e67040484a46d03"> 203</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aadfb69f9081328984e67040484a46d03">PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad6da20e017f1d6cd47c8480b2e2d10c7"> 206</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad6da20e017f1d6cd47c8480b2e2d10c7">PRIMITIVE_TOPOLOGY_NUM_TOPOLOGIES</a></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> };</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html"> 212</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> {</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a377ef56a20ed55eea4f7cf908f24797c"> 215</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> <a class="code" href="struct_diligent_1_1_draw_attribs.html#a377ef56a20ed55eea4f7cf908f24797c">Topology</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">union</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#aac1a1696f8dbbbcc612ad6747ceb48de"> 219</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#aac1a1696f8dbbbcc612ad6747ceb48de">NumVertices</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  </div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a6c4d5baa3cbddc16e7ca12eba5823d7b"> 222</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a6c4d5baa3cbddc16e7ca12eba5823d7b">NumIndices</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  };</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a441e328dbf0df16449d1ebaec15f2f3f"> 226</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> <a class="code" href="struct_diligent_1_1_draw_attribs.html#a441e328dbf0df16449d1ebaec15f2f3f">IndexType</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a1cc81bc2d59a429e39da7b84fe51d5c9"> 229</a></span>  Bool <a class="code" href="struct_diligent_1_1_draw_attribs.html#a1cc81bc2d59a429e39da7b84fe51d5c9">IsIndexed</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#afaa7465592245150fcd7edde9f3d769c"> 233</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#afaa7465592245150fcd7edde9f3d769c">NumInstances</a>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#adf7f7c85b3c39454894e93666cc883c2"> 238</a></span>  Bool <a class="code" href="struct_diligent_1_1_draw_attribs.html#adf7f7c85b3c39454894e93666cc883c2">IsIndirect</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a75b6db30ed31a382ebb8de5201001ca4"> 242</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a75b6db30ed31a382ebb8de5201001ca4">BaseVertex</a>; </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a2bffcc70ecb79a93059cccafcc4c5622"> 246</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a2bffcc70ecb79a93059cccafcc4c5622">IndirectDrawArgsOffset</a>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">union</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a0fb46bf99dc79966d25b7f0ff88e7f0b"> 252</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a0fb46bf99dc79966d25b7f0ff88e7f0b">StartVertexLocation</a>; </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a74b73ded24ae0830a35d6558af87a1be"> 256</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a74b73ded24ae0830a35d6558af87a1be">FirstIndexLocation</a>; </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  };</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a6d5ebf96be85c07b868b576586aad8d6"> 260</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a6d5ebf96be85c07b868b576586aad8d6">FirstInstanceLocation</a>; </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a7eac52d6bb19de8669c431041bd81867"> 264</a></span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *<a class="code" href="struct_diligent_1_1_draw_attribs.html#a7eac52d6bb19de8669c431041bd81867">pIndirectDrawAttribs</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#ac3a0d636a0ab79514061ee47a526f9de"> 283</a></span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#ac3a0d636a0ab79514061ee47a526f9de">DrawAttribs</a>() : </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a377ef56a20ed55eea4f7cf908f24797c">Topology</a>(<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a>),</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#aac1a1696f8dbbbcc612ad6747ceb48de">NumVertices</a>(0),</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a441e328dbf0df16449d1ebaec15f2f3f">IndexType</a>(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">VT_UNDEFINED</a>),</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a1cc81bc2d59a429e39da7b84fe51d5c9">IsIndexed</a>(False),</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#afaa7465592245150fcd7edde9f3d769c">NumInstances</a>(1),</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#adf7f7c85b3c39454894e93666cc883c2">IsIndirect</a>(False),</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a75b6db30ed31a382ebb8de5201001ca4">BaseVertex</a>(0),</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a2bffcc70ecb79a93059cccafcc4c5622">IndirectDrawArgsOffset</a>(0),</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a0fb46bf99dc79966d25b7f0ff88e7f0b">StartVertexLocation</a>(0),</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a6d5ebf96be85c07b868b576586aad8d6">FirstInstanceLocation</a>(0),</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a7eac52d6bb19de8669c431041bd81867">pIndirectDrawAttribs</a>(nullptr)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {}</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> };</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058b"> 301</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058b">CLEAR_DEPTH_STENCIL_FLAGS</a> : Int32</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> {</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058ba34afbc9a33f86780875da153ca6b2e48"> 303</a></span>  <a class="code" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058ba34afbc9a33f86780875da153ca6b2e48">CLEAR_DEPTH_FLAG</a> = 0x01, </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058ba9f709957bf297f9f5e8ae3e2687302f8"> 304</a></span>  <a class="code" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058ba9f709957bf297f9f5e8ae3e2687302f8">CLEAR_STENCIL_FLAG</a> = 0x02 </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> };</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html"> 312</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html">DispatchComputeAttribs</a></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> {</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad6268495eacc1bdf2ae19538c5937c20"> 314</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad6268495eacc1bdf2ae19538c5937c20">ThreadGroupCountX</a>; </div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#a8e6828a4ff791324c42da5d296dac179"> 315</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a8e6828a4ff791324c42da5d296dac179">ThreadGroupCountY</a>; </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0f7645f8572efd2cdf1a614ac2aca873"> 316</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0f7645f8572efd2cdf1a614ac2aca873">ThreadGroupCountZ</a>; </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#a6a3c601127e18c95e3b326acfca63bc9"> 321</a></span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *<a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a6a3c601127e18c95e3b326acfca63bc9">pIndirectDispatchAttribs</a>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  </div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#a29f5461bf93cbf25387b393dfee41995"> 325</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a29f5461bf93cbf25387b393dfee41995">DispatchArgsByteOffset</a>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  </div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0715c7607a8b2b10cf8bbb13161c1b24"> 332</a></span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0715c7607a8b2b10cf8bbb13161c1b24">DispatchComputeAttribs</a>( Uint32 GroupsX = 1, Uint32 GroupsY = 1, Uint32 GroupsZ = 1 ) : </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad6268495eacc1bdf2ae19538c5937c20">ThreadGroupCountX</a>( GroupsX ),</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a8e6828a4ff791324c42da5d296dac179">ThreadGroupCountY</a>( GroupsY ),</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0f7645f8572efd2cdf1a614ac2aca873">ThreadGroupCountZ</a>( GroupsZ ),</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a6a3c601127e18c95e3b326acfca63bc9">pIndirectDispatchAttribs</a>(nullptr),</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a29f5461bf93cbf25387b393dfee41995">DispatchArgsByteOffset</a>(0)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {}</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad7115af02bba790ba14b1425e430e658"> 345</a></span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad7115af02bba790ba14b1425e430e658">DispatchComputeAttribs</a>( <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pDispatchAttribs, Uint32 Offset = 0 ) :</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad6268495eacc1bdf2ae19538c5937c20">ThreadGroupCountX</a>( 0 ),</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a8e6828a4ff791324c42da5d296dac179">ThreadGroupCountY</a>( 0 ),</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0f7645f8572efd2cdf1a614ac2aca873">ThreadGroupCountZ</a>( 0 ),</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a6a3c601127e18c95e3b326acfca63bc9">pIndirectDispatchAttribs</a>( pDispatchAttribs ),</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a29f5461bf93cbf25387b393dfee41995">DispatchArgsByteOffset</a>( Offset )</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {}</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> };</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5720b03558fa0f988caaa3ea82f4f4d2"> 355</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a5720b03558fa0f988caaa3ea82f4f4d2">SET_VERTEX_BUFFERS_FLAGS</a> : Int32</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> {</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5720b03558fa0f988caaa3ea82f4f4d2a9d845821b9a5867760597bb117189aa8"> 359</a></span>  <a class="code" href="namespace_diligent.html#a5720b03558fa0f988caaa3ea82f4f4d2a9d845821b9a5867760597bb117189aa8">SET_VERTEX_BUFFERS_FLAG_RESET</a> = 0x01</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> };</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a83a6318edc132699548ca2ae05374007"> 363</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a83a6318edc132699548ca2ae05374007">COMMIT_SHADER_RESOURCES_FLAG</a></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a83a6318edc132699548ca2ae05374007add49cb7a8581173762b24c89992c544e"> 369</a></span>  <a class="code" href="namespace_diligent.html#a83a6318edc132699548ca2ae05374007add49cb7a8581173762b24c89992c544e">COMMIT_SHADER_RESOURCES_FLAG_TRANSITION_RESOURCES</a> = 0x01</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> };</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html"> 376</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> {</div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a7362f6cfa69acfd6eb6a6471d11f8119"> 379</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#a7362f6cfa69acfd6eb6a6471d11f8119">TopLeftX</a>;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#aa160a6d5d178c0b9cefc64c4e1442103"> 385</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#aa160a6d5d178c0b9cefc64c4e1442103">TopLeftY</a>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a2f96ff65484cd8f703ada0678f32a3e7"> 388</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#a2f96ff65484cd8f703ada0678f32a3e7">Width</a>;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a3bf0bdf2e63f5ddbb39771208714a6fd"> 391</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#a3bf0bdf2e63f5ddbb39771208714a6fd">Height</a>;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a7e6d0e084796700cad042cbf125f9f52"> 394</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#a7e6d0e084796700cad042cbf125f9f52">MinDepth</a>;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a25f90df01dd587cc8ad69cfbf278d8bd"> 397</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#a25f90df01dd587cc8ad69cfbf278d8bd">MaxDepth</a>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a1b94a0a7a166bf2f3bc40982be910b03"> 400</a></span>  <a class="code" href="struct_diligent_1_1_viewport.html#a1b94a0a7a166bf2f3bc40982be910b03">Viewport</a>(Float32 _TopLeftX = 0, Float32 _TopLeftY = 0,</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  Float32 _Width = 0, Float32 _Height = 0,</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  Float32 _MinDepth = 0, Float32 _MaxDepth = 1 )</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  :</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="struct_diligent_1_1_viewport.html#a7362f6cfa69acfd6eb6a6471d11f8119">TopLeftX</a>( _TopLeftX ),</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="struct_diligent_1_1_viewport.html#aa160a6d5d178c0b9cefc64c4e1442103">TopLeftY</a>( _TopLeftY ),</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <a class="code" href="struct_diligent_1_1_viewport.html#a2f96ff65484cd8f703ada0678f32a3e7">Width</a> ( _Width ),</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="struct_diligent_1_1_viewport.html#a3bf0bdf2e63f5ddbb39771208714a6fd">Height</a> ( _Height ),</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <a class="code" href="struct_diligent_1_1_viewport.html#a7e6d0e084796700cad042cbf125f9f52">MinDepth</a>( _MinDepth ),</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="struct_diligent_1_1_viewport.html#a25f90df01dd587cc8ad69cfbf278d8bd">MaxDepth</a>( _MaxDepth )</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  {}</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> };</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html"> 420</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_rect.html">Rect</a></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> {</div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html#a2d66e3061bbee9a029437d24fc430507"> 422</a></span>  Int32 <a class="code" href="struct_diligent_1_1_rect.html#a2d66e3061bbee9a029437d24fc430507">left</a>; </div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html#a2f179f7e304da900265df76803eb9de7"> 423</a></span>  Int32 <a class="code" href="struct_diligent_1_1_rect.html#a2f179f7e304da900265df76803eb9de7">top</a>; </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html#a3b11c8294a274db4109b74a049be1f79"> 424</a></span>  Int32 <a class="code" href="struct_diligent_1_1_rect.html#a3b11c8294a274db4109b74a049be1f79">right</a>; </div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html#a0469c2165ebf1740d7af2f21d73d1416"> 425</a></span>  Int32 <a class="code" href="struct_diligent_1_1_rect.html#a0469c2165ebf1740d7af2f21d73d1416">bottom</a>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html#a4c540951e442bbb310eb6e0e249f08a0"> 428</a></span>  <a class="code" href="struct_diligent_1_1_rect.html#a4c540951e442bbb310eb6e0e249f08a0">Rect</a>( Int32 _left = 0, Int32 _top = 0, Int32 _right = 0, Int32 _bottom = 0 ) : </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <a class="code" href="struct_diligent_1_1_rect.html#a2d66e3061bbee9a029437d24fc430507">left</a> ( _left ),</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="struct_diligent_1_1_rect.html#a2f179f7e304da900265df76803eb9de7">top</a> ( _top ),</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <a class="code" href="struct_diligent_1_1_rect.html#a3b11c8294a274db4109b74a049be1f79">right</a> ( _right ),</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="struct_diligent_1_1_rect.html#a0469c2165ebf1740d7af2f21d73d1416">bottom</a>( _bottom )</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  {}</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> };</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_device_context.html"> 443</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a16e9b69846b67b17b2019bfe05d52793">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a5d4bdc4379dbe1b71268d71c5b238250">SetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState) = 0;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#ad5f57343e1bbaf93831af9c0e262866b">TransitionShaderResources</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding) = 0;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a44ccc6a20358df3e3fb93c016eafa938">CommitShaderResources</a>(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, Uint32 Flags) = 0;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#ae85aea7907452cd1444cabc426d497a6">SetStencilRef</a>(Uint32 StencilRef) = 0;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a170779986032fffbc8dc4fa33ff5d0cb">SetBlendFactors</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* pBlendFactors = <span class="keyword">nullptr</span>) = 0;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> </div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="comment">// The vertex buffers must have been created with the Diligent::BIND_VERTEX_BUFFER flag.</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a975090a15be01bff511543459bd9f53e">SetVertexBuffers</a>(Uint32 StartSlot, </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  Uint32 NumBuffersSet, </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffers, </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  Uint32 *pStrides, </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  Uint32 *pOffsets,</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  Uint32 Flags) = 0;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a5c0ab2630bf24514f2de851d1aaef1ab">InvalidateState</a>() = 0;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a829a67ac1a254d2a3128d6fb95e672f5">SetIndexBuffer</a>(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pIndexBuffer, Uint32 ByteOffset) = 0;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a0162de3b063ef851a5ccb72aa03d6cac">SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports, Uint32 RTWidth, Uint32 RTHeight ) = 0;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#ae259f9a476c0dcd8f9081ac1c359f736">SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> *pRects, Uint32 RTWidth, Uint32 RTHeight ) = 0;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> </div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a06aea8d7bc6fd65ab8e4da744092e82f">SetRenderTargets</a>( Uint32 NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *ppRenderTargets[], <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDepthStencil ) = 0;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> </div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a576a47689833f33ba34495f07074fd2a">Draw</a>(<a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> &<a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a>) = 0;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  </div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#aee2248061c09acad37df71b0edf75aa1">DispatchCompute</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html">DispatchComputeAttribs</a> &DispatchAttrs ) = 0;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  </div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a0c3efb4b15c56837a9e252772c222994">ClearDepthStencil</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, Uint32 ClearFlags = <a class="code" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058ba34afbc9a33f86780875da153ca6b2e48">CLEAR_DEPTH_FLAG</a>, <span class="keywordtype">float</span> fDepth = 1.f, Uint8 Stencil = 0 ) = 0;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> </div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a27883957762f2e42f6dba9727a80b777">ClearRenderTarget</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, <span class="keyword">const</span> <span class="keywordtype">float</span> *RGBA = <span class="keyword">nullptr</span> ) = 0;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#abd6004b19e22bc714cedcd4255665cd0">FinishCommandList</a>( <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> **ppCommandList) = 0;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#ae76004ff8d4acebdcbccca079bd5eafb">ExecuteCommandList</a>( <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> *pCommandList) = 0;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a1e57993497faadb4b3d166bc75718412">Flush</a>() = 0;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> </div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> </div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a1e10c0132d064d9b890d9e39ba464c3e">SetSwapChain</a>( <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a> *pSwapChain) = 0;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> };</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> </div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> }</div><div class="ttc" id="namespace_diligent_html_ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869"><div class="ttname"><a href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">Diligent::PRIMITIVE_TOPOLOGY_POINT_LIST</a></div><div class="ttdoc">Interpret the vertex data as a list of points. D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_POINTLIST. OpenGL counterpart: GL_POINTS. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:71</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceCaps.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Constants.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "InputLayout.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "DepthStencilState.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "BlendState.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "CommandList.h"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// {DC92711B-A1BE-4319-B2BD-C662D1CC19E4}</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DeviceContext =</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> { 0xdc92711b, 0xa1be, 0x4319, { 0xb2, 0xbd, 0xc6, 0x62, 0xd1, 0xcc, 0x19, 0xe4 } };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5"> 56</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> : Int32</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543"> 59</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a> = 0,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ae92cbcbf18a66dbe4463436512255d71"> 63</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ae92cbcbf18a66dbe4463436512255d71">PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</a>,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7be4708b91dbb1e86bc0e83bf4f7c3d6"> 67</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7be4708b91dbb1e86bc0e83bf4f7c3d6">PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP</a>,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869"> 71</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">PRIMITIVE_TOPOLOGY_POINT_LIST</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a9cc861405d74774fa3e1dfea46af38f5"> 75</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a9cc861405d74774fa3e1dfea46af38f5">PRIMITIVE_TOPOLOGY_LINE_LIST</a>,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2391ccd64eef53c0afb38a4038ee60e8"> 79</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2391ccd64eef53c0afb38a4038ee60e8">PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa3f5de372e432227935523d3340c31c4"> 83</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa3f5de372e432227935523d3340c31c4">PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ab080bb03f1dd1780108a4f063f912f56"> 87</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ab080bb03f1dd1780108a4f063f912f56">PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca80f744bb8fd1b7dfb7e9c6f30e7226"> 91</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca80f744bb8fd1b7dfb7e9c6f30e7226">PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a143737d74c6d54f6d306e9cfaec5e123"> 95</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a143737d74c6d54f6d306e9cfaec5e123">PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a89e83959864817ded36df88d008a852d"> 99</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a89e83959864817ded36df88d008a852d">PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a40cc9177e4dd6ebfe8af822805ca3a7b"> 103</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a40cc9177e4dd6ebfe8af822805ca3a7b">PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a83efcf6d5e7344bded72e8ab0e4987fe"> 107</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a83efcf6d5e7344bded72e8ab0e4987fe">PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a4773f73683ef10aab0d173184c83fec3"> 111</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a4773f73683ef10aab0d173184c83fec3">PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a338f901ebaf7b1a39bf11df03b46706d"> 115</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a338f901ebaf7b1a39bf11df03b46706d">PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af29f2e03da5da233318e9fe143e56f65"> 119</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af29f2e03da5da233318e9fe143e56f65">PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad5927a7c5890e224061a1b47b2e882a7"> 123</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad5927a7c5890e224061a1b47b2e882a7">PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ade1587aa65e3a045465613b1bed14480"> 127</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ade1587aa65e3a045465613b1bed14480">PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aaff97290dcd0ae400127c49d1c693dd1"> 131</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aaff97290dcd0ae400127c49d1c693dd1">PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca9973c74c8771d563acd96c7ab90220"> 135</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aca9973c74c8771d563acd96c7ab90220">PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a751ea00e3c825f8db30a213956d91d6a"> 139</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a751ea00e3c825f8db30a213956d91d6a">PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5ba5f423fa6a2cb829f3e1f9fe9ef777"> 143</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5ba5f423fa6a2cb829f3e1f9fe9ef777">PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af1631cf630c60572095ed644cf056314"> 147</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5af1631cf630c60572095ed644cf056314">PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7854b9554ef00a17316d63651d99c52b"> 151</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7854b9554ef00a17316d63651d99c52b">PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a54a54ae55e13555e60038b5d1d224410"> 155</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a54a54ae55e13555e60038b5d1d224410">PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aafda4acec32c1420a69b04d9ca98b7b8"> 159</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aafda4acec32c1420a69b04d9ca98b7b8">PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5afe47dcc2bb7023572919fd5422a8493a"> 163</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5afe47dcc2bb7023572919fd5422a8493a">PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a8006e8901a9dbca7bf00db8d9cc711ad"> 167</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a8006e8901a9dbca7bf00db8d9cc711ad">PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a25a7f7a9608c3f78767f2facafa0a58b"> 171</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a25a7f7a9608c3f78767f2facafa0a58b">PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa5fe455cd87a8f5b43f6bc144f9999d6"> 175</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aa5fe455cd87a8f5b43f6bc144f9999d6">PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  </div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad37f9f89d54d3ddcfb1148614d2b544a"> 179</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad37f9f89d54d3ddcfb1148614d2b544a">PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a600ccba949f8fc8d83087b6e5fee313d"> 183</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a600ccba949f8fc8d83087b6e5fee313d">PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5a6323683bea2fbf85d9fbfe4d0c0f72"> 187</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a5a6323683bea2fbf85d9fbfe4d0c0f72">PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2ac786c751b2c89db5ecd320cc9cc15a"> 191</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a2ac786c751b2c89db5ecd320cc9cc15a">PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6a30c15e62e2cf8b568473e3de9f1fc2"> 195</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6a30c15e62e2cf8b568473e3de9f1fc2">PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aefa709253ebb4377a447a123c0cb1ad5"> 199</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aefa709253ebb4377a447a123c0cb1ad5">PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  </div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aadfb69f9081328984e67040484a46d03"> 203</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5aadfb69f9081328984e67040484a46d03">PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST</a>,</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad6da20e017f1d6cd47c8480b2e2d10c7"> 206</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad6da20e017f1d6cd47c8480b2e2d10c7">PRIMITIVE_TOPOLOGY_NUM_TOPOLOGIES</a></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> };</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html"> 212</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> {</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a377ef56a20ed55eea4f7cf908f24797c"> 215</a></span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> <a class="code" href="struct_diligent_1_1_draw_attribs.html#a377ef56a20ed55eea4f7cf908f24797c">Topology</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">union</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#aac1a1696f8dbbbcc612ad6747ceb48de"> 219</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#aac1a1696f8dbbbcc612ad6747ceb48de">NumVertices</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  </div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a6c4d5baa3cbddc16e7ca12eba5823d7b"> 222</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a6c4d5baa3cbddc16e7ca12eba5823d7b">NumIndices</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  };</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a441e328dbf0df16449d1ebaec15f2f3f"> 226</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> <a class="code" href="struct_diligent_1_1_draw_attribs.html#a441e328dbf0df16449d1ebaec15f2f3f">IndexType</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a1cc81bc2d59a429e39da7b84fe51d5c9"> 229</a></span>  Bool <a class="code" href="struct_diligent_1_1_draw_attribs.html#a1cc81bc2d59a429e39da7b84fe51d5c9">IsIndexed</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#afaa7465592245150fcd7edde9f3d769c"> 233</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#afaa7465592245150fcd7edde9f3d769c">NumInstances</a>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#adf7f7c85b3c39454894e93666cc883c2"> 238</a></span>  Bool <a class="code" href="struct_diligent_1_1_draw_attribs.html#adf7f7c85b3c39454894e93666cc883c2">IsIndirect</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a75b6db30ed31a382ebb8de5201001ca4"> 242</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a75b6db30ed31a382ebb8de5201001ca4">BaseVertex</a>; </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a2bffcc70ecb79a93059cccafcc4c5622"> 246</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a2bffcc70ecb79a93059cccafcc4c5622">IndirectDrawArgsOffset</a>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">union</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a0fb46bf99dc79966d25b7f0ff88e7f0b"> 252</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a0fb46bf99dc79966d25b7f0ff88e7f0b">StartVertexLocation</a>; </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a74b73ded24ae0830a35d6558af87a1be"> 256</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a74b73ded24ae0830a35d6558af87a1be">FirstIndexLocation</a>; </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  };</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a6d5ebf96be85c07b868b576586aad8d6"> 260</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_draw_attribs.html#a6d5ebf96be85c07b868b576586aad8d6">FirstInstanceLocation</a>; </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#a7eac52d6bb19de8669c431041bd81867"> 264</a></span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *<a class="code" href="struct_diligent_1_1_draw_attribs.html#a7eac52d6bb19de8669c431041bd81867">pIndirectDrawAttribs</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_draw_attribs.html#ac3a0d636a0ab79514061ee47a526f9de"> 283</a></span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#ac3a0d636a0ab79514061ee47a526f9de">DrawAttribs</a>() : </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a377ef56a20ed55eea4f7cf908f24797c">Topology</a>(<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a>),</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#aac1a1696f8dbbbcc612ad6747ceb48de">NumVertices</a>(0),</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a441e328dbf0df16449d1ebaec15f2f3f">IndexType</a>(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">VT_UNDEFINED</a>),</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a1cc81bc2d59a429e39da7b84fe51d5c9">IsIndexed</a>(False),</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#afaa7465592245150fcd7edde9f3d769c">NumInstances</a>(1),</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#adf7f7c85b3c39454894e93666cc883c2">IsIndirect</a>(False),</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a75b6db30ed31a382ebb8de5201001ca4">BaseVertex</a>(0),</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a2bffcc70ecb79a93059cccafcc4c5622">IndirectDrawArgsOffset</a>(0),</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a0fb46bf99dc79966d25b7f0ff88e7f0b">StartVertexLocation</a>(0),</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a6d5ebf96be85c07b868b576586aad8d6">FirstInstanceLocation</a>(0),</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="struct_diligent_1_1_draw_attribs.html#a7eac52d6bb19de8669c431041bd81867">pIndirectDrawAttribs</a>(nullptr)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {}</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> };</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058b"> 301</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058b">CLEAR_DEPTH_STENCIL_FLAGS</a> : Int32</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> {</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058ba34afbc9a33f86780875da153ca6b2e48"> 303</a></span>  <a class="code" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058ba34afbc9a33f86780875da153ca6b2e48">CLEAR_DEPTH_FLAG</a> = 0x01, </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058ba9f709957bf297f9f5e8ae3e2687302f8"> 304</a></span>  <a class="code" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058ba9f709957bf297f9f5e8ae3e2687302f8">CLEAR_STENCIL_FLAG</a> = 0x02 </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> };</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html"> 312</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html">DispatchComputeAttribs</a></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> {</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad6268495eacc1bdf2ae19538c5937c20"> 314</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad6268495eacc1bdf2ae19538c5937c20">ThreadGroupCountX</a>; </div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#a8e6828a4ff791324c42da5d296dac179"> 315</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a8e6828a4ff791324c42da5d296dac179">ThreadGroupCountY</a>; </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0f7645f8572efd2cdf1a614ac2aca873"> 316</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0f7645f8572efd2cdf1a614ac2aca873">ThreadGroupCountZ</a>; </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#a6a3c601127e18c95e3b326acfca63bc9"> 321</a></span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *<a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a6a3c601127e18c95e3b326acfca63bc9">pIndirectDispatchAttribs</a>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  </div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#a29f5461bf93cbf25387b393dfee41995"> 325</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a29f5461bf93cbf25387b393dfee41995">DispatchArgsByteOffset</a>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  </div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0715c7607a8b2b10cf8bbb13161c1b24"> 332</a></span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0715c7607a8b2b10cf8bbb13161c1b24">DispatchComputeAttribs</a>( Uint32 GroupsX = 1, Uint32 GroupsY = 1, Uint32 GroupsZ = 1 ) : </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad6268495eacc1bdf2ae19538c5937c20">ThreadGroupCountX</a>( GroupsX ),</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a8e6828a4ff791324c42da5d296dac179">ThreadGroupCountY</a>( GroupsY ),</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0f7645f8572efd2cdf1a614ac2aca873">ThreadGroupCountZ</a>( GroupsZ ),</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a6a3c601127e18c95e3b326acfca63bc9">pIndirectDispatchAttribs</a>(nullptr),</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a29f5461bf93cbf25387b393dfee41995">DispatchArgsByteOffset</a>(0)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {}</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad7115af02bba790ba14b1425e430e658"> 345</a></span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad7115af02bba790ba14b1425e430e658">DispatchComputeAttribs</a>( <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pDispatchAttribs, Uint32 Offset = 0 ) :</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#ad6268495eacc1bdf2ae19538c5937c20">ThreadGroupCountX</a>( 0 ),</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a8e6828a4ff791324c42da5d296dac179">ThreadGroupCountY</a>( 0 ),</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a0f7645f8572efd2cdf1a614ac2aca873">ThreadGroupCountZ</a>( 0 ),</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a6a3c601127e18c95e3b326acfca63bc9">pIndirectDispatchAttribs</a>( pDispatchAttribs ),</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html#a29f5461bf93cbf25387b393dfee41995">DispatchArgsByteOffset</a>( Offset )</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {}</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> };</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5720b03558fa0f988caaa3ea82f4f4d2"> 355</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a5720b03558fa0f988caaa3ea82f4f4d2">SET_VERTEX_BUFFERS_FLAGS</a> : Int32</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> {</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5720b03558fa0f988caaa3ea82f4f4d2a9d845821b9a5867760597bb117189aa8"> 359</a></span>  <a class="code" href="namespace_diligent.html#a5720b03558fa0f988caaa3ea82f4f4d2a9d845821b9a5867760597bb117189aa8">SET_VERTEX_BUFFERS_FLAG_RESET</a> = 0x01</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> };</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a83a6318edc132699548ca2ae05374007"> 363</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a83a6318edc132699548ca2ae05374007">COMMIT_SHADER_RESOURCES_FLAG</a></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a83a6318edc132699548ca2ae05374007add49cb7a8581173762b24c89992c544e"> 369</a></span>  <a class="code" href="namespace_diligent.html#a83a6318edc132699548ca2ae05374007add49cb7a8581173762b24c89992c544e">COMMIT_SHADER_RESOURCES_FLAG_TRANSITION_RESOURCES</a> = 0x01</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> };</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html"> 376</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> {</div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a7362f6cfa69acfd6eb6a6471d11f8119"> 379</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#a7362f6cfa69acfd6eb6a6471d11f8119">TopLeftX</a>;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#aa160a6d5d178c0b9cefc64c4e1442103"> 385</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#aa160a6d5d178c0b9cefc64c4e1442103">TopLeftY</a>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a2f96ff65484cd8f703ada0678f32a3e7"> 388</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#a2f96ff65484cd8f703ada0678f32a3e7">Width</a>;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a3bf0bdf2e63f5ddbb39771208714a6fd"> 391</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#a3bf0bdf2e63f5ddbb39771208714a6fd">Height</a>;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a7e6d0e084796700cad042cbf125f9f52"> 394</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#a7e6d0e084796700cad042cbf125f9f52">MinDepth</a>;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a25f90df01dd587cc8ad69cfbf278d8bd"> 397</a></span>  Float32 <a class="code" href="struct_diligent_1_1_viewport.html#a25f90df01dd587cc8ad69cfbf278d8bd">MaxDepth</a>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_viewport.html#a1b94a0a7a166bf2f3bc40982be910b03"> 400</a></span>  <a class="code" href="struct_diligent_1_1_viewport.html#a1b94a0a7a166bf2f3bc40982be910b03">Viewport</a>(Float32 _TopLeftX = 0, Float32 _TopLeftY = 0,</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  Float32 _Width = 0, Float32 _Height = 0,</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  Float32 _MinDepth = 0, Float32 _MaxDepth = 1 )</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  :</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="struct_diligent_1_1_viewport.html#a7362f6cfa69acfd6eb6a6471d11f8119">TopLeftX</a>( _TopLeftX ),</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="struct_diligent_1_1_viewport.html#aa160a6d5d178c0b9cefc64c4e1442103">TopLeftY</a>( _TopLeftY ),</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <a class="code" href="struct_diligent_1_1_viewport.html#a2f96ff65484cd8f703ada0678f32a3e7">Width</a> ( _Width ),</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="struct_diligent_1_1_viewport.html#a3bf0bdf2e63f5ddbb39771208714a6fd">Height</a> ( _Height ),</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <a class="code" href="struct_diligent_1_1_viewport.html#a7e6d0e084796700cad042cbf125f9f52">MinDepth</a>( _MinDepth ),</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="struct_diligent_1_1_viewport.html#a25f90df01dd587cc8ad69cfbf278d8bd">MaxDepth</a>( _MaxDepth )</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  {}</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> };</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html"> 420</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_rect.html">Rect</a></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> {</div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html#a2d66e3061bbee9a029437d24fc430507"> 422</a></span>  Int32 <a class="code" href="struct_diligent_1_1_rect.html#a2d66e3061bbee9a029437d24fc430507">left</a>; </div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html#a2f179f7e304da900265df76803eb9de7"> 423</a></span>  Int32 <a class="code" href="struct_diligent_1_1_rect.html#a2f179f7e304da900265df76803eb9de7">top</a>; </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html#a3b11c8294a274db4109b74a049be1f79"> 424</a></span>  Int32 <a class="code" href="struct_diligent_1_1_rect.html#a3b11c8294a274db4109b74a049be1f79">right</a>; </div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html#a0469c2165ebf1740d7af2f21d73d1416"> 425</a></span>  Int32 <a class="code" href="struct_diligent_1_1_rect.html#a0469c2165ebf1740d7af2f21d73d1416">bottom</a>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rect.html#a4c540951e442bbb310eb6e0e249f08a0"> 428</a></span>  <a class="code" href="struct_diligent_1_1_rect.html#a4c540951e442bbb310eb6e0e249f08a0">Rect</a>( Int32 _left = 0, Int32 _top = 0, Int32 _right = 0, Int32 _bottom = 0 ) : </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <a class="code" href="struct_diligent_1_1_rect.html#a2d66e3061bbee9a029437d24fc430507">left</a> ( _left ),</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="struct_diligent_1_1_rect.html#a2f179f7e304da900265df76803eb9de7">top</a> ( _top ),</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <a class="code" href="struct_diligent_1_1_rect.html#a3b11c8294a274db4109b74a049be1f79">right</a> ( _right ),</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="struct_diligent_1_1_rect.html#a0469c2165ebf1740d7af2f21d73d1416">bottom</a>( _bottom )</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  {}</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> };</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_device_context.html"> 443</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a16e9b69846b67b17b2019bfe05d52793">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a5d4bdc4379dbe1b71268d71c5b238250">SetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState) = 0;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#ad5f57343e1bbaf93831af9c0e262866b">TransitionShaderResources</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding) = 0;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a44ccc6a20358df3e3fb93c016eafa938">CommitShaderResources</a>(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, Uint32 Flags) = 0;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#ae85aea7907452cd1444cabc426d497a6">SetStencilRef</a>(Uint32 StencilRef) = 0;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a170779986032fffbc8dc4fa33ff5d0cb">SetBlendFactors</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* pBlendFactors = <span class="keyword">nullptr</span>) = 0;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> </div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="comment">// The vertex buffers must have been created with the Diligent::BIND_VERTEX_BUFFER flag.</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a975090a15be01bff511543459bd9f53e">SetVertexBuffers</a>(Uint32 StartSlot, </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  Uint32 NumBuffersSet, </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffers, </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  Uint32 *pStrides, </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  Uint32 *pOffsets,</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  Uint32 Flags) = 0;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a5c0ab2630bf24514f2de851d1aaef1ab">InvalidateState</a>() = 0;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  </div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a829a67ac1a254d2a3128d6fb95e672f5">SetIndexBuffer</a>(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pIndexBuffer, Uint32 ByteOffset) = 0;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a0162de3b063ef851a5ccb72aa03d6cac">SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports, Uint32 RTWidth, Uint32 RTHeight ) = 0;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#ae259f9a476c0dcd8f9081ac1c359f736">SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> *pRects, Uint32 RTWidth, Uint32 RTHeight ) = 0;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> </div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a06aea8d7bc6fd65ab8e4da744092e82f">SetRenderTargets</a>( Uint32 NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *ppRenderTargets[], <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDepthStencil ) = 0;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> </div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a576a47689833f33ba34495f07074fd2a">Draw</a>(<a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> &<a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a>) = 0;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  </div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#aee2248061c09acad37df71b0edf75aa1">DispatchCompute</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html">DispatchComputeAttribs</a> &DispatchAttrs ) = 0;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  </div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a0c3efb4b15c56837a9e252772c222994">ClearDepthStencil</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, Uint32 ClearFlags = <a class="code" href="namespace_diligent.html#aafeefaa870f5db1389590baa5d95058ba34afbc9a33f86780875da153ca6b2e48">CLEAR_DEPTH_FLAG</a>, <span class="keywordtype">float</span> fDepth = 1.f, Uint8 Stencil = 0 ) = 0;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> </div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a27883957762f2e42f6dba9727a80b777">ClearRenderTarget</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, <span class="keyword">const</span> <span class="keywordtype">float</span> *RGBA = <span class="keyword">nullptr</span> ) = 0;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#abd6004b19e22bc714cedcd4255665cd0">FinishCommandList</a>( <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> **ppCommandList) = 0;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#ae76004ff8d4acebdcbccca079bd5eafb">ExecuteCommandList</a>( <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> *pCommandList) = 0;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a1e57993497faadb4b3d166bc75718412">Flush</a>() = 0;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> </div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> </div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context.html#a1e10c0132d064d9b890d9e39ba464c3e">SetSwapChain</a>( <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a> *pSwapChain) = 0;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> };</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> </div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> }</div><div class="ttc" id="namespace_diligent_html_ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869"><div class="ttname"><a href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">Diligent::PRIMITIVE_TOPOLOGY_POINT_LIST</a></div><div class="ttdoc">Interpret the vertex data as a list of points. D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_POINTLIST. OpenGL counterpart: GL_POINTS. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:71</div></div> <div class="ttc" id="class_diligent_1_1_i_device_context_html_a829a67ac1a254d2a3128d6fb95e672f5"><div class="ttname"><a href="class_diligent_1_1_i_device_context.html#a829a67ac1a254d2a3128d6fb95e672f5">Diligent::IDeviceContext::SetIndexBuffer</a></div><div class="ttdeci">virtual void SetIndexBuffer(IBuffer *pIndexBuffer, Uint32 ByteOffset)=0</div><div class="ttdoc">Binds an index buffer to the pipeline. </div></div> <div class="ttc" id="class_diligent_1_1_i_device_context_html_ae259f9a476c0dcd8f9081ac1c359f736"><div class="ttname"><a href="class_diligent_1_1_i_device_context.html#ae259f9a476c0dcd8f9081ac1c359f736">Diligent::IDeviceContext::SetScissorRects</a></div><div class="ttdeci">virtual void SetScissorRects(Uint32 NumRects, const Rect *pRects, Uint32 RTWidth, Uint32 RTHeight)=0</div><div class="ttdoc">Sets active scissor rects. </div></div> <div class="ttc" id="class_diligent_1_1_i_device_context_html_ae85aea7907452cd1444cabc426d497a6"><div class="ttname"><a href="class_diligent_1_1_i_device_context.html#ae85aea7907452cd1444cabc426d497a6">Diligent::IDeviceContext::SetStencilRef</a></div><div class="ttdeci">virtual void SetStencilRef(Uint32 StencilRef)=0</div><div class="ttdoc">Sets the stencil reference value. </div></div> @@ -187,7 +187,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_context_base_8h_source.html b/doc/html/_device_context_base_8h_source.html index 1e1403b2..00826832 100644 --- a/doc/html/_device_context_base_8h_source.html +++ b/doc/html/_device_context_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceContextBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Defines.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"># define DEBUG_CHECKS</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_vertex_stream_info.html"> 48</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_vertex_stream_info.html#a2ec47825b3e3ebb2955b87692377c2be"> 51</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IBuffer></a> <a class="code" href="struct_diligent_1_1_vertex_stream_info.html#a2ec47825b3e3ebb2955b87692377c2be">pBuffer</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_vertex_stream_info.html#a1426bf561382713f7849d898f6356d52"> 52</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_vertex_stream_info.html#a1426bf561382713f7849d898f6356d52">Stride</a>; </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_vertex_stream_info.html#ac839eba6e7edb4c22ad6d32e60dc4f58"> 53</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_vertex_stream_info.html#ac839eba6e7edb4c22ad6d32e60dc4f58">Offset</a>; </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a>() :</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="struct_diligent_1_1_vertex_stream_info.html#a1426bf561382713f7849d898f6356d52">Stride</a>( 0 ),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="struct_diligent_1_1_vertex_stream_info.html#ac839eba6e7edb4c22ad6d32e60dc4f58">Offset</a>( 0 )</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {}</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html"> 68</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><BaseInterface></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<BaseInterface></a> <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#af7c00ecd106d7f1f54cbd12d1d1650ff"> 77</a></span>  <a class="code" href="class_diligent_1_1_device_context_base.html#af7c00ecd106d7f1f54cbd12d1d1650ff">DeviceContextBase</a>(IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pRenderDevice, <span class="keywordtype">bool</span> bIsDeferred) :</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>(pRefCounters),</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="class_diligent_1_1_device_context_base.html#aff0d5fdeb9c04c5d428befc53c2f1146">m_pDevice</a>(pRenderDevice),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_bIsDeferred(bIsDeferred)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  ~<a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase</a>()</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_DeviceContext, TObjectBase )</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a78a7051f15d5b0e2b3183fb9bf278adf">SetVertexBuffers</a>( Uint32 StartSlot, Uint32 NumBuffersSet, IBuffer **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> InvalidateState()<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#aa18c2e092f1a91ea09fea19973121f6e">SetPipelineState</a>(IPipelineState *pPipelineState)<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a685f62e1630000359f9dbb7c463c63e4">CommitShaderResources</a>(IShaderResourceBinding *pShaderResourceBinding, Uint32 Flags, <span class="keywordtype">int</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a55dbf6c9f66c76870792d6a81d11a00f">SetIndexBuffer</a>( IBuffer *pIndexBuffer, Uint32 ByteOffset )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a3ae8c0c570fbff02c39ba64464c30407">SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> Viewport *pViewports, Uint32 &RTWidth, Uint32 &RTHeight );</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#ab7c27f76fa2d281da1825fae09492016">SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> Rect *pRects, Uint32 &RTWidth, Uint32 &RTHeight );</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a8fb34f12eb8e06764322ecde447ab856">SetRenderTargets</a>( Uint32 NumRenderTargets, ITextureView *ppRenderTargets[], ITextureView *pDepthStencil, Uint32 Dummy = 0 );</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#abfb91863c108faf725d21930ebed5692"> 116</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#abfb91863c108faf725d21930ebed5692">SetSwapChain</a>( <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a> *pSwapChain )<span class="keyword">override</span> <span class="keyword">final</span> { <a class="code" href="class_diligent_1_1_device_context_base.html#a899f5fa7f6a7ec9e6751b453c8b8fdda">m_pSwapChain</a> = pSwapChain; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#aa5d5e7fcbe239671373c95d324137ac8"> 119</a></span>  <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a> *<a class="code" href="class_diligent_1_1_device_context_base.html#aa5d5e7fcbe239671373c95d324137ac8">GetSwapChain</a>() { <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a899f5fa7f6a7ec9e6751b453c8b8fdda">m_pSwapChain</a>; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#ad481b1a3c896399271cebbc1de487823"> 122</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#ad481b1a3c896399271cebbc1de487823">IsDefaultFBBound</a>(){ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a048f97de19aa98d01a46891ff6ccb086">m_IsDefaultFramebufferBound</a>; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a3dcdfd7d15966142ad2fff187ad791ab">GetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPSO, <span class="keywordtype">float</span>* BlendFactors, Uint32 &StencilRef);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a705e2493b7a829da571d3ccf01a33fe2">GetRenderTargets</a>(Uint32 &NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppRTVs, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppDSV);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a0e811225adb198a1a5fa6a6ffc7c9fb2">GetViewports</a>( Uint32 &NumViewports, <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports );</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a20acb05b7312e1c038fffb10f0db541f"> 134</a></span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *<a class="code" href="class_diligent_1_1_device_context_base.html#a20acb05b7312e1c038fffb10f0db541f">GetDevice</a>(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_device_context_base.html#aff0d5fdeb9c04c5d428befc53c2f1146">m_pDevice</a>;}</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> SetBlendFactors(<span class="keyword">const</span> <span class="keywordtype">float</span> *BlendFactors, <span class="keywordtype">int</span> Dummy);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> SetStencilRef(Uint32 StencilRef, <span class="keywordtype">int</span> Dummy);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a84494604d0f3b7c84abf548509bf6b32">GetRenderTargetSize</a>( Uint32 &RTWidth, Uint32 &RTHeight );</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a775cf0092f0305be7732fe6c1ebfcbd8">ClearStateCache</a>();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#aff0d5fdeb9c04c5d428befc53c2f1146"> 148</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IRenderDevice></a> <a class="code" href="class_diligent_1_1_device_context_base.html#aff0d5fdeb9c04c5d428befc53c2f1146">m_pDevice</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a899f5fa7f6a7ec9e6751b453c8b8fdda"> 152</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<ISwapChain></a> <a class="code" href="class_diligent_1_1_device_context_base.html#a899f5fa7f6a7ec9e6751b453c8b8fdda">m_pSwapChain</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a16bfbd8c1a539868f274b2491561f4a8"> 155</a></span>  <a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a> <a class="code" href="class_diligent_1_1_device_context_base.html#a16bfbd8c1a539868f274b2491561f4a8">m_VertexStreams</a>[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>];</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a3e208cddf1ad782c614c626d6ecae429"> 158</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#a3e208cddf1ad782c614c626d6ecae429">m_NumVertexStreams</a> = 0;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#accdaef46d7edc861895c5616466b68ed"> 161</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IPipelineState></a> <a class="code" href="class_diligent_1_1_device_context_base.html#accdaef46d7edc861895c5616466b68ed">m_pPipelineState</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a086cb68e9fabbee8118793ffc5b3ea8d"> 164</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IBuffer></a> <a class="code" href="class_diligent_1_1_device_context_base.html#a086cb68e9fabbee8118793ffc5b3ea8d">m_pIndexBuffer</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#ad3c624d6156bab29d05458217e8ae060"> 167</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#ad3c624d6156bab29d05458217e8ae060">m_IndexDataStartOffset</a> = 0;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#adff46e5925212c4efb6d0deb35c2eb36"> 170</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#adff46e5925212c4efb6d0deb35c2eb36">m_StencilRef</a> = 0;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#aa85029d7d67a055f1cbc85ec0bc27a60"> 173</a></span>  Float32 <a class="code" href="class_diligent_1_1_device_context_base.html#aa85029d7d67a055f1cbc85ec0bc27a60">m_BlendFactors</a>[4] = { -1, -1, -1, -1 };</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a21fcaf1398ab2d4eb3aadc5b16dc90ae"> 176</a></span>  <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> <a class="code" href="class_diligent_1_1_device_context_base.html#a21fcaf1398ab2d4eb3aadc5b16dc90ae">m_Viewports</a>[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>];</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a19c9b26ce966ce3f6b6b3914cb803fa8"> 178</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#a19c9b26ce966ce3f6b6b3914cb803fa8">m_NumViewports</a> = 0;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a44d5db30d0b829d95d2f58381fb0510c"> 181</a></span>  <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> <a class="code" href="class_diligent_1_1_device_context_base.html#a44d5db30d0b829d95d2f58381fb0510c">m_ScissorRects</a>[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>];</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a0484a882bf170215e299b8046d47a4ef"> 183</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#a0484a882bf170215e299b8046d47a4ef">m_NumScissorRects</a> = 0;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a9792523cd2cc8ec09464e8b8d8771887"> 186</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<ITextureView></a> <a class="code" href="class_diligent_1_1_device_context_base.html#a9792523cd2cc8ec09464e8b8d8771887">m_pBoundRenderTargets</a>[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>];</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#acfa81f8449932663a06862f03d400b2c"> 188</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#acfa81f8449932663a06862f03d400b2c">m_NumBoundRenderTargets</a> = 0;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a048f97de19aa98d01a46891ff6ccb086"> 191</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a048f97de19aa98d01a46891ff6ccb086">m_IsDefaultFramebufferBound</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a3d6d4ed8592e5f9d388c167525201009"> 194</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<ITextureView></a> <a class="code" href="class_diligent_1_1_device_context_base.html#a3d6d4ed8592e5f9d388c167525201009">m_pBoundDepthStencil</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> m_bIsDeferred = <span class="keyword">false</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> };</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a78a7051f15d5b0e2b3183fb9bf278adf"> 201</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a78a7051f15d5b0e2b3183fb9bf278adf">DeviceContextBase<BaseInterface> :: SetVertexBuffers</a>( Uint32 StartSlot, Uint32 NumBuffersSet, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags )</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span>( StartSlot >= <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a> )</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Start vertex buffer slot "</span>, StartSlot, <span class="stringliteral">" is out of allowed range [0, "</span>, <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>-1, <span class="stringliteral">"]."</span> );</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>( StartSlot + NumBuffersSet > <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a> )</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"The range of vertex buffer slots being set ["</span>, StartSlot, <span class="stringliteral">", "</span>, StartSlot + NumBuffersSet - 1, <span class="stringliteral">"] is out of allowed range [0, "</span>, <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a> - 1, <span class="stringliteral">"]."</span> );</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  NumBuffersSet = <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a> - StartSlot;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span>( Flags & <a class="code" href="namespace_diligent.html#a5720b03558fa0f988caaa3ea82f4f4d2a9d845821b9a5867760597bb117189aa8">SET_VERTEX_BUFFERS_FLAG_RESET</a> )</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">for</span>(Uint32 s=0; s < m_NumVertexStreams; ++s)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  m_VertexStreams[s] = <a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a>();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  m_NumVertexStreams = 0;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  m_NumVertexStreams = std::max(m_NumVertexStreams, StartSlot + NumBuffersSet );</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">for</span>( Uint32 Buff = 0; Buff < NumBuffersSet; ++Buff )</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">auto</span> &CurrStream = m_VertexStreams[StartSlot + Buff];</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  CurrStream.pBuffer = <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IBuffer></a>( ppBuffers ? ppBuffers[Buff] : nullptr );</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  CurrStream.Stride = pStrides ? pStrides[Buff] : 0;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  CurrStream.Offset = pOffsets ? pOffsets[Buff] : 0;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor">#ifdef DEBUG_CHECKS</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span>( CurrStream.pBuffer )</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BuffDesc = CurrStream.pBuffer->GetDesc();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span>( !(BuffDesc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c">BIND_VERTEX_BUFFER</a>) )</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Buffer \""</span>, BuffDesc.Name ? BuffDesc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\" being bound as vertex buffer to slot "</span>, Buff,<span class="stringliteral">" was not created with BIND_VERTEX_BUFFER flag"</span> );</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">// Remove null buffers from the end of the array</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">while</span>(m_NumVertexStreams > 0 && !m_VertexStreams[m_NumVertexStreams-1].pBuffer)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_VertexStreams[m_NumVertexStreams--] = <a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a>();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#aa18c2e092f1a91ea09fea19973121f6e"> 246</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#aa18c2e092f1a91ea09fea19973121f6e">DeviceContextBase<BaseInterface> :: SetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_pPipelineState = pPipelineState;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a685f62e1630000359f9dbb7c463c63e4"> 252</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a685f62e1630000359f9dbb7c463c63e4">DeviceContextBase<BaseInterface> :: CommitShaderResources</a>(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, Uint32 Flags, <span class="keywordtype">int</span>)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span> (!m_pPipelineState)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  LOG_ERROR_MESSAGE(<span class="stringliteral">"No pipeline state is bound to the pipeline"</span>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> (pShaderResourceBinding)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keyword">auto</span> *pPSO = pShaderResourceBinding-><a class="code" href="class_diligent_1_1_i_shader_resource_binding.html#ac62372c7b929d065ebc3f73e12c545ea">GetPipelineState</a>();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span> (pPSO != m_pPipelineState)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  LOG_ERROR_MESSAGE(<span class="stringliteral">"Shader resource binding object does not match currently bound pipeline state"</span>);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase<BaseInterface> :: InvalidateState</a>()</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="class_diligent_1_1_device_context_base.html#a775cf0092f0305be7732fe6c1ebfcbd8">DeviceContextBase<BaseInterface> :: ClearStateCache</a>();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_IsDefaultFramebufferBound = <span class="keyword">false</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a55dbf6c9f66c76870792d6a81d11a00f"> 282</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a55dbf6c9f66c76870792d6a81d11a00f">DeviceContextBase<BaseInterface> :: SetIndexBuffer</a>( <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pIndexBuffer, Uint32 ByteOffset )</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  m_pIndexBuffer = pIndexBuffer;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  m_IndexDataStartOffset = ByteOffset;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="preprocessor">#ifdef DEBUG_CHECKS</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BuffDesc = m_pIndexBuffer-><a class="code" href="class_diligent_1_1_i_buffer.html#a7c88d0d7059bea7d530e112579cef1e2">GetDesc</a>();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span>( !(BuffDesc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03">BIND_INDEX_BUFFER</a>) )</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Buffer \""</span>, BuffDesc.Name ? BuffDesc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\" being bound as index buffer was not created with BIND_INDEX_BUFFER flag"</span> );</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a3dcdfd7d15966142ad2fff187ad791ab"> 297</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a3dcdfd7d15966142ad2fff187ad791ab">DeviceContextBase<BaseInterface> :: GetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPSO, <span class="keywordtype">float</span>* BlendFactors, Uint32 &StencilRef)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> { </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  VERIFY( ppPSO != <span class="keyword">nullptr</span>, <span class="stringliteral">"Null pointer provided null"</span> );</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  VERIFY( *ppPSO == <span class="keyword">nullptr</span>, <span class="stringliteral">"Memory address contains a pointer to a non-null blend state"</span> );</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span>(m_pPipelineState)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  m_pPipelineState->QueryInterface( IID_PipelineState, reinterpret_cast<IObject**>( ppPSO ) );</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  *ppPSO = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">for</span>( Uint32 f = 0; f < 4; ++f )</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  BlendFactors[f] = m_BlendFactors[f];</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  StencilRef = m_StencilRef;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> };</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase<BaseInterface> ::SetBlendFactors</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *BlendFactors, <span class="keywordtype">int</span>)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordtype">bool</span> FactorsDiffer = <span class="keyword">false</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">for</span>( Uint32 f = 0; f < 4; ++f )</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">if</span>( m_BlendFactors[f] != BlendFactors[f] )</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  FactorsDiffer = <span class="keyword">true</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  m_BlendFactors[f] = BlendFactors[f];</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return</span> FactorsDiffer;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> DeviceContextBase<BaseInterface> :: SetStencilRef(Uint32 StencilRef, <span class="keywordtype">int</span>)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span> (m_StencilRef != StencilRef)</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  m_StencilRef = StencilRef;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a84494604d0f3b7c84abf548509bf6b32"> 340</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a84494604d0f3b7c84abf548509bf6b32">DeviceContextBase<BaseInterface> :: GetRenderTargetSize</a>( Uint32 &RTWidth, Uint32 &RTHeight )</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  RTWidth = 0;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  RTHeight = 0;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// First, try to find non-null render target </span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">for</span>( Uint32 rt = 0; rt < m_NumBoundRenderTargets; ++rt )</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">if</span>( <span class="keyword">auto</span> *pRTView = m_pBoundRenderTargets[rt].RawPtr() )</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">// Use render target size as viewport size</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keyword">auto</span> *pTex = pRTView->GetTexture();</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">auto</span> MipLevel = pRTView->GetDesc().MostDetailedMip;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &TexDesc = pTex->GetDesc();</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  RTWidth = TexDesc.Width >> MipLevel;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  RTHeight = TexDesc.Height >> MipLevel;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  VERIFY( RTWidth > 0 && RTHeight > 0, <span class="stringliteral">"RT dimension is zero"</span> );</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="comment">// If render target was not found, check depth stencil</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span>( RTWidth == 0 || RTHeight == 0 )</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keyword">auto</span> *pDSView = m_pBoundDepthStencil.RawPtr();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span>( pDSView != <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="comment">// Use depth stencil size</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keyword">auto</span> *pTex = pDSView->GetTexture();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &TexDesc = pTex->GetDesc();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  RTWidth = TexDesc.Width;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  RTHeight = TexDesc.Height;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="comment">// Finally, if no render targets and depth stencil are bound,</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="comment">// use default RT size</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span>( RTWidth == 0 || RTHeight == 0 )</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">if</span> (m_pSwapChain)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &<a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a> = m_pSwapChain->GetDesc();</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  RTWidth = <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  RTHeight = <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  LOG_ERROR(<span class="stringliteral">"Failed to determine default render target size: swap chain is not initialized in the device context"</span>);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a3ae8c0c570fbff02c39ba64464c30407"> 392</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a3ae8c0c570fbff02c39ba64464c30407">DeviceContextBase<BaseInterface> :: SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports, Uint32 &RTWidth, Uint32 &RTHeight )</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span>( RTWidth == 0 || RTHeight == 0 )</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  GetRenderTargetSize( RTWidth, RTHeight );</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  VERIFY(NumViewports < <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, <span class="stringliteral">"Num viewports ("</span>, NumViewports, <span class="stringliteral">") exceeds the limit ("</span>, <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_NumViewports = std::min(<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, NumViewports);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> DefaultVP( 0, 0, static_cast<float>(RTWidth), static_cast<float>(RTHeight) );</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="comment">// If no viewports are specified, use default viewport</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">if</span>( m_NumViewports == 1 && pViewports == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  pViewports = &DefaultVP;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">for</span>( Uint32 vp = 0; vp < m_NumViewports; ++vp )</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  m_Viewports[vp] = pViewports[vp];</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  VERIFY( m_Viewports[vp].Width >= 0, <span class="stringliteral">"Incorrect viewport width ("</span>, m_Viewports[vp].Width, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  VERIFY( m_Viewports[vp].Height >= 0 , <span class="stringliteral">"Incorrect viewport height ("</span>, m_Viewports[vp].Height, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  VERIFY( m_Viewports[vp].MaxDepth >= m_Viewports[vp].MinDepth, <span class="stringliteral">"Incorrect viewport depth range ["</span>, m_Viewports[vp].MinDepth, <span class="stringliteral">", "</span>, m_Viewports[vp].MaxDepth, <span class="stringliteral">"]"</span> );</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a0e811225adb198a1a5fa6a6ffc7c9fb2"> 419</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a0e811225adb198a1a5fa6a6ffc7c9fb2">DeviceContextBase<BaseInterface> :: GetViewports</a>( Uint32 &NumViewports, <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports )</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  NumViewports = m_NumViewports;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span>( pViewports )</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">for</span>( Uint32 vp = 0; vp < m_NumViewports; ++vp )</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  pViewports[vp] = m_Viewports[vp];</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#ab7c27f76fa2d281da1825fae09492016"> 430</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#ab7c27f76fa2d281da1825fae09492016">DeviceContextBase<BaseInterface> :: SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> *pRects, Uint32 &RTWidth, Uint32 &RTHeight )</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span>( RTWidth == 0 || RTHeight == 0 )</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  GetRenderTargetSize( RTWidth, RTHeight );</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  VERIFY(NumRects < <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, <span class="stringliteral">"Num scissor rects ("</span>, NumRects, <span class="stringliteral">") exceeds the limit ("</span>, <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  m_NumScissorRects = std::min(<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, NumRects);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">for</span>( Uint32 sr = 0; sr < m_NumScissorRects; ++sr )</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  m_ScissorRects[sr] = pRects[sr];</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  VERIFY( m_ScissorRects[sr].left <= m_ScissorRects[sr].right, <span class="stringliteral">"Incorrect horizontal bounds for a scissor rect ["</span>, m_ScissorRects[sr].left, <span class="stringliteral">", "</span>, m_ScissorRects[sr].right, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  VERIFY( m_ScissorRects[sr].top <= m_ScissorRects[sr].bottom, <span class="stringliteral">"Incorrect vertical bounds for a scissor rect ["</span>, m_ScissorRects[sr].top, <span class="stringliteral">", "</span>, m_ScissorRects[sr].bottom, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a8fb34f12eb8e06764322ecde447ab856"> 449</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a8fb34f12eb8e06764322ecde447ab856">DeviceContextBase<BaseInterface> :: SetRenderTargets</a>( Uint32 NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *ppRenderTargets[], <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDepthStencil, Uint32 Dummy )</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordtype">bool</span> bBindRenderTargets = <span class="keyword">false</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">if</span>( NumRenderTargets != m_NumBoundRenderTargets )</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  bBindRenderTargets = <span class="keyword">true</span>;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">for</span>(Uint32 rt = NumRenderTargets; rt < m_NumBoundRenderTargets; ++rt )</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  m_pBoundRenderTargets[rt].Release();</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  m_NumBoundRenderTargets = NumRenderTargets;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">for</span>( Uint32 rt = 0; rt < NumRenderTargets; ++rt )</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keyword">auto</span> *pRTView = ppRenderTargets[rt];</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span>( pRTView )</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &ViewDesc = pRTView-><a class="code" href="class_diligent_1_1_i_texture_view.html#adf0698c6f29b61d6bcaffb5537e08bee">GetDesc</a>();</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  VERIFY( ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>, <span class="stringliteral">"Texture view object named \""</span>, ViewDesc.Name ? ViewDesc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\" has incorrect view type ("</span>, GetTexViewTypeLiteralName(ViewDesc.ViewType), <span class="stringliteral">"). Render target view is expected"</span> );</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">// Here both views a certainly live object, since we store</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="comment">// strong references to all bound render targets. So we</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// can safely compare pointers.</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span>( m_pBoundRenderTargets[rt] != pRTView )</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  m_pBoundRenderTargets[rt] = pRTView;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  bBindRenderTargets = <span class="keyword">true</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">if</span>( pDepthStencil )</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &ViewDesc = pDepthStencil-><a class="code" href="class_diligent_1_1_i_texture_view.html#adf0698c6f29b61d6bcaffb5537e08bee">GetDesc</a>();</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  VERIFY( ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>, <span class="stringliteral">"Texture view object named \""</span>, ViewDesc.Name ? ViewDesc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\" has incorrect view type ("</span>, GetTexViewTypeLiteralName(ViewDesc.ViewType), <span class="stringliteral">"). Depth stencil view is expected"</span> );</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">if</span>( m_pBoundDepthStencil != pDepthStencil)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  m_pBoundDepthStencil = pDepthStencil;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  bBindRenderTargets = <span class="keyword">true</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> </div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">if</span> (NumRenderTargets == 0 && pDepthStencil == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">if</span> (!m_IsDefaultFramebufferBound)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  m_IsDefaultFramebufferBound = <span class="keyword">true</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  bBindRenderTargets = <span class="keyword">true</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  m_IsDefaultFramebufferBound = <span class="keyword">false</span>;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> bBindRenderTargets;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a705e2493b7a829da571d3ccf01a33fe2"> 510</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a705e2493b7a829da571d3ccf01a33fe2">DeviceContextBase<BaseInterface> :: GetRenderTargets</a>( Uint32 &NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppRTVs, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppDSV )</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  NumRenderTargets = m_NumBoundRenderTargets;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">if</span>( ppRTVs )</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">for</span>( Uint32 rt = 0; rt < NumRenderTargets; ++rt )</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  VERIFY( ppRTVs[rt] == <span class="keyword">nullptr</span>, <span class="stringliteral">"Non-null pointer found in RTV array element #"</span>, rt );</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keyword">auto</span> pBoundRTV = m_pBoundRenderTargets[rt];</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">if</span>( pBoundRTV )</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  pBoundRTV->QueryInterface( IID_TextureView, reinterpret_cast<IObject**>(ppRTVs + rt) );</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  ppRTVs[rt] = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">for</span>( Uint32 rt = NumRenderTargets; rt < <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>; ++rt )</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  VERIFY( ppRTVs[rt] == <span class="keyword">nullptr</span>, <span class="stringliteral">"Non-null pointer found in RTV array element #"</span>, rt );</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  ppRTVs[rt] = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">if</span>( ppDSV )</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  VERIFY( *ppDSV == <span class="keyword">nullptr</span>, <span class="stringliteral">"Non-null DSV pointer found"</span> );</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">if</span>( m_pBoundDepthStencil )</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  m_pBoundDepthStencil->QueryInterface( IID_TextureView, reinterpret_cast<IObject**>(ppDSV) );</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  *ppDSV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a775cf0092f0305be7732fe6c1ebfcbd8"> 543</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a775cf0092f0305be7732fe6c1ebfcbd8">DeviceContextBase<BaseInterface> :: ClearStateCache</a>()</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">for</span>(Uint32 stream=0; stream < m_NumVertexStreams; ++stream)</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  m_VertexStreams[stream] = <a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a>();</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">for</span>(Uint32 stream=m_NumVertexStreams; stream < _countof(m_VertexStreams); ++stream)</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  VERIFY(m_VertexStreams[stream].pBuffer == <span class="keyword">nullptr</span>, <span class="stringliteral">"Unexpected non-null buffer"</span>);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  VERIFY(m_VertexStreams[stream].Offset == 0, <span class="stringliteral">"Unexpected non-zero offset"</span>);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  VERIFY(m_VertexStreams[stream].Stride == 0, <span class="stringliteral">"Unexpected non-zero stride"</span>);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  m_NumVertexStreams = 0;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  m_pPipelineState.Release();</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  m_pIndexBuffer.Release();</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  m_IndexDataStartOffset = 0;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  m_StencilRef = 0;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 4; ++i )</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  m_BlendFactors[i] = -1;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">for</span>(Uint32 vp=0; vp < m_NumViewports; ++vp)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  m_Viewports[vp] = <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a>();</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  m_NumViewports = 0;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">for</span>(Uint32 sr=0; sr < m_NumScissorRects; ++sr)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  m_ScissorRects[sr] = <a class="code" href="struct_diligent_1_1_rect.html">Rect</a>();</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  m_NumScissorRects = 0;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="comment">// Vector of strong references to bound render targets</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">for</span>(Uint32 rt=0; rt < m_NumBoundRenderTargets; ++rt )</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  m_pBoundRenderTargets[rt].Release();</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">for</span> (Uint32 rt = m_NumBoundRenderTargets; rt < _countof(m_pBoundRenderTargets); ++rt)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  VERIFY(m_pBoundRenderTargets[rt] == <span class="keyword">nullptr</span>, <span class="stringliteral">"Non-null render target found"</span>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  m_NumBoundRenderTargets = 0;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> </div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  m_pBoundDepthStencil.Release();</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> }</div><div class="ttc" id="class_diligent_1_1_device_context_base_html_a8fb34f12eb8e06764322ecde447ab856"><div class="ttname"><a href="class_diligent_1_1_device_context_base.html#a8fb34f12eb8e06764322ecde447ab856">Diligent::DeviceContextBase::SetRenderTargets</a></div><div class="ttdeci">bool SetRenderTargets(Uint32 NumRenderTargets, ITextureView *ppRenderTargets[], ITextureView *pDepthStencil, Uint32 Dummy=0)</div><div class="ttdoc">Caches the render target and depth stencil views. Returns true if any view is different from the cach...</div><div class="ttdef"><b>Definition:</b> DeviceContextBase.h:449</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Defines.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"># define DEBUG_CHECKS</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_vertex_stream_info.html"> 48</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_vertex_stream_info.html#a2ec47825b3e3ebb2955b87692377c2be"> 51</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IBuffer></a> <a class="code" href="struct_diligent_1_1_vertex_stream_info.html#a2ec47825b3e3ebb2955b87692377c2be">pBuffer</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_vertex_stream_info.html#a1426bf561382713f7849d898f6356d52"> 52</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_vertex_stream_info.html#a1426bf561382713f7849d898f6356d52">Stride</a>; </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_vertex_stream_info.html#ac839eba6e7edb4c22ad6d32e60dc4f58"> 53</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_vertex_stream_info.html#ac839eba6e7edb4c22ad6d32e60dc4f58">Offset</a>; </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a>() :</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="struct_diligent_1_1_vertex_stream_info.html#a1426bf561382713f7849d898f6356d52">Stride</a>( 0 ),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="struct_diligent_1_1_vertex_stream_info.html#ac839eba6e7edb4c22ad6d32e60dc4f58">Offset</a>( 0 )</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {}</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html"> 68</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><BaseInterface></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<BaseInterface></a> <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#af7c00ecd106d7f1f54cbd12d1d1650ff"> 77</a></span>  <a class="code" href="class_diligent_1_1_device_context_base.html#af7c00ecd106d7f1f54cbd12d1d1650ff">DeviceContextBase</a>(IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pRenderDevice, <span class="keywordtype">bool</span> bIsDeferred) :</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>(pRefCounters),</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="class_diligent_1_1_device_context_base.html#aff0d5fdeb9c04c5d428befc53c2f1146">m_pDevice</a>(pRenderDevice),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_bIsDeferred(bIsDeferred)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  ~<a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase</a>()</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_DeviceContext, TObjectBase )</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a78a7051f15d5b0e2b3183fb9bf278adf">SetVertexBuffers</a>( Uint32 StartSlot, Uint32 NumBuffersSet, IBuffer **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> InvalidateState()<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#aa18c2e092f1a91ea09fea19973121f6e">SetPipelineState</a>(IPipelineState *pPipelineState)<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a685f62e1630000359f9dbb7c463c63e4">CommitShaderResources</a>(IShaderResourceBinding *pShaderResourceBinding, Uint32 Flags, <span class="keywordtype">int</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a55dbf6c9f66c76870792d6a81d11a00f">SetIndexBuffer</a>( IBuffer *pIndexBuffer, Uint32 ByteOffset )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a3ae8c0c570fbff02c39ba64464c30407">SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> Viewport *pViewports, Uint32 &RTWidth, Uint32 &RTHeight );</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#ab7c27f76fa2d281da1825fae09492016">SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> Rect *pRects, Uint32 &RTWidth, Uint32 &RTHeight );</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a8fb34f12eb8e06764322ecde447ab856">SetRenderTargets</a>( Uint32 NumRenderTargets, ITextureView *ppRenderTargets[], ITextureView *pDepthStencil, Uint32 Dummy = 0 );</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#abfb91863c108faf725d21930ebed5692"> 116</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#abfb91863c108faf725d21930ebed5692">SetSwapChain</a>( <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a> *pSwapChain )<span class="keyword">override</span> <span class="keyword">final</span> { <a class="code" href="class_diligent_1_1_device_context_base.html#a899f5fa7f6a7ec9e6751b453c8b8fdda">m_pSwapChain</a> = pSwapChain; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#aa5d5e7fcbe239671373c95d324137ac8"> 119</a></span>  <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a> *<a class="code" href="class_diligent_1_1_device_context_base.html#aa5d5e7fcbe239671373c95d324137ac8">GetSwapChain</a>() { <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a899f5fa7f6a7ec9e6751b453c8b8fdda">m_pSwapChain</a>; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#ad481b1a3c896399271cebbc1de487823"> 122</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#ad481b1a3c896399271cebbc1de487823">IsDefaultFBBound</a>(){ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a048f97de19aa98d01a46891ff6ccb086">m_IsDefaultFramebufferBound</a>; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a3dcdfd7d15966142ad2fff187ad791ab">GetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPSO, <span class="keywordtype">float</span>* BlendFactors, Uint32 &StencilRef);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a705e2493b7a829da571d3ccf01a33fe2">GetRenderTargets</a>(Uint32 &NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppRTVs, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppDSV);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a0e811225adb198a1a5fa6a6ffc7c9fb2">GetViewports</a>( Uint32 &NumViewports, <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports );</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a20acb05b7312e1c038fffb10f0db541f"> 134</a></span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *<a class="code" href="class_diligent_1_1_device_context_base.html#a20acb05b7312e1c038fffb10f0db541f">GetDevice</a>(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_device_context_base.html#aff0d5fdeb9c04c5d428befc53c2f1146">m_pDevice</a>;}</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> SetBlendFactors(<span class="keyword">const</span> <span class="keywordtype">float</span> *BlendFactors, <span class="keywordtype">int</span> Dummy);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> SetStencilRef(Uint32 StencilRef, <span class="keywordtype">int</span> Dummy);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a84494604d0f3b7c84abf548509bf6b32">GetRenderTargetSize</a>( Uint32 &RTWidth, Uint32 &RTHeight );</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a775cf0092f0305be7732fe6c1ebfcbd8">ClearStateCache</a>();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#aff0d5fdeb9c04c5d428befc53c2f1146"> 148</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IRenderDevice></a> <a class="code" href="class_diligent_1_1_device_context_base.html#aff0d5fdeb9c04c5d428befc53c2f1146">m_pDevice</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a899f5fa7f6a7ec9e6751b453c8b8fdda"> 152</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<ISwapChain></a> <a class="code" href="class_diligent_1_1_device_context_base.html#a899f5fa7f6a7ec9e6751b453c8b8fdda">m_pSwapChain</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a16bfbd8c1a539868f274b2491561f4a8"> 155</a></span>  <a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a> <a class="code" href="class_diligent_1_1_device_context_base.html#a16bfbd8c1a539868f274b2491561f4a8">m_VertexStreams</a>[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>];</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a3e208cddf1ad782c614c626d6ecae429"> 158</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#a3e208cddf1ad782c614c626d6ecae429">m_NumVertexStreams</a> = 0;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#accdaef46d7edc861895c5616466b68ed"> 161</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IPipelineState></a> <a class="code" href="class_diligent_1_1_device_context_base.html#accdaef46d7edc861895c5616466b68ed">m_pPipelineState</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a086cb68e9fabbee8118793ffc5b3ea8d"> 164</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IBuffer></a> <a class="code" href="class_diligent_1_1_device_context_base.html#a086cb68e9fabbee8118793ffc5b3ea8d">m_pIndexBuffer</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#ad3c624d6156bab29d05458217e8ae060"> 167</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#ad3c624d6156bab29d05458217e8ae060">m_IndexDataStartOffset</a> = 0;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#adff46e5925212c4efb6d0deb35c2eb36"> 170</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#adff46e5925212c4efb6d0deb35c2eb36">m_StencilRef</a> = 0;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#aa85029d7d67a055f1cbc85ec0bc27a60"> 173</a></span>  Float32 <a class="code" href="class_diligent_1_1_device_context_base.html#aa85029d7d67a055f1cbc85ec0bc27a60">m_BlendFactors</a>[4] = { -1, -1, -1, -1 };</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a21fcaf1398ab2d4eb3aadc5b16dc90ae"> 176</a></span>  <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> <a class="code" href="class_diligent_1_1_device_context_base.html#a21fcaf1398ab2d4eb3aadc5b16dc90ae">m_Viewports</a>[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>];</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a19c9b26ce966ce3f6b6b3914cb803fa8"> 178</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#a19c9b26ce966ce3f6b6b3914cb803fa8">m_NumViewports</a> = 0;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a44d5db30d0b829d95d2f58381fb0510c"> 181</a></span>  <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> <a class="code" href="class_diligent_1_1_device_context_base.html#a44d5db30d0b829d95d2f58381fb0510c">m_ScissorRects</a>[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>];</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a0484a882bf170215e299b8046d47a4ef"> 183</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#a0484a882bf170215e299b8046d47a4ef">m_NumScissorRects</a> = 0;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a9792523cd2cc8ec09464e8b8d8771887"> 186</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<ITextureView></a> <a class="code" href="class_diligent_1_1_device_context_base.html#a9792523cd2cc8ec09464e8b8d8771887">m_pBoundRenderTargets</a>[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>];</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#acfa81f8449932663a06862f03d400b2c"> 188</a></span>  Uint32 <a class="code" href="class_diligent_1_1_device_context_base.html#acfa81f8449932663a06862f03d400b2c">m_NumBoundRenderTargets</a> = 0;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a048f97de19aa98d01a46891ff6ccb086"> 191</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a048f97de19aa98d01a46891ff6ccb086">m_IsDefaultFramebufferBound</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a3d6d4ed8592e5f9d388c167525201009"> 194</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<ITextureView></a> <a class="code" href="class_diligent_1_1_device_context_base.html#a3d6d4ed8592e5f9d388c167525201009">m_pBoundDepthStencil</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> m_bIsDeferred = <span class="keyword">false</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> };</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a78a7051f15d5b0e2b3183fb9bf278adf"> 201</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a78a7051f15d5b0e2b3183fb9bf278adf">DeviceContextBase<BaseInterface> :: SetVertexBuffers</a>( Uint32 StartSlot, Uint32 NumBuffersSet, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags )</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span>( StartSlot >= <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a> )</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Start vertex buffer slot "</span>, StartSlot, <span class="stringliteral">" is out of allowed range [0, "</span>, <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>-1, <span class="stringliteral">"]."</span> );</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>( StartSlot + NumBuffersSet > <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a> )</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"The range of vertex buffer slots being set ["</span>, StartSlot, <span class="stringliteral">", "</span>, StartSlot + NumBuffersSet - 1, <span class="stringliteral">"] is out of allowed range [0, "</span>, <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a> - 1, <span class="stringliteral">"]."</span> );</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  NumBuffersSet = <a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a> - StartSlot;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span>( Flags & <a class="code" href="namespace_diligent.html#a5720b03558fa0f988caaa3ea82f4f4d2a9d845821b9a5867760597bb117189aa8">SET_VERTEX_BUFFERS_FLAG_RESET</a> )</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">for</span>(Uint32 s=0; s < m_NumVertexStreams; ++s)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  m_VertexStreams[s] = <a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a>();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  m_NumVertexStreams = 0;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  m_NumVertexStreams = std::max(m_NumVertexStreams, StartSlot + NumBuffersSet );</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">for</span>( Uint32 Buff = 0; Buff < NumBuffersSet; ++Buff )</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">auto</span> &CurrStream = m_VertexStreams[StartSlot + Buff];</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  CurrStream.pBuffer = <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IBuffer></a>( ppBuffers ? ppBuffers[Buff] : nullptr );</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  CurrStream.Stride = pStrides ? pStrides[Buff] : 0;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  CurrStream.Offset = pOffsets ? pOffsets[Buff] : 0;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor">#ifdef DEBUG_CHECKS</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span>( CurrStream.pBuffer )</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BuffDesc = CurrStream.pBuffer->GetDesc();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span>( !(BuffDesc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c">BIND_VERTEX_BUFFER</a>) )</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Buffer \""</span>, BuffDesc.Name ? BuffDesc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\" being bound as vertex buffer to slot "</span>, Buff,<span class="stringliteral">" was not created with BIND_VERTEX_BUFFER flag"</span> );</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">// Remove null buffers from the end of the array</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">while</span>(m_NumVertexStreams > 0 && !m_VertexStreams[m_NumVertexStreams-1].pBuffer)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_VertexStreams[m_NumVertexStreams--] = <a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a>();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#aa18c2e092f1a91ea09fea19973121f6e"> 246</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#aa18c2e092f1a91ea09fea19973121f6e">DeviceContextBase<BaseInterface> :: SetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_pPipelineState = pPipelineState;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a685f62e1630000359f9dbb7c463c63e4"> 252</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a685f62e1630000359f9dbb7c463c63e4">DeviceContextBase<BaseInterface> :: CommitShaderResources</a>(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, Uint32 Flags, <span class="keywordtype">int</span>)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span> (!m_pPipelineState)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  LOG_ERROR_MESSAGE(<span class="stringliteral">"No pipeline state is bound to the pipeline"</span>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> (pShaderResourceBinding)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keyword">auto</span> *pPSO = pShaderResourceBinding-><a class="code" href="class_diligent_1_1_i_shader_resource_binding.html#ac62372c7b929d065ebc3f73e12c545ea">GetPipelineState</a>();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span> (pPSO != m_pPipelineState)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  LOG_ERROR_MESSAGE(<span class="stringliteral">"Shader resource binding object does not match currently bound pipeline state"</span>);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase<BaseInterface> :: InvalidateState</a>()</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="class_diligent_1_1_device_context_base.html#a775cf0092f0305be7732fe6c1ebfcbd8">DeviceContextBase<BaseInterface> :: ClearStateCache</a>();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_IsDefaultFramebufferBound = <span class="keyword">false</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a55dbf6c9f66c76870792d6a81d11a00f"> 282</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a55dbf6c9f66c76870792d6a81d11a00f">DeviceContextBase<BaseInterface> :: SetIndexBuffer</a>( <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pIndexBuffer, Uint32 ByteOffset )</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  m_pIndexBuffer = pIndexBuffer;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  m_IndexDataStartOffset = ByteOffset;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="preprocessor">#ifdef DEBUG_CHECKS</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BuffDesc = m_pIndexBuffer-><a class="code" href="class_diligent_1_1_i_buffer.html#a7c88d0d7059bea7d530e112579cef1e2">GetDesc</a>();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span>( !(BuffDesc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03">BIND_INDEX_BUFFER</a>) )</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Buffer \""</span>, BuffDesc.Name ? BuffDesc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\" being bound as index buffer was not created with BIND_INDEX_BUFFER flag"</span> );</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a3dcdfd7d15966142ad2fff187ad791ab"> 297</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a3dcdfd7d15966142ad2fff187ad791ab">DeviceContextBase<BaseInterface> :: GetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPSO, <span class="keywordtype">float</span>* BlendFactors, Uint32 &StencilRef)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> { </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  VERIFY( ppPSO != <span class="keyword">nullptr</span>, <span class="stringliteral">"Null pointer provided null"</span> );</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  VERIFY( *ppPSO == <span class="keyword">nullptr</span>, <span class="stringliteral">"Memory address contains a pointer to a non-null blend state"</span> );</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span>(m_pPipelineState)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  m_pPipelineState->QueryInterface( IID_PipelineState, reinterpret_cast<IObject**>( ppPSO ) );</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  *ppPSO = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">for</span>( Uint32 f = 0; f < 4; ++f )</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  BlendFactors[f] = m_BlendFactors[f];</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  StencilRef = m_StencilRef;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> };</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase<BaseInterface> ::SetBlendFactors</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> *BlendFactors, <span class="keywordtype">int</span>)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordtype">bool</span> FactorsDiffer = <span class="keyword">false</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">for</span>( Uint32 f = 0; f < 4; ++f )</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">if</span>( m_BlendFactors[f] != BlendFactors[f] )</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  FactorsDiffer = <span class="keyword">true</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  m_BlendFactors[f] = BlendFactors[f];</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return</span> FactorsDiffer;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> DeviceContextBase<BaseInterface> :: SetStencilRef(Uint32 StencilRef, <span class="keywordtype">int</span>)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span> (m_StencilRef != StencilRef)</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  m_StencilRef = StencilRef;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a84494604d0f3b7c84abf548509bf6b32"> 340</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a84494604d0f3b7c84abf548509bf6b32">DeviceContextBase<BaseInterface> :: GetRenderTargetSize</a>( Uint32 &RTWidth, Uint32 &RTHeight )</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  RTWidth = 0;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  RTHeight = 0;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// First, try to find non-null render target </span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">for</span>( Uint32 rt = 0; rt < m_NumBoundRenderTargets; ++rt )</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">if</span>( <span class="keyword">auto</span> *pRTView = m_pBoundRenderTargets[rt].RawPtr() )</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">// Use render target size as viewport size</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keyword">auto</span> *pTex = pRTView->GetTexture();</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">auto</span> MipLevel = pRTView->GetDesc().MostDetailedMip;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &TexDesc = pTex->GetDesc();</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  RTWidth = TexDesc.Width >> MipLevel;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  RTHeight = TexDesc.Height >> MipLevel;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  VERIFY( RTWidth > 0 && RTHeight > 0, <span class="stringliteral">"RT dimension is zero"</span> );</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="comment">// If render target was not found, check depth stencil</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span>( RTWidth == 0 || RTHeight == 0 )</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keyword">auto</span> *pDSView = m_pBoundDepthStencil.RawPtr();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span>( pDSView != <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="comment">// Use depth stencil size</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keyword">auto</span> *pTex = pDSView->GetTexture();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &TexDesc = pTex->GetDesc();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  RTWidth = TexDesc.Width;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  RTHeight = TexDesc.Height;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="comment">// Finally, if no render targets and depth stencil are bound,</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="comment">// use default RT size</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span>( RTWidth == 0 || RTHeight == 0 )</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">if</span> (m_pSwapChain)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &<a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a> = m_pSwapChain->GetDesc();</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  RTWidth = <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  RTHeight = <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  LOG_ERROR(<span class="stringliteral">"Failed to determine default render target size: swap chain is not initialized in the device context"</span>);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a3ae8c0c570fbff02c39ba64464c30407"> 392</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a3ae8c0c570fbff02c39ba64464c30407">DeviceContextBase<BaseInterface> :: SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports, Uint32 &RTWidth, Uint32 &RTHeight )</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span>( RTWidth == 0 || RTHeight == 0 )</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  GetRenderTargetSize( RTWidth, RTHeight );</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  VERIFY(NumViewports < <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, <span class="stringliteral">"Num viewports ("</span>, NumViewports, <span class="stringliteral">") exceeds the limit ("</span>, <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_NumViewports = std::min(<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, NumViewports);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> DefaultVP( 0, 0, static_cast<float>(RTWidth), static_cast<float>(RTHeight) );</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="comment">// If no viewports are specified, use default viewport</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">if</span>( m_NumViewports == 1 && pViewports == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  pViewports = &DefaultVP;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">for</span>( Uint32 vp = 0; vp < m_NumViewports; ++vp )</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  m_Viewports[vp] = pViewports[vp];</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  VERIFY( m_Viewports[vp].Width >= 0, <span class="stringliteral">"Incorrect viewport width ("</span>, m_Viewports[vp].Width, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  VERIFY( m_Viewports[vp].Height >= 0 , <span class="stringliteral">"Incorrect viewport height ("</span>, m_Viewports[vp].Height, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  VERIFY( m_Viewports[vp].MaxDepth >= m_Viewports[vp].MinDepth, <span class="stringliteral">"Incorrect viewport depth range ["</span>, m_Viewports[vp].MinDepth, <span class="stringliteral">", "</span>, m_Viewports[vp].MaxDepth, <span class="stringliteral">"]"</span> );</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a0e811225adb198a1a5fa6a6ffc7c9fb2"> 419</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a0e811225adb198a1a5fa6a6ffc7c9fb2">DeviceContextBase<BaseInterface> :: GetViewports</a>( Uint32 &NumViewports, <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports )</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  NumViewports = m_NumViewports;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span>( pViewports )</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">for</span>( Uint32 vp = 0; vp < m_NumViewports; ++vp )</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  pViewports[vp] = m_Viewports[vp];</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#ab7c27f76fa2d281da1825fae09492016"> 430</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#ab7c27f76fa2d281da1825fae09492016">DeviceContextBase<BaseInterface> :: SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> *pRects, Uint32 &RTWidth, Uint32 &RTHeight )</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span>( RTWidth == 0 || RTHeight == 0 )</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  GetRenderTargetSize( RTWidth, RTHeight );</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  VERIFY(NumRects < <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, <span class="stringliteral">"Num scissor rects ("</span>, NumRects, <span class="stringliteral">") exceeds the limit ("</span>, <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  m_NumScissorRects = std::min(<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>, NumRects);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">for</span>( Uint32 sr = 0; sr < m_NumScissorRects; ++sr )</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  m_ScissorRects[sr] = pRects[sr];</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  VERIFY( m_ScissorRects[sr].left <= m_ScissorRects[sr].right, <span class="stringliteral">"Incorrect horizontal bounds for a scissor rect ["</span>, m_ScissorRects[sr].left, <span class="stringliteral">", "</span>, m_ScissorRects[sr].right, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  VERIFY( m_ScissorRects[sr].top <= m_ScissorRects[sr].bottom, <span class="stringliteral">"Incorrect vertical bounds for a scissor rect ["</span>, m_ScissorRects[sr].top, <span class="stringliteral">", "</span>, m_ScissorRects[sr].bottom, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a8fb34f12eb8e06764322ecde447ab856"> 449</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a8fb34f12eb8e06764322ecde447ab856">DeviceContextBase<BaseInterface> :: SetRenderTargets</a>( Uint32 NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *ppRenderTargets[], <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDepthStencil, Uint32 Dummy )</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordtype">bool</span> bBindRenderTargets = <span class="keyword">false</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">if</span>( NumRenderTargets != m_NumBoundRenderTargets )</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  bBindRenderTargets = <span class="keyword">true</span>;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">for</span>(Uint32 rt = NumRenderTargets; rt < m_NumBoundRenderTargets; ++rt )</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  m_pBoundRenderTargets[rt].Release();</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  m_NumBoundRenderTargets = NumRenderTargets;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">for</span>( Uint32 rt = 0; rt < NumRenderTargets; ++rt )</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keyword">auto</span> *pRTView = ppRenderTargets[rt];</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span>( pRTView )</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &ViewDesc = pRTView-><a class="code" href="class_diligent_1_1_i_texture_view.html#adf0698c6f29b61d6bcaffb5537e08bee">GetDesc</a>();</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  VERIFY( ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>, <span class="stringliteral">"Texture view object named \""</span>, ViewDesc.Name ? ViewDesc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\" has incorrect view type ("</span>, GetTexViewTypeLiteralName(ViewDesc.ViewType), <span class="stringliteral">"). Render target view is expected"</span> );</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">// Here both views a certainly live object, since we store</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="comment">// strong references to all bound render targets. So we</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// can safely compare pointers.</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span>( m_pBoundRenderTargets[rt] != pRTView )</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  m_pBoundRenderTargets[rt] = pRTView;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  bBindRenderTargets = <span class="keyword">true</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">if</span>( pDepthStencil )</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &ViewDesc = pDepthStencil-><a class="code" href="class_diligent_1_1_i_texture_view.html#adf0698c6f29b61d6bcaffb5537e08bee">GetDesc</a>();</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  VERIFY( ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>, <span class="stringliteral">"Texture view object named \""</span>, ViewDesc.Name ? ViewDesc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\" has incorrect view type ("</span>, GetTexViewTypeLiteralName(ViewDesc.ViewType), <span class="stringliteral">"). Depth stencil view is expected"</span> );</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">if</span>( m_pBoundDepthStencil != pDepthStencil)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  m_pBoundDepthStencil = pDepthStencil;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  bBindRenderTargets = <span class="keyword">true</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> </div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">if</span> (NumRenderTargets == 0 && pDepthStencil == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">if</span> (!m_IsDefaultFramebufferBound)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  m_IsDefaultFramebufferBound = <span class="keyword">true</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  bBindRenderTargets = <span class="keyword">true</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  m_IsDefaultFramebufferBound = <span class="keyword">false</span>;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> bBindRenderTargets;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a705e2493b7a829da571d3ccf01a33fe2"> 510</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a705e2493b7a829da571d3ccf01a33fe2">DeviceContextBase<BaseInterface> :: GetRenderTargets</a>( Uint32 &NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppRTVs, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppDSV )</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  NumRenderTargets = m_NumBoundRenderTargets;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">if</span>( ppRTVs )</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">for</span>( Uint32 rt = 0; rt < NumRenderTargets; ++rt )</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  VERIFY( ppRTVs[rt] == <span class="keyword">nullptr</span>, <span class="stringliteral">"Non-null pointer found in RTV array element #"</span>, rt );</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keyword">auto</span> pBoundRTV = m_pBoundRenderTargets[rt];</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">if</span>( pBoundRTV )</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  pBoundRTV->QueryInterface( IID_TextureView, reinterpret_cast<IObject**>(ppRTVs + rt) );</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  ppRTVs[rt] = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">for</span>( Uint32 rt = NumRenderTargets; rt < <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>; ++rt )</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  VERIFY( ppRTVs[rt] == <span class="keyword">nullptr</span>, <span class="stringliteral">"Non-null pointer found in RTV array element #"</span>, rt );</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  ppRTVs[rt] = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">if</span>( ppDSV )</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  VERIFY( *ppDSV == <span class="keyword">nullptr</span>, <span class="stringliteral">"Non-null DSV pointer found"</span> );</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">if</span>( m_pBoundDepthStencil )</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  m_pBoundDepthStencil->QueryInterface( IID_TextureView, reinterpret_cast<IObject**>(ppDSV) );</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  *ppDSV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_base.html#a775cf0092f0305be7732fe6c1ebfcbd8"> 543</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_base.html#a775cf0092f0305be7732fe6c1ebfcbd8">DeviceContextBase<BaseInterface> :: ClearStateCache</a>()</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">for</span>(Uint32 stream=0; stream < m_NumVertexStreams; ++stream)</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  m_VertexStreams[stream] = <a class="code" href="struct_diligent_1_1_vertex_stream_info.html">VertexStreamInfo</a>();</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">for</span>(Uint32 stream=m_NumVertexStreams; stream < _countof(m_VertexStreams); ++stream)</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  VERIFY(m_VertexStreams[stream].pBuffer == <span class="keyword">nullptr</span>, <span class="stringliteral">"Unexpected non-null buffer"</span>);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  VERIFY(m_VertexStreams[stream].Offset == 0, <span class="stringliteral">"Unexpected non-zero offset"</span>);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  VERIFY(m_VertexStreams[stream].Stride == 0, <span class="stringliteral">"Unexpected non-zero stride"</span>);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  m_NumVertexStreams = 0;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  m_pPipelineState.Release();</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  m_pIndexBuffer.Release();</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  m_IndexDataStartOffset = 0;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  m_StencilRef = 0;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < 4; ++i )</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  m_BlendFactors[i] = -1;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">for</span>(Uint32 vp=0; vp < m_NumViewports; ++vp)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  m_Viewports[vp] = <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a>();</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  m_NumViewports = 0;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">for</span>(Uint32 sr=0; sr < m_NumScissorRects; ++sr)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  m_ScissorRects[sr] = <a class="code" href="struct_diligent_1_1_rect.html">Rect</a>();</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  m_NumScissorRects = 0;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="comment">// Vector of strong references to bound render targets</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">for</span>(Uint32 rt=0; rt < m_NumBoundRenderTargets; ++rt )</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  m_pBoundRenderTargets[rt].Release();</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">for</span> (Uint32 rt = m_NumBoundRenderTargets; rt < _countof(m_pBoundRenderTargets); ++rt)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  VERIFY(m_pBoundRenderTargets[rt] == <span class="keyword">nullptr</span>, <span class="stringliteral">"Non-null render target found"</span>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  m_NumBoundRenderTargets = 0;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> </div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  m_pBoundDepthStencil.Release();</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> }</div><div class="ttc" id="class_diligent_1_1_device_context_base_html_a8fb34f12eb8e06764322ecde447ab856"><div class="ttname"><a href="class_diligent_1_1_device_context_base.html#a8fb34f12eb8e06764322ecde447ab856">Diligent::DeviceContextBase::SetRenderTargets</a></div><div class="ttdeci">bool SetRenderTargets(Uint32 NumRenderTargets, ITextureView *ppRenderTargets[], ITextureView *pDepthStencil, Uint32 Dummy=0)</div><div class="ttdoc">Caches the render target and depth stencil views. Returns true if any view is different from the cach...</div><div class="ttdef"><b>Definition:</b> DeviceContextBase.h:449</div></div> <div class="ttc" id="class_diligent_1_1_device_context_base_html_a19c9b26ce966ce3f6b6b3914cb803fa8"><div class="ttname"><a href="class_diligent_1_1_device_context_base.html#a19c9b26ce966ce3f6b6b3914cb803fa8">Diligent::DeviceContextBase::m_NumViewports</a></div><div class="ttdeci">Uint32 m_NumViewports</div><div class="ttdoc">Number of current viewports. </div><div class="ttdef"><b>Definition:</b> DeviceContextBase.h:178</div></div> <div class="ttc" id="namespace_diligent_html_a9d3d207f6d44cb2988a2748e4dc97722"><div class="ttname"><a href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">Diligent::MaxBufferSlots</a></div><div class="ttdeci">static constexpr Uint32 MaxBufferSlots</div><div class="ttdoc">Maximum number of input buffer slots. D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT == 32...</div><div class="ttdef"><b>Definition:</b> Constants.h:33</div></div> <div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> @@ -137,7 +137,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_context_d3_d11_8h_source.html b/doc/html/_device_context_d3_d11_8h_source.html index e14c6998..b253f8d5 100644 --- a/doc/html/_device_context_d3_d11_8h_source.html +++ b/doc/html/_device_context_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceContextD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {F0EE0335-C8AB-4EC1-BB15-B8EE5F003B99}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DeviceContextD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xf0ee0335, 0xc8ab, 0x4ec1, { 0xbb, 0x15, 0xb8, 0xee, 0x5f, 0x0, 0x3b, 0x99 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_device_context_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_device_context_d3_d11.html">IDeviceContextD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11DeviceContext* <a class="code" href="class_diligent_1_1_i_device_context_d3_d11.html#ace085a323a2fba05661212b424288962">GetD3D11DeviceContext</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {F0EE0335-C8AB-4EC1-BB15-B8EE5F003B99}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DeviceContextD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xf0ee0335, 0xc8ab, 0x4ec1, { 0xbb, 0x15, 0xb8, 0xee, 0x5f, 0x0, 0x3b, 0x99 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_device_context_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_device_context_d3_d11.html">IDeviceContextD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11DeviceContext* <a class="code" href="class_diligent_1_1_i_device_context_d3_d11.html#ace085a323a2fba05661212b424288962">GetD3D11DeviceContext</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_device_context_html"><div class="ttname"><a href="class_diligent_1_1_i_device_context.html">Diligent::IDeviceContext</a></div><div class="ttdoc">Device context interface. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:443</div></div> <div class="ttc" id="class_diligent_1_1_i_device_context_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_i_device_context_d3_d11.html">Diligent::IDeviceContextD3D11</a></div><div class="ttdoc">Interface to the device context object implemented in D3D11. </div><div class="ttdef"><b>Definition:</b> DeviceContextD3D11.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_device_context_d3_d11_html_ace085a323a2fba05661212b424288962"><div class="ttname"><a href="class_diligent_1_1_i_device_context_d3_d11.html#ace085a323a2fba05661212b424288962">Diligent::IDeviceContextD3D11::GetD3D11DeviceContext</a></div><div class="ttdeci">virtual ID3D11DeviceContext * GetD3D11DeviceContext()=0</div><div class="ttdoc">Returns a pointer to the ID3D11DeviceContext interface of the internal Direct3D11 object...</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_context_d3_d11_impl_8h_source.html b/doc/html/_device_context_d3_d11_impl_8h_source.html index 682e3f2a..eb3b4975 100644 --- a/doc/html/_device_context_d3_d11_impl_8h_source.html +++ b/doc/html/_device_context_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceContextD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContextD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceContextBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderD3D11Impl.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor"># define VERIFY_CONTEXT_BINDINGS</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_d3_d11_impl.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html">DeviceContextD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase</a><IDeviceContextD3D11></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase<IDeviceContextD3D11></a> <a class="code" href="class_diligent_1_1_device_context_base.html">TDeviceContextBase</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html">DeviceContextD3D11Impl</a>(IReferenceCounters *pRefCounters, IMemoryAllocator &Allocator, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, ID3D11DeviceContext *pd3d11DeviceContext, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html">EngineD3D11Attribs</a> &EngineAttribs, <span class="keywordtype">bool</span> bIsDeferred);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a7e7452e18ba0722adbec6664d4df094e">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a9bd8e3b1e8877e8488c5fa41836df4b3">SetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a50154dc4fbd19504c8e05e929bf8fa8c">TransitionShaderResources</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#abbd0e2473b6222fc74c70ed5583b590e">CommitShaderResources</a>(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, Uint32 Flags)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#adb8322c16cd68def2cdbd9f53209d4a0">SetStencilRef</a>(Uint32 StencilRef)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#af5b5a0d8d2932ee79a6c5cd04fa3a202">SetBlendFactors</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* pBlendFactors = <span class="keyword">nullptr</span>)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#abfd53c39cbd1a77d19951664167dae2b">SetVertexBuffers</a>( Uint32 StartSlot, Uint32 NumBuffersSet, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a68d73ef2e9c725cefe31b9ac5dafd1ea">InvalidateState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a79db72bbef487409f46449b77f6ce6ed">SetIndexBuffer</a>( <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pIndexBuffer, Uint32 ByteOffset )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a180ba0fb6b5468365d05f16fa9405800">SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#ae23752e1818111e2bf036d44888ab840">SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> *pRects, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#ab0321f1d70ecd6cb01ee546579f3c5cc">SetRenderTargets</a>( Uint32 NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *ppRenderTargets[], <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDepthStencil )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a5f369996a8f2ea086a825e00dd1b4a66">Draw</a>( <a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> &<a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a0ab7354311291001bec3006c3e423ab4">DispatchCompute</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html">DispatchComputeAttribs</a> &DispatchAttrs )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a5175c43149f984dd3bebf6b421e39bea">ClearDepthStencil</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, Uint32 ClearFlags, <span class="keywordtype">float</span> fDepth, Uint8 Stencil)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a38a49a11bff991901c6d2efe8e02502e">ClearRenderTarget</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, <span class="keyword">const</span> <span class="keywordtype">float</span> *RGBA )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#ac93002b69130999931670f9612304aa0">Flush</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a0e1ff0f0f25a94bcac5848281e17ae17">FinishCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> **ppCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a6ff0d691eca9b6c70a7994d3bac49702">ExecuteCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> *pCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_d3_d11_impl.html#a7a4893c7d2b02864121a803969d54956"> 85</a></span>  ID3D11DeviceContext* <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a7a4893c7d2b02864121a803969d54956">GetD3D11DeviceContext</a>(){ <span class="keywordflow">return</span> m_pd3d11DeviceContext; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> CommitRenderTargets();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a87af9339883e1e50384508dc0a097a8f">ReleaseCommittedShaderResources</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16"> 98</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a> = 6;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">void</span> CommitD3D11IndexBuffer(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> IndexType);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">void</span> CommitD3D11VertexBuffers(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html">PipelineStateD3D11Impl</a> *pPipelineStateD3D11);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TD3D11ResourceViewType,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">typename</span> TSetD3D11View,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordtype">size_t</span> NumSlots></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">void</span> UnbindResourceView(TD3D11ResourceViewType CommittedD3D11ViewsArr[][NumSlots], </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  ID3D11Resource* CommittedD3D11ResourcesArr[][NumSlots], </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  Uint8 NumCommittedResourcesArr[],</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pResToUnbind,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  ID3D11Resource *pd3d11ResToUndind,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  TSetD3D11View SetD3D11ViewMethods[]);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> UnbindTextureFromInput(<a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a> *pTexture, ID3D11Resource *pd3d11Resource);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">void</span> UnbindBufferFromInput(<a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a> *pBuffer, ID3D11Resource *pd3d11Buffer);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">void</span> UnbindResourceFromUAV(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pResource, ID3D11Resource *pd3d11Resource);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">void</span> UnbindTextureFromRenderTarget(<a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a> *pResource);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordtype">void</span> UnbindTextureFromDepthStencil(<a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a> *pTexD3D11);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">template</span><<span class="keywordtype">bool</span> TransitionResources,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">bool</span> CommitResources></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">void</span> TransitionAndCommitShaderResources(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPSO, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">void</span> ClearStateCache();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  CComPtr<ID3D11DeviceContext> m_pd3d11DeviceContext; </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  ID3D11Buffer* m_CommittedD3D11CBs [<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT];</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  ID3D11ShaderResourceView* m_CommittedD3D11SRVs [<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT];</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  ID3D11SamplerState* m_CommittedD3D11Samplers[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT];</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  ID3D11UnorderedAccessView* m_CommittedD3D11UAVs [<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_PS_CS_UAV_REGISTER_COUNT];</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  ID3D11Resource* m_CommittedD3D11SRVResources [<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT];</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  ID3D11Resource* m_CommittedD3D11UAVResources [<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_PS_CS_UAV_REGISTER_COUNT];</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  Uint8 m_NumCommittedCBs[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>] = {};</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  Uint8 m_NumCommittedSRVs[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>]= {};</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  Uint8 m_NumCommittedSamplers[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>]= {};</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  Uint8 m_NumCommittedUAVs[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>]= {};</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  ID3D11Buffer* m_CommittedD3D11VertexBuffers[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>] = {};</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  UINT m_CommittedD3D11VBStrides[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>];</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  UINT m_CommittedD3D11VBOffsets[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>];</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  UINT m_NumCommittedD3D11VBs;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordtype">bool</span> m_bCommittedD3D11VBsUpToDate = <span class="keyword">false</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  ID3D11InputLayout *m_CommittedD3D11InputLayout = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  CComPtr<ID3D11Buffer> m_CommittedD3D11IndexBuffer;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> m_CommittedIBFormat;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  Uint32 m_CommittedD3D11IndexDataStartOffset;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordtype">bool</span> m_bCommittedD3D11IBUpToDate = <span class="keyword">false</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  D3D11_PRIMITIVE_TOPOLOGY m_CommittedD3D11PrimTopology = D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> m_CommittedPrimitiveTopology = <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  CComPtr<ID3D11DeviceChild> m_CommittedD3DShaders[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>];</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  Uint32 m_DebugFlags;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  FixedBlockMemoryAllocator m_CmdListAllocator;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor">#ifdef VERIFY_CONTEXT_BINDINGS</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">void</span> dbgVerifyRenderTargetFormats();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keyword">template</span><UINT MaxResources, <span class="keyword">typename</span> TD3D11ResourceType, <span class="keyword">typename</span> TGetD3D11ResourcesType></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordtype">void</span> dbgVerifyCommittedResources(TD3D11ResourceType CommittedD3D11ResourcesArr[][MaxResources],</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  Uint8 NumCommittedResourcesArr[],</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  TGetD3D11ResourcesType GetD3D11ResMethods[],</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keyword">const</span> Char *ResourceName,</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keyword">template</span><UINT MaxResources, <span class="keyword">typename</span> TD3D11ViewType></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordtype">void</span> dbgVerifyViewConsistency(TD3D11ViewType CommittedD3D11ViewArr[][MaxResources],</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  ID3D11Resource* CommittedD3D11ResourcesArr[][MaxResources],</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  Uint8 NumCommittedResourcesArr[],</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">const</span> Char *ResourceName,</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">void</span> dbgVerifyCommittedSRVs(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordtype">void</span> dbgVerifyCommittedUAVs(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordtype">void</span> dbgVerifyCommittedSamplers(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">void</span> dbgVerifyCommittedCBs(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">void</span> dbgVerifyCommittedIndexBuffer();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordtype">void</span> dbgVerifyCommittedVertexBuffers();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordtype">void</span> dbgVerifyCommittedShaders();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor"> #define dbgVerifyRenderTargetFormats(...)</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor"> #define dbgVerifyCommittedSRVs(...)</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor"> #define dbgVerifyCommittedUAVs(...)</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor"> #define dbgVerifyCommittedSamplers(...)</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor"> #define dbgVerifyCommittedCBs(...)</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="preprocessor"> #define dbgVerifyCommittedIndexBuffer(...)</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="preprocessor"> #define dbgVerifyCommittedVertexBuffers(...)</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="preprocessor"> #define dbgVerifyCommittedShaders(...)</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> };</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> }</div><div class="ttc" id="class_diligent_1_1_device_context_d3_d11_impl_html_afcd3ab8dc67e23c6689028bf34d22c16"><div class="ttname"><a href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">Diligent::DeviceContextD3D11Impl::NumShaderTypes</a></div><div class="ttdeci">static constexpr int NumShaderTypes</div><div class="ttdoc">Number of different shader types (Vertex, Pixel, Geometry, Domain, Hull, Compute) ...</div><div class="ttdef"><b>Definition:</b> DeviceContextD3D11Impl.h:98</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContextD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceContextBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderD3D11Impl.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor"># define VERIFY_CONTEXT_BINDINGS</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_d3_d11_impl.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html">DeviceContextD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase</a><IDeviceContextD3D11></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase<IDeviceContextD3D11></a> <a class="code" href="class_diligent_1_1_device_context_base.html">TDeviceContextBase</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html">DeviceContextD3D11Impl</a>(IReferenceCounters *pRefCounters, IMemoryAllocator &Allocator, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, ID3D11DeviceContext *pd3d11DeviceContext, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html">EngineD3D11Attribs</a> &EngineAttribs, <span class="keywordtype">bool</span> bIsDeferred);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a7e7452e18ba0722adbec6664d4df094e">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a9bd8e3b1e8877e8488c5fa41836df4b3">SetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a50154dc4fbd19504c8e05e929bf8fa8c">TransitionShaderResources</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#abbd0e2473b6222fc74c70ed5583b590e">CommitShaderResources</a>(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, Uint32 Flags)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#adb8322c16cd68def2cdbd9f53209d4a0">SetStencilRef</a>(Uint32 StencilRef)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#af5b5a0d8d2932ee79a6c5cd04fa3a202">SetBlendFactors</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* pBlendFactors = <span class="keyword">nullptr</span>)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#abfd53c39cbd1a77d19951664167dae2b">SetVertexBuffers</a>( Uint32 StartSlot, Uint32 NumBuffersSet, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a68d73ef2e9c725cefe31b9ac5dafd1ea">InvalidateState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a79db72bbef487409f46449b77f6ce6ed">SetIndexBuffer</a>( <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pIndexBuffer, Uint32 ByteOffset )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a180ba0fb6b5468365d05f16fa9405800">SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#ae23752e1818111e2bf036d44888ab840">SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> *pRects, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#ab0321f1d70ecd6cb01ee546579f3c5cc">SetRenderTargets</a>( Uint32 NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *ppRenderTargets[], <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDepthStencil )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a5f369996a8f2ea086a825e00dd1b4a66">Draw</a>( <a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> &<a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a0ab7354311291001bec3006c3e423ab4">DispatchCompute</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html">DispatchComputeAttribs</a> &DispatchAttrs )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a5175c43149f984dd3bebf6b421e39bea">ClearDepthStencil</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, Uint32 ClearFlags, <span class="keywordtype">float</span> fDepth, Uint8 Stencil)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a38a49a11bff991901c6d2efe8e02502e">ClearRenderTarget</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, <span class="keyword">const</span> <span class="keywordtype">float</span> *RGBA )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#ac93002b69130999931670f9612304aa0">Flush</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a0e1ff0f0f25a94bcac5848281e17ae17">FinishCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> **ppCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a6ff0d691eca9b6c70a7994d3bac49702">ExecuteCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> *pCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_d3_d11_impl.html#a7a4893c7d2b02864121a803969d54956"> 85</a></span>  ID3D11DeviceContext* <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a7a4893c7d2b02864121a803969d54956">GetD3D11DeviceContext</a>(){ <span class="keywordflow">return</span> m_pd3d11DeviceContext; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> CommitRenderTargets();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#a87af9339883e1e50384508dc0a097a8f">ReleaseCommittedShaderResources</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16"> 98</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a> = 6;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">void</span> CommitD3D11IndexBuffer(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> IndexType);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">void</span> CommitD3D11VertexBuffers(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html">PipelineStateD3D11Impl</a> *pPipelineStateD3D11);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TD3D11ResourceViewType,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">typename</span> TSetD3D11View,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordtype">size_t</span> NumSlots></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">void</span> UnbindResourceView(TD3D11ResourceViewType CommittedD3D11ViewsArr[][NumSlots], </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  ID3D11Resource* CommittedD3D11ResourcesArr[][NumSlots], </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  Uint8 NumCommittedResourcesArr[],</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pResToUnbind,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  ID3D11Resource *pd3d11ResToUndind,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  TSetD3D11View SetD3D11ViewMethods[]);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> UnbindTextureFromInput(<a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a> *pTexture, ID3D11Resource *pd3d11Resource);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">void</span> UnbindBufferFromInput(<a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a> *pBuffer, ID3D11Resource *pd3d11Buffer);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">void</span> UnbindResourceFromUAV(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pResource, ID3D11Resource *pd3d11Resource);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">void</span> UnbindTextureFromRenderTarget(<a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a> *pResource);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordtype">void</span> UnbindTextureFromDepthStencil(<a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a> *pTexD3D11);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">template</span><<span class="keywordtype">bool</span> TransitionResources,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">bool</span> CommitResources></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">void</span> TransitionAndCommitShaderResources(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPSO, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">void</span> ClearStateCache();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  CComPtr<ID3D11DeviceContext> m_pd3d11DeviceContext; </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  ID3D11Buffer* m_CommittedD3D11CBs [<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT];</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  ID3D11ShaderResourceView* m_CommittedD3D11SRVs [<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT];</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  ID3D11SamplerState* m_CommittedD3D11Samplers[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT];</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  ID3D11UnorderedAccessView* m_CommittedD3D11UAVs [<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_PS_CS_UAV_REGISTER_COUNT];</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  ID3D11Resource* m_CommittedD3D11SRVResources [<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT];</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  ID3D11Resource* m_CommittedD3D11UAVResources [<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>][D3D11_PS_CS_UAV_REGISTER_COUNT];</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  Uint8 m_NumCommittedCBs[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>] = {};</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  Uint8 m_NumCommittedSRVs[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>]= {};</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  Uint8 m_NumCommittedSamplers[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>]= {};</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  Uint8 m_NumCommittedUAVs[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>]= {};</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  ID3D11Buffer* m_CommittedD3D11VertexBuffers[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>] = {};</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  UINT m_CommittedD3D11VBStrides[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>];</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  UINT m_CommittedD3D11VBOffsets[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>];</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  UINT m_NumCommittedD3D11VBs;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordtype">bool</span> m_bCommittedD3D11VBsUpToDate = <span class="keyword">false</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  ID3D11InputLayout *m_CommittedD3D11InputLayout = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  CComPtr<ID3D11Buffer> m_CommittedD3D11IndexBuffer;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> m_CommittedIBFormat;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  Uint32 m_CommittedD3D11IndexDataStartOffset;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordtype">bool</span> m_bCommittedD3D11IBUpToDate = <span class="keyword">false</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  D3D11_PRIMITIVE_TOPOLOGY m_CommittedD3D11PrimTopology = D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> m_CommittedPrimitiveTopology = <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  CComPtr<ID3D11DeviceChild> m_CommittedD3DShaders[<a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">NumShaderTypes</a>];</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  Uint32 m_DebugFlags;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  FixedBlockMemoryAllocator m_CmdListAllocator;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor">#ifdef VERIFY_CONTEXT_BINDINGS</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">void</span> dbgVerifyRenderTargetFormats();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keyword">template</span><UINT MaxResources, <span class="keyword">typename</span> TD3D11ResourceType, <span class="keyword">typename</span> TGetD3D11ResourcesType></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordtype">void</span> dbgVerifyCommittedResources(TD3D11ResourceType CommittedD3D11ResourcesArr[][MaxResources],</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  Uint8 NumCommittedResourcesArr[],</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  TGetD3D11ResourcesType GetD3D11ResMethods[],</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keyword">const</span> Char *ResourceName,</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keyword">template</span><UINT MaxResources, <span class="keyword">typename</span> TD3D11ViewType></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordtype">void</span> dbgVerifyViewConsistency(TD3D11ViewType CommittedD3D11ViewArr[][MaxResources],</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  ID3D11Resource* CommittedD3D11ResourcesArr[][MaxResources],</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  Uint8 NumCommittedResourcesArr[],</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">const</span> Char *ResourceName,</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">void</span> dbgVerifyCommittedSRVs(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordtype">void</span> dbgVerifyCommittedUAVs(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordtype">void</span> dbgVerifyCommittedSamplers(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">void</span> dbgVerifyCommittedCBs(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">void</span> dbgVerifyCommittedIndexBuffer();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordtype">void</span> dbgVerifyCommittedVertexBuffers();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordtype">void</span> dbgVerifyCommittedShaders();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor"> #define dbgVerifyRenderTargetFormats(...)</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor"> #define dbgVerifyCommittedSRVs(...)</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor"> #define dbgVerifyCommittedUAVs(...)</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor"> #define dbgVerifyCommittedSamplers(...)</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor"> #define dbgVerifyCommittedCBs(...)</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="preprocessor"> #define dbgVerifyCommittedIndexBuffer(...)</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="preprocessor"> #define dbgVerifyCommittedVertexBuffers(...)</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="preprocessor"> #define dbgVerifyCommittedShaders(...)</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> };</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> }</div><div class="ttc" id="class_diligent_1_1_device_context_d3_d11_impl_html_afcd3ab8dc67e23c6689028bf34d22c16"><div class="ttname"><a href="class_diligent_1_1_device_context_d3_d11_impl.html#afcd3ab8dc67e23c6689028bf34d22c16">Diligent::DeviceContextD3D11Impl::NumShaderTypes</a></div><div class="ttdeci">static constexpr int NumShaderTypes</div><div class="ttdoc">Number of different shader types (Vertex, Pixel, Geometry, Domain, Hull, Compute) ...</div><div class="ttdef"><b>Definition:</b> DeviceContextD3D11Impl.h:98</div></div> <div class="ttc" id="namespace_diligent_html_a9d3d207f6d44cb2988a2748e4dc97722"><div class="ttname"><a href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">Diligent::MaxBufferSlots</a></div><div class="ttdeci">static constexpr Uint32 MaxBufferSlots</div><div class="ttdoc">Maximum number of input buffer slots. D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT == 32...</div><div class="ttdef"><b>Definition:</b> Constants.h:33</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> @@ -120,7 +120,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_context_d3_d12_8h_source.html b/doc/html/_device_context_d3_d12_8h_source.html index 280d1094..d781b465 100644 --- a/doc/html/_device_context_d3_d12_8h_source.html +++ b/doc/html/_device_context_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceContextD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {DDE9E3AB-5109-4026-92B7-F5E7EC83E21E}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DeviceContextD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xdde9e3ab, 0x5109, 0x4026, { 0x92, 0xb7, 0xf5, 0xe7, 0xec, 0x83, 0xe2, 0x1e } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_device_context_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_device_context_d3_d12.html">IDeviceContextD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context_d3_d12.html#a1b4a0b051a9a1dee11c3dcaec0b5586a">TransitionTextureState</a>(<a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture, D3D12_RESOURCE_STATES State) = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context_d3_d12.html#a32dd9c551e75e475ee1db52c30e864c2">TransitionBufferState</a>(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer, D3D12_RESOURCE_STATES State) = 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {DDE9E3AB-5109-4026-92B7-F5E7EC83E21E}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DeviceContextD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xdde9e3ab, 0x5109, 0x4026, { 0x92, 0xb7, 0xf5, 0xe7, 0xec, 0x83, 0xe2, 0x1e } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_device_context_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_device_context_d3_d12.html">IDeviceContextD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context_d3_d12.html#a1b4a0b051a9a1dee11c3dcaec0b5586a">TransitionTextureState</a>(<a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture, D3D12_RESOURCE_STATES State) = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_context_d3_d12.html#a32dd9c551e75e475ee1db52c30e864c2">TransitionBufferState</a>(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer, D3D12_RESOURCE_STATES State) = 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_device_context_d3_d12_html_a32dd9c551e75e475ee1db52c30e864c2"><div class="ttname"><a href="class_diligent_1_1_i_device_context_d3_d12.html#a32dd9c551e75e475ee1db52c30e864c2">Diligent::IDeviceContextD3D12::TransitionBufferState</a></div><div class="ttdeci">virtual void TransitionBufferState(IBuffer *pBuffer, D3D12_RESOURCE_STATES State)=0</div><div class="ttdoc">Transitions internal D3D12 buffer object to a specified state. </div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer.html">Diligent::IBuffer</a></div><div class="ttdoc">Buffer interface. </div><div class="ttdef"><b>Definition:</b> Buffer.h:200</div></div> <div class="ttc" id="class_diligent_1_1_i_device_context_html"><div class="ttname"><a href="class_diligent_1_1_i_device_context.html">Diligent::IDeviceContext</a></div><div class="ttdoc">Device context interface. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:443</div></div> @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_context_d3_d12_impl_8h_source.html b/doc/html/_device_context_d3_d12_impl_8h_source.html index 02309d67..d2d5a032 100644 --- a/doc/html/_device_context_d3_d12_impl_8h_source.html +++ b/doc/html/_device_context_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceContextD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContextD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceContextBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GenerateMips.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor"># define VERIFY_CONTEXT_BINDINGS</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_d3_d12_impl.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html">DeviceContextD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase</a><IDeviceContextD3D12></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase<IDeviceContextD3D12></a> <a class="code" href="class_diligent_1_1_device_context_base.html">TDeviceContextBase</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html">DeviceContextD3D12Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDevice, <span class="keywordtype">bool</span> bIsDeferred, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html">EngineD3D12Attribs</a> &Attribs, Uint32 ContextId);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ~<a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html">DeviceContextD3D12Impl</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ae248661db2fec30455a75547395b2014">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#aa8cabf2a1bd3369f499f397ec71fff97">SetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ab06c150372ad091846090999c2f496fd">TransitionShaderResources</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#af14656733c2c20d5dc1b6b368be4670a">CommitShaderResources</a>(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, Uint32 Flags)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a742cf62122dd7cfd91bad4b1e0d54ffd">SetStencilRef</a>(Uint32 StencilRef)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a97d639059bbba7eb0c92df19f2153886">SetBlendFactors</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* pBlendFactors = <span class="keyword">nullptr</span>)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ae7ed63dc682ab486282e1cec4d15603f">SetVertexBuffers</a>( Uint32 StartSlot, Uint32 NumBuffersSet, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#adf347827ef3eaca3277783795648ddb8">InvalidateState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ac94879fd640a7a7ba53053b589f50b03">SetIndexBuffer</a>( <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pIndexBuffer, Uint32 ByteOffset )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a22f61d29ce0a772e971641fda2442655">SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#aa269748d330b15309fef2b6e57d131e7">SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> *pRects, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a299ca555cf8774cdf7255d83c06af640">SetRenderTargets</a>( Uint32 NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *ppRenderTargets[], <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDepthStencil )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a60d37500fe1682ce3461b4e7142fbb47">Draw</a>( <a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> &<a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#acd2f0f0df4fbb30c1fd30f674e602515">DispatchCompute</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html">DispatchComputeAttribs</a> &DispatchAttrs )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#aa5da52fb862de0daa38da2201325619c">ClearDepthStencil</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, Uint32 ClearFlags, <span class="keywordtype">float</span> fDepth, Uint8 Stencil)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ad03325e9666bb7561d7c2c6754e08c7b">ClearRenderTarget</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, <span class="keyword">const</span> <span class="keywordtype">float</span> *RGBA )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#aa1b8e7977e26094b79cf365a4e3c228b">Flush</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a7a9ac2c49410dc0310c585720db3e95a">FinishCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> **ppCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ab0e3e7ec3c7ff575a9773288389d6c7b">ExecuteCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> *pCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a19f2b021aa089ee332ef4a35333589aa">TransitionTextureState</a>(<a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture, D3D12_RESOURCE_STATES State)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#acfa61fa64e29aabcaf409ad3b046cb19">TransitionBufferState</a>(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer, D3D12_RESOURCE_STATES State)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">//void ClearShaderStateCache();</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">//static constexpr int NumShaderTypes = 6;</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">void</span> UpdateBufferRegion(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a> *pBuffD3D12, <span class="keyword">struct</span> DynamicAllocation& Allocation, Uint64 DstOffset, Uint64 NumBytes);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">void</span> UpdateBufferRegion(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a> *pBuffD3D12, <span class="keyword">const</span> <span class="keywordtype">void</span> *pData, Uint64 DstOffset, Uint64 NumBytes);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">void</span> CopyBufferRegion(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a> *pSrcBuffD3D12, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a> *pDstBuffD3D12, Uint64 SrcOffset, Uint64 DstOffset, Uint64 NumBytes);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">void</span> CopyTextureRegion(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a> *pSrcTexture, Uint32 SrcSubResIndex, <span class="keyword">const</span> D3D12_BOX *pD3D12SrcBox,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a> *pDstTexture, Uint32 DstSubResIndex, Uint32 DstX, Uint32 DstY, Uint32 DstZ);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">void</span> CopyTextureRegion(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcStride, Uint32 SrcDepthStride, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a> *pTextureD3D12, Uint32 DstSubResIndex, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">void</span> GenerateMips(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html">TextureViewD3D12Impl</a> *pTexView);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">struct </span>DynamicAllocation AllocateDynamicSpace(size_t NumBytes);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  Uint32 GetContextId()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_ContextId;}</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">size_t</span> GetNumCommandsInCtx()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_NumCommandsInCurCtx; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">void</span> CommitD3D12IndexBuffer(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> IndexType);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">void</span> CommitD3D12VertexBuffers(<span class="keyword">class</span> GraphicsContext &GraphCtx);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">void</span> TransitionD3D12VertexBuffers(<span class="keyword">class</span> GraphicsContext &GraphCtx);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> CommitRenderTargets();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">void</span> CommitViewports();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">void</span> CommitScissorRects();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#aa1b8e7977e26094b79cf365a4e3c228b">Flush</a>(<span class="keywordtype">bool</span> RequestNewCmdCtx);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html">SwapChainD3D12Impl</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">inline</span> <span class="keyword">class </span>CommandContext* RequestCmdContext()</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// Make sure that the number of commands in the context is at least one,</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// so that the context cannot be disposed by Flush()</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_NumCommandsInCurCtx = m_NumCommandsInCurCtx != 0 ? m_NumCommandsInCurCtx : 1;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> m_pCurrCmdCtx;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordtype">size_t</span> m_NumCommandsInCurCtx = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">const</span> Uint32 m_NumCommandsToFlush = 192;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  CommandContext* m_pCurrCmdCtx = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  CComPtr<ID3D12Resource> m_CommittedD3D12IndexBuffer;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> m_CommittedIBFormat = <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">VT_UNDEFINED</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  Uint32 m_CommittedD3D12IndexDataStartOffset = 0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  CComPtr<ID3D12CommandSignature> m_pDrawIndirectSignature;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  CComPtr<ID3D12CommandSignature> m_pDrawIndexedIndirectSignature;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  CComPtr<ID3D12CommandSignature> m_pDispatchIndirectSignature;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  GenerateMipsHelper m_MipsGenerator;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">class </span>DynamicUploadHeap* m_pUploadHeap = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">bool</span> m_bCommittedD3D12VBsUpToDate = <span class="keyword">false</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordtype">bool</span> m_bCommittedD3D12IBUpToDate = <span class="keyword">false</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">class </span>ShaderResourceCacheD3D12 *m_pCommittedResourceCache = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> m_CmdListAllocator;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">const</span> Uint32 m_ContextId;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> };</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> }</div><div class="ttc" id="class_diligent_1_1_device_context_d3_d12_impl_html_aa5da52fb862de0daa38da2201325619c"><div class="ttname"><a href="class_diligent_1_1_device_context_d3_d12_impl.html#aa5da52fb862de0daa38da2201325619c">Diligent::DeviceContextD3D12Impl::ClearDepthStencil</a></div><div class="ttdeci">virtual void ClearDepthStencil(ITextureView *pView, Uint32 ClearFlags, float fDepth, Uint8 Stencil) override final</div><div class="ttdoc">Clears a depth-stencil view. </div><div class="ttdef"><b>Definition:</b> DeviceContextD3D12Impl.cpp:459</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContextD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceContextBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GenerateMips.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor"># define VERIFY_CONTEXT_BINDINGS</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_d3_d12_impl.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html">DeviceContextD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase</a><IDeviceContextD3D12></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase<IDeviceContextD3D12></a> <a class="code" href="class_diligent_1_1_device_context_base.html">TDeviceContextBase</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html">DeviceContextD3D12Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDevice, <span class="keywordtype">bool</span> bIsDeferred, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html">EngineD3D12Attribs</a> &Attribs, Uint32 ContextId);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ~<a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html">DeviceContextD3D12Impl</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ae248661db2fec30455a75547395b2014">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#aa8cabf2a1bd3369f499f397ec71fff97">SetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ab06c150372ad091846090999c2f496fd">TransitionShaderResources</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#af14656733c2c20d5dc1b6b368be4670a">CommitShaderResources</a>(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, Uint32 Flags)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a742cf62122dd7cfd91bad4b1e0d54ffd">SetStencilRef</a>(Uint32 StencilRef)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a97d639059bbba7eb0c92df19f2153886">SetBlendFactors</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* pBlendFactors = <span class="keyword">nullptr</span>)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ae7ed63dc682ab486282e1cec4d15603f">SetVertexBuffers</a>( Uint32 StartSlot, Uint32 NumBuffersSet, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#adf347827ef3eaca3277783795648ddb8">InvalidateState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ac94879fd640a7a7ba53053b589f50b03">SetIndexBuffer</a>( <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pIndexBuffer, Uint32 ByteOffset )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a22f61d29ce0a772e971641fda2442655">SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#aa269748d330b15309fef2b6e57d131e7">SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> *pRects, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a299ca555cf8774cdf7255d83c06af640">SetRenderTargets</a>( Uint32 NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *ppRenderTargets[], <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDepthStencil )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a60d37500fe1682ce3461b4e7142fbb47">Draw</a>( <a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> &<a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#acd2f0f0df4fbb30c1fd30f674e602515">DispatchCompute</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html">DispatchComputeAttribs</a> &DispatchAttrs )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#aa5da52fb862de0daa38da2201325619c">ClearDepthStencil</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, Uint32 ClearFlags, <span class="keywordtype">float</span> fDepth, Uint8 Stencil)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ad03325e9666bb7561d7c2c6754e08c7b">ClearRenderTarget</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, <span class="keyword">const</span> <span class="keywordtype">float</span> *RGBA )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#aa1b8e7977e26094b79cf365a4e3c228b">Flush</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a7a9ac2c49410dc0310c585720db3e95a">FinishCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> **ppCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#ab0e3e7ec3c7ff575a9773288389d6c7b">ExecuteCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> *pCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#a19f2b021aa089ee332ef4a35333589aa">TransitionTextureState</a>(<a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture, D3D12_RESOURCE_STATES State)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#acfa61fa64e29aabcaf409ad3b046cb19">TransitionBufferState</a>(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer, D3D12_RESOURCE_STATES State)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">//void ClearShaderStateCache();</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">//static constexpr int NumShaderTypes = 6;</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">void</span> UpdateBufferRegion(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a> *pBuffD3D12, <span class="keyword">struct</span> DynamicAllocation& Allocation, Uint64 DstOffset, Uint64 NumBytes);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">void</span> UpdateBufferRegion(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a> *pBuffD3D12, <span class="keyword">const</span> <span class="keywordtype">void</span> *pData, Uint64 DstOffset, Uint64 NumBytes);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">void</span> CopyBufferRegion(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a> *pSrcBuffD3D12, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_buffer_d3_d12_impl.html">BufferD3D12Impl</a> *pDstBuffD3D12, Uint64 SrcOffset, Uint64 DstOffset, Uint64 NumBytes);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">void</span> CopyTextureRegion(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a> *pSrcTexture, Uint32 SrcSubResIndex, <span class="keyword">const</span> D3D12_BOX *pD3D12SrcBox,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a> *pDstTexture, Uint32 DstSubResIndex, Uint32 DstX, Uint32 DstY, Uint32 DstZ);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">void</span> CopyTextureRegion(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pSrcBuffer, Uint32 SrcStride, Uint32 SrcDepthStride, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a> *pTextureD3D12, Uint32 DstSubResIndex, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">void</span> GenerateMips(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html">TextureViewD3D12Impl</a> *pTexView);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">struct </span>DynamicAllocation AllocateDynamicSpace(size_t NumBytes);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  Uint32 GetContextId()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_ContextId;}</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">size_t</span> GetNumCommandsInCtx()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_NumCommandsInCurCtx; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">void</span> CommitD3D12IndexBuffer(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> IndexType);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">void</span> CommitD3D12VertexBuffers(<span class="keyword">class</span> GraphicsContext &GraphCtx);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">void</span> TransitionD3D12VertexBuffers(<span class="keyword">class</span> GraphicsContext &GraphCtx);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> CommitRenderTargets();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">void</span> CommitViewports();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">void</span> CommitScissorRects();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html#aa1b8e7977e26094b79cf365a4e3c228b">Flush</a>(<span class="keywordtype">bool</span> RequestNewCmdCtx);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html">SwapChainD3D12Impl</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">inline</span> <span class="keyword">class </span>CommandContext* RequestCmdContext()</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// Make sure that the number of commands in the context is at least one,</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// so that the context cannot be disposed by Flush()</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_NumCommandsInCurCtx = m_NumCommandsInCurCtx != 0 ? m_NumCommandsInCurCtx : 1;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> m_pCurrCmdCtx;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordtype">size_t</span> m_NumCommandsInCurCtx = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">const</span> Uint32 m_NumCommandsToFlush = 192;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  CommandContext* m_pCurrCmdCtx = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  CComPtr<ID3D12Resource> m_CommittedD3D12IndexBuffer;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> m_CommittedIBFormat = <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">VT_UNDEFINED</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  Uint32 m_CommittedD3D12IndexDataStartOffset = 0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  CComPtr<ID3D12CommandSignature> m_pDrawIndirectSignature;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  CComPtr<ID3D12CommandSignature> m_pDrawIndexedIndirectSignature;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  CComPtr<ID3D12CommandSignature> m_pDispatchIndirectSignature;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  GenerateMipsHelper m_MipsGenerator;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">class </span>DynamicUploadHeap* m_pUploadHeap = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">bool</span> m_bCommittedD3D12VBsUpToDate = <span class="keyword">false</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordtype">bool</span> m_bCommittedD3D12IBUpToDate = <span class="keyword">false</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">class </span>ShaderResourceCacheD3D12 *m_pCommittedResourceCache = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> m_CmdListAllocator;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">const</span> Uint32 m_ContextId;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> };</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> }</div><div class="ttc" id="class_diligent_1_1_device_context_d3_d12_impl_html_aa5da52fb862de0daa38da2201325619c"><div class="ttname"><a href="class_diligent_1_1_device_context_d3_d12_impl.html#aa5da52fb862de0daa38da2201325619c">Diligent::DeviceContextD3D12Impl::ClearDepthStencil</a></div><div class="ttdeci">virtual void ClearDepthStencil(ITextureView *pView, Uint32 ClearFlags, float fDepth, Uint8 Stencil) override final</div><div class="ttdoc">Clears a depth-stencil view. </div><div class="ttdef"><b>Definition:</b> DeviceContextD3D12Impl.cpp:459</div></div> <div class="ttc" id="class_diligent_1_1_buffer_d3_d12_impl_html"><div class="ttname"><a href="class_diligent_1_1_buffer_d3_d12_impl.html">Diligent::BufferD3D12Impl</a></div><div class="ttdoc">Implementation of the Diligent::IBufferD3D12 interface. </div><div class="ttdef"><b>Definition:</b> BufferD3D12Impl.h:42</div></div> <div class="ttc" id="class_diligent_1_1_device_context_d3_d12_impl_html_ae7ed63dc682ab486282e1cec4d15603f"><div class="ttname"><a href="class_diligent_1_1_device_context_d3_d12_impl.html#ae7ed63dc682ab486282e1cec4d15603f">Diligent::DeviceContextD3D12Impl::SetVertexBuffers</a></div><div class="ttdeci">virtual void SetVertexBuffers(Uint32 StartSlot, Uint32 NumBuffersSet, IBuffer **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags) override final</div><div class="ttdoc">Base implementation of IDeviceContext::SetVertexBuffers(); validates parameters and caches references...</div><div class="ttdef"><b>Definition:</b> DeviceContextD3D12Impl.cpp:552</div></div> <div class="ttc" id="namespace_diligent_html_a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab"><div class="ttname"><a href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">Diligent::VT_UNDEFINED</a></div><div class="ttdoc">Undefined type. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:41</div></div> @@ -118,7 +118,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_context_g_l_8h_source.html b/doc/html/_device_context_g_l_8h_source.html index 31e0e2e0..fd6b38ff 100644 --- a/doc/html/_device_context_g_l_8h_source.html +++ b/doc/html/_device_context_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceContextGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {3464FDF1-C548-4935-96C3-B454C9DF6F6A}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DeviceContextGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x3464fdf1, 0xc548, 0x4935, { 0x96, 0xc3, 0xb4, 0x54, 0xc9, 0xdf, 0x6f, 0x6a } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_device_context_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_device_context_g_l.html">IDeviceContextGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_i_device_context_g_l.html#ae7207bb0aa6f055bcbecf1c4e187221f">UpdateCurrentGLContext</a>() = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_context_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_device_context_g_l.html">Diligent::IDeviceContextGL</a></div><div class="ttdoc">Interface to the device context object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> DeviceContextGL.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {3464FDF1-C548-4935-96C3-B454C9DF6F6A}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DeviceContextGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x3464fdf1, 0xc548, 0x4935, { 0x96, 0xc3, 0xb4, 0x54, 0xc9, 0xdf, 0x6f, 0x6a } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_device_context_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_device_context_g_l.html">IDeviceContextGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_i_device_context_g_l.html#ae7207bb0aa6f055bcbecf1c4e187221f">UpdateCurrentGLContext</a>() = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_context_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_device_context_g_l.html">Diligent::IDeviceContextGL</a></div><div class="ttdoc">Interface to the device context object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> DeviceContextGL.h:39</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_device_context_html"><div class="ttname"><a href="class_diligent_1_1_i_device_context.html">Diligent::IDeviceContext</a></div><div class="ttdoc">Device context interface. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:443</div></div> <div class="ttc" id="class_diligent_1_1_i_device_context_g_l_html_ae7207bb0aa6f055bcbecf1c4e187221f"><div class="ttname"><a href="class_diligent_1_1_i_device_context_g_l.html#ae7207bb0aa6f055bcbecf1c4e187221f">Diligent::IDeviceContextGL::UpdateCurrentGLContext</a></div><div class="ttdeci">virtual bool UpdateCurrentGLContext()=0</div><div class="ttdoc">Attaches to the active GL context in the thread. </div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_context_g_l_impl_8h_source.html b/doc/html/_device_context_g_l_impl_8h_source.html index 384446c0..309b0b9f 100644 --- a/doc/html/_device_context_g_l_impl_8h_source.html +++ b/doc/html/_device_context_g_l_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceContextGLImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "DeviceContextGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DeviceContextBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GLContextState.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_g_l_impl.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase</a><IDeviceContextGL></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase<IDeviceContextGL></a> <a class="code" href="class_diligent_1_1_device_context_base.html">TDeviceContextBase</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a>( IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, <span class="keywordtype">bool</span> bIsDeferred );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#ae0adf77c4fa357673dbcf83e29497706">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a6f833e7d9144b73eebe1d8c012807c4e">SetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a7e8c475f0861a6feeb55befa51559b0c">TransitionShaderResources</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#aeb080cd5a8cf2ab99d836e799b12258f">CommitShaderResources</a>(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, Uint32 Flags)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a172afff42241e5d35d08201a8b8e5d25">SetStencilRef</a>(Uint32 StencilRef)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a41e56bc52ac83c0760046a6bb32ed7cb">SetBlendFactors</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* pBlendFactors = <span class="keyword">nullptr</span>)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a0ad4626f5e91b73350eadcdac4d4ad36">SetVertexBuffers</a>( Uint32 StartSlot, Uint32 NumBuffersSet, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a6283cc1c6ab1d1ebb9d0e2b3431729ca">InvalidateState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#ac2cf1365e927df7d0390acb957b139f9">SetIndexBuffer</a>( <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pIndexBuffer, Uint32 ByteOffset )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#ab8f6aefa72856012408567b660c08005">SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a38ddf7f7f6113a774586e79d4fbb0a34">SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> *pRects, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#aeb189139c4b3811fa74eadb84c1ab843">SetRenderTargets</a>( Uint32 NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *ppRenderTargets[], <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDepthStencil )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a35040adde618247064ffc313a358b582">Draw</a>( <a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> &<a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a54a1cb24ffff742d860f689697b81d02">DispatchCompute</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html">DispatchComputeAttribs</a> &DispatchAttrs )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a6aecda5fc0ed209c140dca144081676f">ClearDepthStencil</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, Uint32 ClearFlags, <span class="keywordtype">float</span> fDepth, Uint8 Stencil)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#ac60ce0cbb46f3109a7b3813dc0f4ea66">ClearRenderTarget</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, <span class="keyword">const</span> <span class="keywordtype">float</span> *RGBA )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a7472b84061b6197b0358e4c8a59dcb11">Flush</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a38612e7fcab39ecd04375aa02287e4fc">FinishCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> **ppCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a9da213c8dc16f80f21ca66f4843340bc">ExecuteCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> *pCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#aada214b26f0289e0a7bcb7f9d4bcd626">UpdateCurrentGLContext</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">void</span> BindProgramResources( Uint32 &NewMemoryBarriers, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pResBinding );</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  GLContextState &GetContextState(){<span class="keywordflow">return</span> m_ContextState;}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> CommitRenderTargets();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_g_l_impl.html">ShaderGLImpl</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  GLContextState m_ContextState;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  Uint32 m_CommitedResourcesTentativeBarriers;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::vector<class TextureBaseGL*> m_BoundWritableTextures;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  std::vector<class BufferGLImpl*> m_BoundWritableBuffers;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">bool</span> m_bVAOIsUpToDate = <span class="keyword">false</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="ttc" id="class_diligent_1_1_texture_base_g_l_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_g_l.html">Diligent::TextureBaseGL</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureGL interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseGL.h:41</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "DeviceContextGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DeviceContextBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GLContextState.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_context_g_l_impl.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase</a><IDeviceContextGL></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_context_base.html">DeviceContextBase<IDeviceContextGL></a> <a class="code" href="class_diligent_1_1_device_context_base.html">TDeviceContextBase</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a>( IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, <span class="keywordtype">bool</span> bIsDeferred );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#ae0adf77c4fa357673dbcf83e29497706">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a6f833e7d9144b73eebe1d8c012807c4e">SetPipelineState</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a7e8c475f0861a6feeb55befa51559b0c">TransitionShaderResources</a>(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPipelineState, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#aeb080cd5a8cf2ab99d836e799b12258f">CommitShaderResources</a>(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, Uint32 Flags)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a172afff42241e5d35d08201a8b8e5d25">SetStencilRef</a>(Uint32 StencilRef)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a41e56bc52ac83c0760046a6bb32ed7cb">SetBlendFactors</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* pBlendFactors = <span class="keyword">nullptr</span>)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a0ad4626f5e91b73350eadcdac4d4ad36">SetVertexBuffers</a>( Uint32 StartSlot, Uint32 NumBuffersSet, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffers, Uint32 *pStrides, Uint32 *pOffsets, Uint32 Flags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a6283cc1c6ab1d1ebb9d0e2b3431729ca">InvalidateState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#ac2cf1365e927df7d0390acb957b139f9">SetIndexBuffer</a>( <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pIndexBuffer, Uint32 ByteOffset )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#ab8f6aefa72856012408567b660c08005">SetViewports</a>( Uint32 NumViewports, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_viewport.html">Viewport</a> *pViewports, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a38ddf7f7f6113a774586e79d4fbb0a34">SetScissorRects</a>( Uint32 NumRects, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rect.html">Rect</a> *pRects, Uint32 RTWidth, Uint32 RTHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#aeb189139c4b3811fa74eadb84c1ab843">SetRenderTargets</a>( Uint32 NumRenderTargets, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *ppRenderTargets[], <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDepthStencil )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a35040adde618247064ffc313a358b582">Draw</a>( <a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> &<a class="code" href="struct_diligent_1_1_draw_attribs.html">DrawAttribs</a> )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a54a1cb24ffff742d860f689697b81d02">DispatchCompute</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_dispatch_compute_attribs.html">DispatchComputeAttribs</a> &DispatchAttrs )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a6aecda5fc0ed209c140dca144081676f">ClearDepthStencil</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, Uint32 ClearFlags, <span class="keywordtype">float</span> fDepth, Uint8 Stencil)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#ac60ce0cbb46f3109a7b3813dc0f4ea66">ClearRenderTarget</a>( <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pView, <span class="keyword">const</span> <span class="keywordtype">float</span> *RGBA )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a7472b84061b6197b0358e4c8a59dcb11">Flush</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a38612e7fcab39ecd04375aa02287e4fc">FinishCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> **ppCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#a9da213c8dc16f80f21ca66f4843340bc">ExecuteCommandList</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_command_list.html">ICommandList</a> *pCommandList)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html#aada214b26f0289e0a7bcb7f9d4bcd626">UpdateCurrentGLContext</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">void</span> BindProgramResources( Uint32 &NewMemoryBarriers, <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pResBinding );</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  GLContextState &GetContextState(){<span class="keywordflow">return</span> m_ContextState;}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> CommitRenderTargets();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_g_l_impl.html">ShaderGLImpl</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  GLContextState m_ContextState;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  Uint32 m_CommitedResourcesTentativeBarriers;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::vector<class TextureBaseGL*> m_BoundWritableTextures;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  std::vector<class BufferGLImpl*> m_BoundWritableBuffers;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">bool</span> m_bVAOIsUpToDate = <span class="keyword">false</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="ttc" id="class_diligent_1_1_texture_base_g_l_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_g_l.html">Diligent::TextureBaseGL</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureGL interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseGL.h:41</div></div> <div class="ttc" id="class_diligent_1_1_shader_g_l_impl_html"><div class="ttname"><a href="class_diligent_1_1_shader_g_l_impl.html">Diligent::ShaderGLImpl</a></div><div class="ttdoc">Implementation of the Diligent::IShaderGL interface. </div><div class="ttdef"><b>Definition:</b> ShaderGLImpl.h:67</div></div> <div class="ttc" id="class_diligent_1_1_device_context_g_l_impl_html_a6283cc1c6ab1d1ebb9d0e2b3431729ca"><div class="ttname"><a href="class_diligent_1_1_device_context_g_l_impl.html#a6283cc1c6ab1d1ebb9d0e2b3431729ca">Diligent::DeviceContextGLImpl::InvalidateState</a></div><div class="ttdeci">virtual void InvalidateState() override final</div><div class="ttdoc">Invalidates the cached context state. </div><div class="ttdef"><b>Definition:</b> DeviceContextGLImpl.cpp:167</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -110,7 +110,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_object_8h_source.html b/doc/html/_device_object_8h_source.html index ec5fba17..1e4d44dc 100644 --- a/doc/html/_device_object_8h_source.html +++ b/doc/html/_device_object_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceObject.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// {5B4CCA0B-5075-4230-9759-F48769EE5502}</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DeviceObject =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> { 0x5b4cca0b, 0x5075, 0x4230, { 0x97, 0x59, 0xf4, 0x87, 0x69, 0xee, 0x55, 0x2 } };</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_device_object.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_object.html#a9cfe050a29e23ceaed09572b6434a40d">QueryInterface</a>( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a>& <a class="code" href="class_diligent_1_1_i_device_object.html#ad881ca8984a57201f5d8febda7811948">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html_a9cfe050a29e23ceaed09572b6434a40d"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html#a9cfe050a29e23ceaed09572b6434a40d">Diligent::IDeviceObject::QueryInterface</a></div><div class="ttdeci">virtual void QueryInterface(const INTERFACE_ID &IID, IObject **ppInterface)=0</div><div class="ttdoc">Queries the specific interface, see IObject::QueryInterface() for details. </div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// {5B4CCA0B-5075-4230-9759-F48769EE5502}</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_DeviceObject =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> { 0x5b4cca0b, 0x5075, 0x4230, { 0x97, 0x59, 0xf4, 0x87, 0x69, 0xee, 0x55, 0x2 } };</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_device_object.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_device_object.html#a9cfe050a29e23ceaed09572b6434a40d">QueryInterface</a>( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a>& <a class="code" href="class_diligent_1_1_i_device_object.html#ad881ca8984a57201f5d8febda7811948">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html_a9cfe050a29e23ceaed09572b6434a40d"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html#a9cfe050a29e23ceaed09572b6434a40d">Diligent::IDeviceObject::QueryInterface</a></div><div class="ttdeci">virtual void QueryInterface(const INTERFACE_ID &IID, IObject **ppInterface)=0</div><div class="ttdoc">Queries the specific interface, see IObject::QueryInterface() for details. </div></div> <div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="struct_diligent_1_1_device_object_attribs_html"><div class="ttname"><a href="struct_diligent_1_1_device_object_attribs.html">Diligent::DeviceObjectAttribs</a></div><div class="ttdoc">Describes common device object attributes. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:900</div></div> @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_device_object_base_8h_source.html b/doc/html/_device_object_base_8h_source.html index a07c97bf..686943b7 100644 --- a/doc/html/_device_object_base_8h_source.html +++ b/doc/html/_device_object_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">DeviceObjectBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "UniqueIdentifier.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html"> 36</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">typename</span> ObjectDescType></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_object_base.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><BaseInterface></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<BaseInterface></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_object_base.html#a523ebe1047ebd39a94fbadf711834c92"> 52</a></span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a523ebe1047ebd39a94fbadf711834c92">DeviceObjectBase</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">const</span> ObjectDescType &ObjDesc,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>) :</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>(pRefCounters),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_pDevice( pDevice ),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// Do not keep strong reference to the device if the object is an internal device object</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_spDevice( bIsDeviceInternal ? nullptr : pDevice ),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a38d8b07e45ed75f4e144c0d7f359a14d">m_ObjectNameCopy</a>(ObjDesc.Name ? ObjDesc.Name : <span class="stringliteral">""</span>),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>( ObjDesc )</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.Name = <a class="code" href="class_diligent_1_1_device_object_base.html#a38d8b07e45ed75f4e144c0d7f359a14d">m_ObjectNameCopy</a>.c_str();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// !!!WARNING!!!</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// We cannot add resource to the hash table from here, because the object</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// has not been completely created yet and the reference counters object</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// is not initialized!</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">//m_pDevice->AddResourceToHash( this ); - ERROR!</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a523ebe1047ebd39a94fbadf711834c92">DeviceObjectBase</a>( <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a523ebe1047ebd39a94fbadf711834c92">DeviceObjectBase</a>( <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>&& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>& operator = ( <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>& operator = ( <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>&& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>()</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> Atomics::Long Release()override final</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// Render device owns allocators for all types of device objects,</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// so it must be destroyed after all device objects are released. </span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// Consider the following scenario: an object A ownes last strong </span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// reference to the device:</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// </span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// 1. A::~A() completes</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// 2. A::~DeviceObjectBase() completes</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// 3. A::m_spDevice is released</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Render device is destroyed, all allocators are invalid</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// 4. RefCountersImpl::ObjectWrapperBase::DestroyObject() calls </span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// m_pAllocator->Free(m_pObject) - crash!</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// We must keep the device alive while the object is being destroyed</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  RefCntAutoPtr<IRenderDevice> pDevice(m_spDevice);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// Note that internal device object do not keep strong reference to the device</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">return</span> TBase::Release();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_DeviceObject, TBase )</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> ObjectDescType& GetDesc()const override final</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_object_base.html#aafd0debde4434c1de91f18ad600373d2"> 109</a></span>  UniqueIdentifier <a class="code" href="class_diligent_1_1_device_object_base.html#aafd0debde4434c1de91f18ad600373d2">GetUniqueID</a>()<span class="keyword">const</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> m_UniqueID.GetID();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *GetDevice()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pDevice;}</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  RefCntAutoPtr<IRenderDevice> m_spDevice;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  IRenderDevice *m_pDevice;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_object_base.html#a38d8b07e45ed75f4e144c0d7f359a14d"> 135</a></span>  <span class="keyword">const</span> String <a class="code" href="class_diligent_1_1_device_object_base.html#a38d8b07e45ed75f4e144c0d7f359a14d">m_ObjectNameCopy</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae"> 138</a></span>  ObjectDescType <a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// Template argument is only used to separate counters for </span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// different groups of objects</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  UniqueIdHelper<BaseInterface> m_UniqueID;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> };</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "UniqueIdentifier.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html"> 36</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">typename</span> ObjectDescType></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_object_base.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><BaseInterface></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<BaseInterface></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_object_base.html#a523ebe1047ebd39a94fbadf711834c92"> 52</a></span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a523ebe1047ebd39a94fbadf711834c92">DeviceObjectBase</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">const</span> ObjectDescType &ObjDesc,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>) :</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>(pRefCounters),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_pDevice( pDevice ),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// Do not keep strong reference to the device if the object is an internal device object</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_spDevice( bIsDeviceInternal ? nullptr : pDevice ),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a38d8b07e45ed75f4e144c0d7f359a14d">m_ObjectNameCopy</a>(ObjDesc.Name ? ObjDesc.Name : <span class="stringliteral">""</span>),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>( ObjDesc )</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.Name = <a class="code" href="class_diligent_1_1_device_object_base.html#a38d8b07e45ed75f4e144c0d7f359a14d">m_ObjectNameCopy</a>.c_str();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// !!!WARNING!!!</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// We cannot add resource to the hash table from here, because the object</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// has not been completely created yet and the reference counters object</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// is not initialized!</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">//m_pDevice->AddResourceToHash( this ); - ERROR!</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a523ebe1047ebd39a94fbadf711834c92">DeviceObjectBase</a>( <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="class_diligent_1_1_device_object_base.html#a523ebe1047ebd39a94fbadf711834c92">DeviceObjectBase</a>( <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>&& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>& operator = ( <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>& operator = ( <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>&& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a>()</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> Atomics::Long Release()override final</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// Render device owns allocators for all types of device objects,</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// so it must be destroyed after all device objects are released. </span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// Consider the following scenario: an object A ownes last strong </span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// reference to the device:</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// </span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// 1. A::~A() completes</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// 2. A::~DeviceObjectBase() completes</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// 3. A::m_spDevice is released</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Render device is destroyed, all allocators are invalid</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// 4. RefCountersImpl::ObjectWrapperBase::DestroyObject() calls </span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// m_pAllocator->Free(m_pObject) - crash!</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// We must keep the device alive while the object is being destroyed</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  RefCntAutoPtr<IRenderDevice> pDevice(m_spDevice);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// Note that internal device object do not keep strong reference to the device</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">return</span> TBase::Release();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_DeviceObject, TBase )</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> ObjectDescType& GetDesc()const override final</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_object_base.html#aafd0debde4434c1de91f18ad600373d2"> 109</a></span>  UniqueIdentifier <a class="code" href="class_diligent_1_1_device_object_base.html#aafd0debde4434c1de91f18ad600373d2">GetUniqueID</a>()<span class="keyword">const</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> m_UniqueID.GetID();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *GetDevice()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pDevice;}</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  RefCntAutoPtr<IRenderDevice> m_spDevice;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  IRenderDevice *m_pDevice;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_object_base.html#a38d8b07e45ed75f4e144c0d7f359a14d"> 135</a></span>  <span class="keyword">const</span> String <a class="code" href="class_diligent_1_1_device_object_base.html#a38d8b07e45ed75f4e144c0d7f359a14d">m_ObjectNameCopy</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae"> 138</a></span>  ObjectDescType <a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// Template argument is only used to separate counters for </span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// different groups of objects</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  UniqueIdHelper<BaseInterface> m_UniqueID;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> };</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_device_object_base_html_a523ebe1047ebd39a94fbadf711834c92"><div class="ttname"><a href="class_diligent_1_1_device_object_base.html#a523ebe1047ebd39a94fbadf711834c92">Diligent::DeviceObjectBase::DeviceObjectBase</a></div><div class="ttdeci">DeviceObjectBase(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, const ObjectDescType &ObjDesc, bool bIsDeviceInternal=false)</div><div class="ttdef"><b>Definition:</b> DeviceObjectBase.h:52</div></div> @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_dynamic_upload_heap_8h_source.html b/doc/html/_dynamic_upload_heap_8h_source.html index dedbfb4b..a10f7283 100644 --- a/doc/html/_dynamic_upload_heap_8h_source.html +++ b/doc/html/_dynamic_upload_heap_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">DynamicUploadHeap.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "RingBuffer.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Constant blocks must be multiples of 16 constants @ 16 bytes each</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define DEFAULT_ALIGN 256</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">struct </span>DynamicAllocation</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  DynamicAllocation(ID3D12Resource *pBuff = <span class="keyword">nullptr</span>, <span class="keywordtype">size_t</span> ThisOffset = 0, <span class="keywordtype">size_t</span> ThisSize = 0)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  : pBuffer(pBuff), Offset(ThisOffset), Size(ThisSize) {}</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">//CComPtr<ID3D12Resource> pBuffer; // The D3D buffer associated with this memory.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  ID3D12Resource *pBuffer = <span class="keyword">nullptr</span>; <span class="comment">// The D3D buffer associated with this memory.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">size_t</span> Offset = 0; <span class="comment">// Offset from start of buffer resource</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">size_t</span> Size = 0; <span class="comment">// Reserved size of this allocation</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span>* CPUAddress = 0; <span class="comment">// The CPU-writeable address</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  D3D12_GPU_VIRTUAL_ADDRESS GPUAddress = 0; <span class="comment">// The GPU-visible address</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  Uint64 FrameNum = <span class="keyword">static_cast<</span>Uint64<span class="keyword">></span>(-1);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">class </span>GPURingBuffer : <span class="keyword">public</span> RingBuffer</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GPURingBuffer(<span class="keywordtype">size_t</span> MaxSize, IMemoryAllocator &Allocator, ID3D12Device *pd3d12Device, <span class="keywordtype">bool</span> AllowCPUAccess);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  GPURingBuffer(GPURingBuffer&& rhs) : </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  RingBuffer(<a class="code" href="namespacestd.html">std</a>::move(rhs)),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_CpuVirtualAddress(rhs.m_CpuVirtualAddress),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_GpuVirtualAddress(rhs.m_GpuVirtualAddress),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_pBuffer(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_pBuffer))</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  rhs.m_CpuVirtualAddress = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  rhs.m_GpuVirtualAddress = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  rhs.m_pBuffer.Release();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  GPURingBuffer& operator =(GPURingBuffer&& rhs)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  Destroy();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">static_cast<</span>RingBuffer&<span class="keyword">></span>(*this) = std::move(rhs);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_CpuVirtualAddress = rhs.m_CpuVirtualAddress;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_GpuVirtualAddress = rhs.m_GpuVirtualAddress;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_pBuffer = std::move(rhs.m_pBuffer);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  rhs.m_CpuVirtualAddress = 0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  rhs.m_GpuVirtualAddress = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  ~GPURingBuffer();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  DynamicAllocation Allocate(<span class="keywordtype">size_t</span> SizeInBytes)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">auto</span> Offset = RingBuffer::Allocate(SizeInBytes);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span> (Offset != RingBuffer::InvalidOffset)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  DynamicAllocation DynAlloc(m_pBuffer, Offset, SizeInBytes);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  DynAlloc.GPUAddress = m_GpuVirtualAddress + Offset;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  DynAlloc.CPUAddress = m_CpuVirtualAddress;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(DynAlloc.CPUAddress)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  DynAlloc.CPUAddress = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(DynAlloc.CPUAddress) + Offset;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> DynAlloc;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> DynamicAllocation(<span class="keyword">nullptr</span>, 0, 0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  GPURingBuffer(<span class="keyword">const</span> GPURingBuffer&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  GPURingBuffer& operator =(GPURingBuffer&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">void</span> Destroy();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">void</span>* m_CpuVirtualAddress;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  D3D12_GPU_VIRTUAL_ADDRESS m_GpuVirtualAddress;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  CComPtr<ID3D12Resource> m_pBuffer;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> };</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">class </span>DynamicUploadHeap</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  DynamicUploadHeap(IMemoryAllocator &Allocator, <span class="keywordtype">bool</span> bIsCPUAccessible, <span class="keyword">class</span> RenderDeviceD3D12Impl* pDevice, <span class="keywordtype">size_t</span> InitialSize);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  DynamicUploadHeap(<span class="keyword">const</span> DynamicUploadHeap&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  DynamicUploadHeap(DynamicUploadHeap&&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  DynamicUploadHeap& operator=(<span class="keyword">const</span> DynamicUploadHeap&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  DynamicUploadHeap& operator=(DynamicUploadHeap&&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  DynamicAllocation Allocate( <span class="keywordtype">size_t</span> SizeInBytes, <span class="keywordtype">size_t</span> Alignment = DEFAULT_ALIGN );</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">void</span> FinishFrame(Uint64 FenceValue, Uint64 LastCompletedFenceValue);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> m_bIsCPUAccessible;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// When a chunk of dynamic memory is requested, the heap first tries to allocate the memory in the largest GPU buffer. </span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// If allocation fails, a new ring buffer is created that provides enough space and requests memory from that buffer.</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// Only the largest buffer is used for allocation and all other buffers are released when GPU is done with corresponding frames</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  std::vector<GPURingBuffer, STDAllocatorRawMem<GPURingBuffer> > m_RingBuffers;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  IMemoryAllocator &m_Allocator;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  RenderDeviceD3D12Impl* m_pDeviceD3D12 = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">//std::mutex m_Mutex;</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> };</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "RingBuffer.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Constant blocks must be multiples of 16 constants @ 16 bytes each</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define DEFAULT_ALIGN 256</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">struct </span>DynamicAllocation</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  DynamicAllocation(ID3D12Resource *pBuff = <span class="keyword">nullptr</span>, <span class="keywordtype">size_t</span> ThisOffset = 0, <span class="keywordtype">size_t</span> ThisSize = 0)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  : pBuffer(pBuff), Offset(ThisOffset), Size(ThisSize) {}</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">//CComPtr<ID3D12Resource> pBuffer; // The D3D buffer associated with this memory.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  ID3D12Resource *pBuffer = <span class="keyword">nullptr</span>; <span class="comment">// The D3D buffer associated with this memory.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">size_t</span> Offset = 0; <span class="comment">// Offset from start of buffer resource</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">size_t</span> Size = 0; <span class="comment">// Reserved size of this allocation</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span>* CPUAddress = 0; <span class="comment">// The CPU-writeable address</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  D3D12_GPU_VIRTUAL_ADDRESS GPUAddress = 0; <span class="comment">// The GPU-visible address</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  Uint64 FrameNum = <span class="keyword">static_cast<</span>Uint64<span class="keyword">></span>(-1);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">class </span>GPURingBuffer : <span class="keyword">public</span> RingBuffer</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GPURingBuffer(<span class="keywordtype">size_t</span> MaxSize, IMemoryAllocator &Allocator, ID3D12Device *pd3d12Device, <span class="keywordtype">bool</span> AllowCPUAccess);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  GPURingBuffer(GPURingBuffer&& rhs) : </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  RingBuffer(<a class="code" href="namespacestd.html">std</a>::move(rhs)),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_CpuVirtualAddress(rhs.m_CpuVirtualAddress),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_GpuVirtualAddress(rhs.m_GpuVirtualAddress),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_pBuffer(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_pBuffer))</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  rhs.m_CpuVirtualAddress = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  rhs.m_GpuVirtualAddress = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  rhs.m_pBuffer.Release();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  GPURingBuffer& operator =(GPURingBuffer&& rhs)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  Destroy();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">static_cast<</span>RingBuffer&<span class="keyword">></span>(*this) = std::move(rhs);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_CpuVirtualAddress = rhs.m_CpuVirtualAddress;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_GpuVirtualAddress = rhs.m_GpuVirtualAddress;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_pBuffer = std::move(rhs.m_pBuffer);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  rhs.m_CpuVirtualAddress = 0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  rhs.m_GpuVirtualAddress = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  ~GPURingBuffer();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  DynamicAllocation Allocate(<span class="keywordtype">size_t</span> SizeInBytes)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">auto</span> Offset = RingBuffer::Allocate(SizeInBytes);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span> (Offset != RingBuffer::InvalidOffset)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  DynamicAllocation DynAlloc(m_pBuffer, Offset, SizeInBytes);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  DynAlloc.GPUAddress = m_GpuVirtualAddress + Offset;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  DynAlloc.CPUAddress = m_CpuVirtualAddress;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(DynAlloc.CPUAddress)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  DynAlloc.CPUAddress = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(DynAlloc.CPUAddress) + Offset;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> DynAlloc;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> DynamicAllocation(<span class="keyword">nullptr</span>, 0, 0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  GPURingBuffer(<span class="keyword">const</span> GPURingBuffer&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  GPURingBuffer& operator =(GPURingBuffer&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">void</span> Destroy();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">void</span>* m_CpuVirtualAddress;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  D3D12_GPU_VIRTUAL_ADDRESS m_GpuVirtualAddress;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  CComPtr<ID3D12Resource> m_pBuffer;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> };</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">class </span>DynamicUploadHeap</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  DynamicUploadHeap(IMemoryAllocator &Allocator, <span class="keywordtype">bool</span> bIsCPUAccessible, <span class="keyword">class</span> RenderDeviceD3D12Impl* pDevice, <span class="keywordtype">size_t</span> InitialSize);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  DynamicUploadHeap(<span class="keyword">const</span> DynamicUploadHeap&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  DynamicUploadHeap(DynamicUploadHeap&&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  DynamicUploadHeap& operator=(<span class="keyword">const</span> DynamicUploadHeap&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  DynamicUploadHeap& operator=(DynamicUploadHeap&&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  DynamicAllocation Allocate( <span class="keywordtype">size_t</span> SizeInBytes, <span class="keywordtype">size_t</span> Alignment = DEFAULT_ALIGN );</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">void</span> FinishFrame(Uint64 FenceValue, Uint64 LastCompletedFenceValue);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> m_bIsCPUAccessible;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// When a chunk of dynamic memory is requested, the heap first tries to allocate the memory in the largest GPU buffer. </span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// If allocation fails, a new ring buffer is created that provides enough space and requests memory from that buffer.</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// Only the largest buffer is used for allocation and all other buffers are released when GPU is done with corresponding frames</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  std::vector<GPURingBuffer, STDAllocatorRawMem<GPURingBuffer> > m_RingBuffers;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  IMemoryAllocator &m_Allocator;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  RenderDeviceD3D12Impl* m_pDeviceD3D12 = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">//std::mutex m_Mutex;</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> };</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_engine_d3_d11_attribs_8h_source.html b/doc/html/_engine_d3_d11_attribs_8h_source.html index 30d9e075..5c41308b 100644 --- a/doc/html/_engine_d3_d11_attribs_8h_source.html +++ b/doc/html/_engine_d3_d11_attribs_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">EngineD3D11Attribs.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85"> 37</a></span>  <span class="keyword">enum class</span> <a class="code" href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85">EngineD3D11DebugFlags</a> : Uint32</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85ab7d453859af84f92bcc33549827f05d9">VerifyCommittedShaderResources</a> = 0x01,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85a34263dc9e0364b5d7788048e0f993602">VerifyCommittedResourceRelevance</a> = 0x02</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d11_attribs.html"> 51</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html">EngineD3D11Attribs</a> : <span class="keyword">public</span> <a class="code" href="struct_diligent_1_1_engine_creation_attribs.html">EngineCreationAttribs</a></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d11_attribs.html#ae45ccd8517116ee19b002f85e80bf1b4"> 56</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html#ae45ccd8517116ee19b002f85e80bf1b4">DebugFlags</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html">EngineD3D11Attribs</a>() :</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html#ae45ccd8517116ee19b002f85e80bf1b4">DebugFlags</a>(0)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor"> #ifdef _DEBUG</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html#ae45ccd8517116ee19b002f85e80bf1b4">DebugFlags</a> = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(<a class="code" href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85ab7d453859af84f92bcc33549827f05d9">EngineD3D11DebugFlags::VerifyCommittedShaderResources</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  };</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div><div class="ttc" id="namespace_diligent_html_a5c8758ce3fd35ebeff55489fba521a85"><div class="ttname"><a href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85">Diligent::EngineD3D11DebugFlags</a></div><div class="ttdeci">EngineD3D11DebugFlags</div><div class="ttdoc">Debug flags that can be specified when creating Direct3D11-based engine implementation. </div><div class="ttdef"><b>Definition:</b> EngineD3D11Attribs.h:37</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85"> 37</a></span>  <span class="keyword">enum class</span> <a class="code" href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85">EngineD3D11DebugFlags</a> : Uint32</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85ab7d453859af84f92bcc33549827f05d9">VerifyCommittedShaderResources</a> = 0x01,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85a34263dc9e0364b5d7788048e0f993602">VerifyCommittedResourceRelevance</a> = 0x02</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d11_attribs.html"> 51</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html">EngineD3D11Attribs</a> : <span class="keyword">public</span> <a class="code" href="struct_diligent_1_1_engine_creation_attribs.html">EngineCreationAttribs</a></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d11_attribs.html#ae45ccd8517116ee19b002f85e80bf1b4"> 56</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html#ae45ccd8517116ee19b002f85e80bf1b4">DebugFlags</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html">EngineD3D11Attribs</a>() :</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html#ae45ccd8517116ee19b002f85e80bf1b4">DebugFlags</a>(0)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor"> #ifdef _DEBUG</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html#ae45ccd8517116ee19b002f85e80bf1b4">DebugFlags</a> = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(<a class="code" href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85ab7d453859af84f92bcc33549827f05d9">EngineD3D11DebugFlags::VerifyCommittedShaderResources</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  };</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div><div class="ttc" id="namespace_diligent_html_a5c8758ce3fd35ebeff55489fba521a85"><div class="ttname"><a href="namespace_diligent.html#a5c8758ce3fd35ebeff55489fba521a85">Diligent::EngineD3D11DebugFlags</a></div><div class="ttdeci">EngineD3D11DebugFlags</div><div class="ttdoc">Debug flags that can be specified when creating Direct3D11-based engine implementation. </div><div class="ttdef"><b>Definition:</b> EngineD3D11Attribs.h:37</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="struct_diligent_1_1_engine_d3_d11_attribs_html_ae45ccd8517116ee19b002f85e80bf1b4"><div class="ttname"><a href="struct_diligent_1_1_engine_d3_d11_attribs.html#ae45ccd8517116ee19b002f85e80bf1b4">Diligent::EngineD3D11Attribs::DebugFlags</a></div><div class="ttdeci">Uint32 DebugFlags</div><div class="ttdoc">Debug flags. See Diligent::EngineD3D11DebugFlags for a list of allowed values. </div><div class="ttdef"><b>Definition:</b> EngineD3D11Attribs.h:56</div></div> <div class="ttc" id="struct_diligent_1_1_engine_creation_attribs_html"><div class="ttname"><a href="struct_diligent_1_1_engine_creation_attribs.html">Diligent::EngineCreationAttribs</a></div><div class="ttdoc">Engine creation attibutes. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:952</div></div> @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_engine_d3_d11_defines_8h_source.html b/doc/html/_engine_d3_d11_defines_8h_source.html index ba74f920..fabb8b89 100644 --- a/doc/html/_engine_d3_d11_defines_8h_source.html +++ b/doc/html/_engine_d3_d11_defines_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">EngineD3D11Defines.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"># define VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"># define VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_engine_memory_8h_source.html b/doc/html/_engine_memory_8h_source.html index a9d0e09c..e7c4d6b6 100644 --- a/doc/html/_engine_memory_8h_source.html +++ b/doc/html/_engine_memory_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">EngineMemory.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">void</span> <a class="code" href="namespace_diligent.html#aafc497c26b864a48cd17ad3fca1fe386">SetRawAllocator</a>(IMemoryAllocator *pRawAllocator);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  IMemoryAllocator& <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#define ALLOCATE(Allocator, Desc, Size) (Allocator).Allocate(Size, Desc, __FILE__, __LINE__)</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define FREE(Allocator, Ptr) Allocator.Free(Ptr)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#if 0</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(<span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> <span class="keywordtype">int</span> dbgLineNumber)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> { </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a>().Allocate(Size, dbgDescription, dbgFileName, dbgLineNumber); </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>[](<span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> <span class="keywordtype">int</span> dbgLineNumber) </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> { </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a>().Allocate(Size, dbgDescription, dbgFileName, dbgLineNumber); </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// Arguments of the delete operator must exactly match the arguments of new</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span>* Ptr, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> <span class="keywordtype">int</span> dbgLineNumber)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> { </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a>().Free(Ptr); </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>[](<span class="keywordtype">void</span>* Ptr, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> <span class="keywordtype">int</span> dbgLineNumber)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> { </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a>().Free(Ptr); </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#define MemAlloc(Size, Desc) GetRawAllocator().Allocate(Size, Desc, __FILE__, __LINE__)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#define MemFree(Ptr) GetRawAllocator().Free(Ptr)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#define New(Desc) new(Desc, __FILE__, __LINE__)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#define Delete delete</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">void</span> <a class="code" href="namespace_diligent.html#aafc497c26b864a48cd17ad3fca1fe386">SetRawAllocator</a>(IMemoryAllocator *pRawAllocator);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  IMemoryAllocator& <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#define ALLOCATE(Allocator, Desc, Size) (Allocator).Allocate(Size, Desc, __FILE__, __LINE__)</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define FREE(Allocator, Ptr) Allocator.Free(Ptr)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#if 0</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(<span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> <span class="keywordtype">int</span> dbgLineNumber)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> { </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a>().Allocate(Size, dbgDescription, dbgFileName, dbgLineNumber); </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>[](<span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> <span class="keywordtype">int</span> dbgLineNumber) </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> { </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a>().Allocate(Size, dbgDescription, dbgFileName, dbgLineNumber); </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// Arguments of the delete operator must exactly match the arguments of new</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span>* Ptr, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> <span class="keywordtype">int</span> dbgLineNumber)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> { </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a>().Free(Ptr); </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>[](<span class="keywordtype">void</span>* Ptr, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> <span class="keywordtype">int</span> dbgLineNumber)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> { </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a>().Free(Ptr); </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#define MemAlloc(Size, Desc) GetRawAllocator().Allocate(Size, Desc, __FILE__, __LINE__)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#define MemFree(Ptr) GetRawAllocator().Free(Ptr)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#define New(Desc) new(Desc, __FILE__, __LINE__)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#define Delete delete</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespace_diligent_html_aef792a75d6b4771705fb4ed083428dc8"><div class="ttname"><a href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a></div><div class="ttdeci">IMemoryAllocator & GetRawAllocator()</div><div class="ttdoc">Returns raw memory allocator. </div><div class="ttdef"><b>Definition:</b> EngineMemory.cpp:46</div></div> <div class="ttc" id="namespace_diligent_html_aafc497c26b864a48cd17ad3fca1fe386"><div class="ttname"><a href="namespace_diligent.html#aafc497c26b864a48cd17ad3fca1fe386">Diligent::SetRawAllocator</a></div><div class="ttdeci">void SetRawAllocator(IMemoryAllocator *pRawAllocator)</div><div class="ttdoc">Sets raw memory allocator. This function must be called before any memory allocation/deallocation fun...</div><div class="ttdef"><b>Definition:</b> EngineMemory.cpp:36</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_errors_8h_source.html b/doc/html/_errors_8h_source.html index c14be07f..39e12b27 100644 --- a/doc/html/_errors_8h_source.html +++ b/doc/html/_errors_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">Errors.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <stdexcept></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "BasicPlatformDebug.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "FormatMessage.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "BasicFileSystem.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">template</span><<span class="keywordtype">bool</span>></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keywordtype">void</span> ThrowIf(std::string &&)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">template</span><></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ThrowIf<true>(std::string &&msg)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">throw</span> std::runtime_error( std::move(msg) );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">template</span><<span class="keywordtype">bool</span> bThrowException, <span class="keyword">typename</span> FirstArgType, <span class="keyword">typename</span>... RestArgsType></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keywordtype">void</span> LogError( <span class="keyword">const</span> <span class="keywordtype">char</span> *strFunctionName, <span class="keyword">const</span> <span class="keywordtype">char</span> *strFullFilePath, <span class="keywordtype">int</span> Line, <span class="keyword">const</span> FirstArgType& first, <span class="keyword">const</span> RestArgsType&... RestArgs )</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  std::string FileName;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  BasicFileSystem::SplitFilePath( strFullFilePath, <span class="keyword">nullptr</span>, &FileName );</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  Diligent::MsgStream ss;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ss << <span class="stringliteral">"The following error occured in the "</span> << strFunctionName << <span class="stringliteral">"() function ("</span> << FileName << <span class="stringliteral">", line "</span> << Line << <span class="stringliteral">"):\n"</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  Diligent::FormatMsg( ss, first, RestArgs... );</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">auto</span> strFullMessage = ss.str();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  OutputDebugMessage( bThrowException ? BasicPlatformDebug::DebugMessageSeverity::FatalError : BasicPlatformDebug::DebugMessageSeverity::Error, strFullMessage.c_str() );</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  ThrowIf<bThrowException>(std::move(strFullMessage));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define LOG_ERROR(...)\</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor"> LogError<false>(__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#define LOG_ERROR_ONCE(...)\</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"> static bool IsFirstTime = true; \</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"> if(IsFirstTime) \</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"> LogError<false>(__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"> IsFirstTime = false; \</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#define LOG_ERROR_AND_THROW(...)\</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> LogError<true>(__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__);\</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#define LOG_DEBUG_MESSAGE(Severity, ...)\</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"> Diligent::MsgStream ss; \</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor"> Diligent::FormatMsg( ss, ##__VA_ARGS__ );\</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"> OutputDebugMessage( Severity, ss.str().c_str() );\</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#define LOG_ERROR_MESSAGE(...) LOG_DEBUG_MESSAGE(BasicPlatformDebug::DebugMessageSeverity::Error, ##__VA_ARGS__)</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#define LOG_WARNING_MESSAGE(...) LOG_DEBUG_MESSAGE(BasicPlatformDebug::DebugMessageSeverity::Warning, ##__VA_ARGS__)</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#define LOG_INFO_MESSAGE(...) LOG_DEBUG_MESSAGE(BasicPlatformDebug::DebugMessageSeverity::Info, ##__VA_ARGS__)</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#define LOG_DEBUG_MESSAGE_ONCE(Severity, ...)\</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor"> static bool IsFirstTime = true; \</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor"> if(IsFirstTime) \</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor"> LOG_DEBUG_MESSAGE(Severity, ##__VA_ARGS__);\</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor"> IsFirstTime = false; \</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#define LOG_ERROR_MESSAGE_ONCE(...) LOG_DEBUG_MESSAGE_ONCE(BasicPlatformDebug::DebugMessageSeverity::Error, ##__VA_ARGS__)</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#define LOG_WARNING_MESSAGE_ONCE(...) LOG_DEBUG_MESSAGE_ONCE(BasicPlatformDebug::DebugMessageSeverity::Warning, ##__VA_ARGS__)</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#define LOG_INFO_MESSAGE_ONCE(...) LOG_DEBUG_MESSAGE_ONCE(BasicPlatformDebug::DebugMessageSeverity::Info, ##__VA_ARGS__)</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <stdexcept></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "BasicPlatformDebug.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "FormatMessage.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "BasicFileSystem.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">template</span><<span class="keywordtype">bool</span>></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keywordtype">void</span> ThrowIf(std::string &&)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">template</span><></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ThrowIf<true>(std::string &&msg)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">throw</span> std::runtime_error( std::move(msg) );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">template</span><<span class="keywordtype">bool</span> bThrowException, <span class="keyword">typename</span> FirstArgType, <span class="keyword">typename</span>... RestArgsType></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keywordtype">void</span> LogError( <span class="keyword">const</span> <span class="keywordtype">char</span> *strFunctionName, <span class="keyword">const</span> <span class="keywordtype">char</span> *strFullFilePath, <span class="keywordtype">int</span> Line, <span class="keyword">const</span> FirstArgType& first, <span class="keyword">const</span> RestArgsType&... RestArgs )</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  std::string FileName;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  BasicFileSystem::SplitFilePath( strFullFilePath, <span class="keyword">nullptr</span>, &FileName );</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  Diligent::MsgStream ss;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ss << <span class="stringliteral">"The following error occured in the "</span> << strFunctionName << <span class="stringliteral">"() function ("</span> << FileName << <span class="stringliteral">", line "</span> << Line << <span class="stringliteral">"):\n"</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  Diligent::FormatMsg( ss, first, RestArgs... );</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">auto</span> strFullMessage = ss.str();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  OutputDebugMessage( bThrowException ? BasicPlatformDebug::DebugMessageSeverity::FatalError : BasicPlatformDebug::DebugMessageSeverity::Error, strFullMessage.c_str() );</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  ThrowIf<bThrowException>(std::move(strFullMessage));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define LOG_ERROR(...)\</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor"> LogError<false>(__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#define LOG_ERROR_ONCE(...)\</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"> static bool IsFirstTime = true; \</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"> if(IsFirstTime) \</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"> LogError<false>(__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"> IsFirstTime = false; \</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#define LOG_ERROR_AND_THROW(...)\</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> LogError<true>(__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__);\</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#define LOG_DEBUG_MESSAGE(Severity, ...)\</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"> Diligent::MsgStream ss; \</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor"> Diligent::FormatMsg( ss, ##__VA_ARGS__ );\</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"> OutputDebugMessage( Severity, ss.str().c_str() );\</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#define LOG_ERROR_MESSAGE(...) LOG_DEBUG_MESSAGE(BasicPlatformDebug::DebugMessageSeverity::Error, ##__VA_ARGS__)</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#define LOG_WARNING_MESSAGE(...) LOG_DEBUG_MESSAGE(BasicPlatformDebug::DebugMessageSeverity::Warning, ##__VA_ARGS__)</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#define LOG_INFO_MESSAGE(...) LOG_DEBUG_MESSAGE(BasicPlatformDebug::DebugMessageSeverity::Info, ##__VA_ARGS__)</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#define LOG_DEBUG_MESSAGE_ONCE(Severity, ...)\</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">do{ \</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor"> static bool IsFirstTime = true; \</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor"> if(IsFirstTime) \</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor"> LOG_DEBUG_MESSAGE(Severity, ##__VA_ARGS__);\</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor"> IsFirstTime = false; \</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">}while(false)</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#define LOG_ERROR_MESSAGE_ONCE(...) LOG_DEBUG_MESSAGE_ONCE(BasicPlatformDebug::DebugMessageSeverity::Error, ##__VA_ARGS__)</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#define LOG_WARNING_MESSAGE_ONCE(...) LOG_DEBUG_MESSAGE_ONCE(BasicPlatformDebug::DebugMessageSeverity::Warning, ##__VA_ARGS__)</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#define LOG_INFO_MESSAGE_ONCE(...) LOG_DEBUG_MESSAGE_ONCE(BasicPlatformDebug::DebugMessageSeverity::Info, ##__VA_ARGS__)</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_f_b_o_cache_8h_source.html b/doc/html/_f_b_o_cache_8h_source.html index 58aed101..d2dcc64b 100644 --- a/doc/html/_f_b_o_cache_8h_source.html +++ b/doc/html/_f_b_o_cache_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">FBOCache.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "LockHelper.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>FBOCache</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  FBOCache();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ~FBOCache();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  FBOCache(<span class="keyword">const</span> FBOCache&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  FBOCache( FBOCache&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FBOCache& operator = (<span class="keyword">const</span> FBOCache&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  FBOCache& operator = ( FBOCache&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> GLObjectWrappers::GLFrameBufferObj& GetFBO( Uint32 NumRenderTargets, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ITextureView *ppRenderTargets[], </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ITextureView *pDepthStencil,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">class</span> GLContextState &ContextState);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> OnReleaseTexture(ITexture *pTexture);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// This structure is used as the key to find FBO</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">struct </span>FBOCacheKey</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Using pointers is not reliable!</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  Uint32 NumRenderTargets;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Unique IDs of textures bound as render targets</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  Diligent::UniqueIdentifier RTIds[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  TextureViewDesc RTVDescs[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// Unique IDs of texture bound as depth stencil</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Diligent::UniqueIdentifier DSId;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  TextureViewDesc DSVDesc;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">mutable</span> <span class="keywordtype">size_t</span> Hash;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> FBOCacheKey &Key)<span class="keyword">const</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  FBOCacheKey() :</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  NumRenderTargets( 0 ),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  DSId(0),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Hash(0)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> rt = 0; rt < <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>; ++rt )</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  RTIds[rt] = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">struct </span>FBOCacheKeyHashFunc</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  std::size_t operator() ( <span class="keyword">const</span> FBOCacheKey& Key )<span class="keyword">const</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  };</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">friend</span> <span class="keyword">class </span>RenderDeviceGLImpl;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  ThreadingTools::LockFlag m_CacheLockFlag;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  std::unordered_map<FBOCacheKey, GLObjectWrappers::GLFrameBufferObj, FBOCacheKeyHashFunc> m_Cache;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// Multimap that sets up correspondence between unique texture id and all</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// FBOs it is used in</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  std::unordered_multimap<Diligent::UniqueIdentifier, FBOCacheKey> m_TexIdToKey;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> };</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "LockHelper.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>FBOCache</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  FBOCache();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ~FBOCache();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  FBOCache(<span class="keyword">const</span> FBOCache&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  FBOCache( FBOCache&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FBOCache& operator = (<span class="keyword">const</span> FBOCache&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  FBOCache& operator = ( FBOCache&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> GLObjectWrappers::GLFrameBufferObj& GetFBO( Uint32 NumRenderTargets, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ITextureView *ppRenderTargets[], </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ITextureView *pDepthStencil,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">class</span> GLContextState &ContextState);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> OnReleaseTexture(ITexture *pTexture);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// This structure is used as the key to find FBO</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">struct </span>FBOCacheKey</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Using pointers is not reliable!</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  Uint32 NumRenderTargets;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Unique IDs of textures bound as render targets</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  Diligent::UniqueIdentifier RTIds[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  TextureViewDesc RTVDescs[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// Unique IDs of texture bound as depth stencil</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Diligent::UniqueIdentifier DSId;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  TextureViewDesc DSVDesc;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">mutable</span> <span class="keywordtype">size_t</span> Hash;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> FBOCacheKey &Key)<span class="keyword">const</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  FBOCacheKey() :</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  NumRenderTargets( 0 ),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  DSId(0),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Hash(0)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> rt = 0; rt < <a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>; ++rt )</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  RTIds[rt] = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">struct </span>FBOCacheKeyHashFunc</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  std::size_t operator() ( <span class="keyword">const</span> FBOCacheKey& Key )<span class="keyword">const</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  };</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">friend</span> <span class="keyword">class </span>RenderDeviceGLImpl;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  ThreadingTools::LockFlag m_CacheLockFlag;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  std::unordered_map<FBOCacheKey, GLObjectWrappers::GLFrameBufferObj, FBOCacheKeyHashFunc> m_Cache;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// Multimap that sets up correspondence between unique texture id and all</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// FBOs it is used in</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  std::unordered_multimap<Diligent::UniqueIdentifier, FBOCacheKey> m_TexIdToKey;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> };</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespace_diligent_html_ac667e59fc3ba021e3bd1d1424a3674d8"><div class="ttname"><a href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">Diligent::MaxRenderTargets</a></div><div class="ttdeci">static constexpr Uint32 MaxRenderTargets</div><div class="ttdoc">Maximum number of simultaneous render targets. </div><div class="ttdef"><b>Definition:</b> Constants.h:36</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_file_stream_8h_source.html b/doc/html/_file_stream_8h_source.html index f6f2c880..1b14cf32 100644 --- a/doc/html/_file_stream_8h_source.html +++ b/doc/html/_file_stream_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">FileStream.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// {E67F386C-6A5A-4A24-A0CE-C66435465D41}</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a315634997f8aa64710c3ad69f6bb814b"> 37</a></span> <span class="keyword">static</span> constexpr <a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">INTERFACE_ID</a> <a class="code" href="namespace_diligent.html#a315634997f8aa64710c3ad69f6bb814b">IID_FileStream</a> = </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> { 0xe67f386c, 0x6a5a, 0x4a24, { 0xa0, 0xce, 0xc6, 0x64, 0x35, 0x46, 0x5d, 0x41 } };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_file_stream.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_file_stream.html">IFileStream</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_object.html">IObject</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_i_file_stream.html#a2e644005a8777e5b34dcb429fff9fd63">Read</a>( <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> BufferSize ) = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_file_stream.html#a2e644005a8777e5b34dcb429fff9fd63">Read</a>( <a class="code" href="class_diligent_1_1_i_data_blob.html">IDataBlob</a> *pData ) = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_i_file_stream.html#add05e29bb6d70dfdf377d014162d35e1">Write</a>( <span class="keyword">const</span> <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> Size ) = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetSize() = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsValid() = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="ttc" id="class_diligent_1_1_i_file_stream_html_a2e644005a8777e5b34dcb429fff9fd63"><div class="ttname"><a href="class_diligent_1_1_i_file_stream.html#a2e644005a8777e5b34dcb429fff9fd63">Diligent::IFileStream::Read</a></div><div class="ttdeci">virtual bool Read(void *Data, size_t BufferSize)=0</div><div class="ttdoc">Reads data from the stream. </div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// {E67F386C-6A5A-4A24-A0CE-C66435465D41}</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a315634997f8aa64710c3ad69f6bb814b"> 37</a></span> <span class="keyword">static</span> constexpr <a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">INTERFACE_ID</a> <a class="code" href="namespace_diligent.html#a315634997f8aa64710c3ad69f6bb814b">IID_FileStream</a> = </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> { 0xe67f386c, 0x6a5a, 0x4a24, { 0xa0, 0xce, 0xc6, 0x64, 0x35, 0x46, 0x5d, 0x41 } };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_file_stream.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_file_stream.html">IFileStream</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_object.html">IObject</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_i_file_stream.html#a2e644005a8777e5b34dcb429fff9fd63">Read</a>( <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> BufferSize ) = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_file_stream.html#a2e644005a8777e5b34dcb429fff9fd63">Read</a>( <a class="code" href="class_diligent_1_1_i_data_blob.html">IDataBlob</a> *pData ) = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_i_file_stream.html#add05e29bb6d70dfdf377d014162d35e1">Write</a>( <span class="keyword">const</span> <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> Size ) = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetSize() = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsValid() = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="ttc" id="class_diligent_1_1_i_file_stream_html_a2e644005a8777e5b34dcb429fff9fd63"><div class="ttname"><a href="class_diligent_1_1_i_file_stream.html#a2e644005a8777e5b34dcb429fff9fd63">Diligent::IFileStream::Read</a></div><div class="ttdeci">virtual bool Read(void *Data, size_t BufferSize)=0</div><div class="ttdoc">Reads data from the stream. </div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="class_diligent_1_1_i_data_blob_html"><div class="ttname"><a href="class_diligent_1_1_i_data_blob.html">Diligent::IDataBlob</a></div><div class="ttdoc">Base interface for a file stream. </div><div class="ttdef"><b>Definition:</b> DataBlob.h:39</div></div> <div class="ttc" id="namespace_diligent_html_a315634997f8aa64710c3ad69f6bb814b"><div class="ttname"><a href="namespace_diligent.html#a315634997f8aa64710c3ad69f6bb814b">Diligent::IID_FileStream</a></div><div class="ttdeci">static constexpr INTERFACE_ID IID_FileStream</div><div class="ttdoc">IFileStream interface unique identifier. </div><div class="ttdef"><b>Definition:</b> FileStream.h:37</div></div> diff --git a/doc/html/_file_system_8h_source.html b/doc/html/_file_system_8h_source.html index 4d23001d..c1990701 100644 --- a/doc/html/_file_system_8h_source.html +++ b/doc/html/_file_system_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">FileSystem.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#if defined( PLATFORM_WIN32 )</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor"> #include "Win32FileSystem.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">typedef</span> WindowsFileSystem FileSystem;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">typedef</span> WindowsFile CFile;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#elif defined( PLATFORM_UNIVERSAL_WINDOWS )</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"> #include "UWPFileSystem.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">typedef</span> WindowsStoreFileSystem FileSystem;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> WindowsStoreFile CFile;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#elif defined ( PLATFORM_ANDROID )</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> #include "AndroidFileSystem.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> AndroidFileSystem FileSystem;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> AndroidFile CFile;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#elif defined ( PLATFORM_LINUX )</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"> #include "LinuxFileSystem.h"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typedef</span> LinuxFileSystem FileSystem;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">typedef</span> LinuxFile CFile;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#elif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor"> #error Unsupported platform</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#if defined( PLATFORM_WIN32 )</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor"> #include "Win32FileSystem.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">typedef</span> WindowsFileSystem FileSystem;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">typedef</span> WindowsFile CFile;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#elif defined( PLATFORM_UNIVERSAL_WINDOWS )</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"> #include "UWPFileSystem.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">typedef</span> WindowsStoreFileSystem FileSystem;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> WindowsStoreFile CFile;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#elif defined ( PLATFORM_ANDROID )</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> #include "AndroidFileSystem.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> AndroidFileSystem FileSystem;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> AndroidFile CFile;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#elif defined ( PLATFORM_LINUX )</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"> #include "LinuxFileSystem.h"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typedef</span> LinuxFileSystem FileSystem;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">typedef</span> LinuxFile CFile;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#elif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor"> #error Unsupported platform</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_file_wrapper_8h_source.html b/doc/html/_file_wrapper_8h_source.html index 4a2b3030..979cd010 100644 --- a/doc/html/_file_wrapper_8h_source.html +++ b/doc/html/_file_wrapper_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">FileWrapper.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "FileSystem.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">class </span>FileWrapper</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  FileWrapper( ) : </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_pFile(nullptr)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {}</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  FileWrapper( <span class="keyword">const</span> Diligent::Char *Path, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  EFileAccessMode Access = EFileAccessMode::Read) : </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_pFile( nullptr )</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  FileOpenAttribs OpenAttribs(Path, Access);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  Open(OpenAttribs);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ~FileWrapper()</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  Close();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span> Open(<span class="keyword">const</span> FileOpenAttribs& OpenAttribs)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  VERIFY( !m_pFile, <span class="stringliteral">"Another file already attached"</span> );</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  Close();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_pFile = FileSystem::OpenFile( OpenAttribs );</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  CFile *Detach()</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  CFile *pFile = m_pFile;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_pFile = NULL;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> pFile;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">void</span> Attach(CFile *pFile)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  VERIFY(!m_pFile, <span class="stringliteral">"Another file already attached"</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  Close();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_pFile = pFile;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> Close()</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>( m_pFile )</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  FileSystem::ReleaseFile(m_pFile);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_pFile = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">operator</span> CFile*(){<span class="keywordflow">return</span> m_pFile;}</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  CFile* operator->(){<span class="keywordflow">return</span> m_pFile;}</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  FileWrapper(<span class="keyword">const</span> FileWrapper&);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">const</span> FileWrapper& operator=(<span class="keyword">const</span> FileWrapper&);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  CFile *m_pFile;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "FileSystem.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">class </span>FileWrapper</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  FileWrapper( ) : </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_pFile(nullptr)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {}</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  FileWrapper( <span class="keyword">const</span> Diligent::Char *Path, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  EFileAccessMode Access = EFileAccessMode::Read) : </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_pFile( nullptr )</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  FileOpenAttribs OpenAttribs(Path, Access);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  Open(OpenAttribs);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ~FileWrapper()</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  Close();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span> Open(<span class="keyword">const</span> FileOpenAttribs& OpenAttribs)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  VERIFY( !m_pFile, <span class="stringliteral">"Another file already attached"</span> );</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  Close();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_pFile = FileSystem::OpenFile( OpenAttribs );</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  CFile *Detach()</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  CFile *pFile = m_pFile;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_pFile = NULL;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> pFile;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">void</span> Attach(CFile *pFile)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  VERIFY(!m_pFile, <span class="stringliteral">"Another file already attached"</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  Close();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_pFile = pFile;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> Close()</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>( m_pFile )</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  FileSystem::ReleaseFile(m_pFile);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_pFile = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">operator</span> CFile*(){<span class="keywordflow">return</span> m_pFile;}</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  CFile* operator->(){<span class="keywordflow">return</span> m_pFile;}</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  FileWrapper(<span class="keyword">const</span> FileWrapper&);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">const</span> FileWrapper& operator=(<span class="keyword">const</span> FileWrapper&);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  CFile *m_pFile;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_fixed_block_memory_allocator_8h_source.html b/doc/html/_fixed_block_memory_allocator_8h_source.html index 4c42e83f..6dfec586 100644 --- a/doc/html/_fixed_block_memory_allocator_8h_source.html +++ b/doc/html/_fixed_block_memory_allocator_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">FixedBlockMemoryAllocator.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <mutex></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <unordered_set></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> FillWithDebugPattern(<span class="keywordtype">void</span> *ptr, Uint8 Pattern, <span class="keywordtype">size_t</span> NumBytes)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  memset(ptr, Pattern, NumBytes);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"> #define FillWithDebugPattern(...)</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_diligent_1_1_fixed_block_memory_allocator.html"> 50</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> : <span class="keyword">public</span> IMemoryAllocator</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>(IMemoryAllocator &RawMemoryAllocator, <span class="keywordtype">size_t</span> BlockSize, Uint32 NumBlocksInPage);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  ~<a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html#a97106c54ad140316e521eaa104550537">Allocate</a>( <span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html#a88b30af4317f6a0cdb305f4a5d942f2b">Free</a>(<span class="keywordtype">void</span> *Ptr)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>(<a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>& operator = (<a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">void</span> CreateNewPage();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// Memory page class is based on the fixed-size memory pool described in "Fast Efficient Fixed-Size Memory Pool"</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// by Ben Kenwright</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">class </span>MemoryPage</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  { </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">static</span> constexpr Uint8 NewPageMemPattern = 0xAA;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">static</span> constexpr Uint8 AllocatedBlockMemPattern = 0xAB;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">static</span> constexpr Uint8 DeallocatedBlockMemPattern = 0xDE;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">static</span> constexpr Uint8 InitializedBlockMemPattern = 0xCF;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  MemoryPage(<a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &OwnerAllocator):</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_pOwnerAllocator(&OwnerAllocator),</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_NumFreeBlocks(OwnerAllocator.m_NumBlocksInPage),</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_NumInitializedBlocks(0)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">auto</span> PageSize = OwnerAllocator.m_BlockSize * OwnerAllocator.m_NumBlocksInPage;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_pPageStart = <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  OwnerAllocator.m_RawMemoryAllocator.Allocate(PageSize, <span class="stringliteral">"FixedBlockMemoryAllocator page"</span>, __FILE__, __LINE__)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  );</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_pNextFreeBlock = m_pPageStart;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  FillWithDebugPattern(m_pPageStart, NewPageMemPattern, PageSize);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  MemoryPage(MemoryPage&& Page) : </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_NumFreeBlocks(Page.m_NumFreeBlocks),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_NumInitializedBlocks(Page.m_NumInitializedBlocks),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_pPageStart(Page.m_pPageStart),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_pNextFreeBlock(Page.m_pNextFreeBlock),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_pOwnerAllocator(Page.m_pOwnerAllocator)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  Page.m_NumFreeBlocks = 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  Page.m_NumInitializedBlocks = 0;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  Page.m_pPageStart = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  Page.m_pNextFreeBlock = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Page.m_pOwnerAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  ~MemoryPage() </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  { </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span>(m_pOwnerAllocator)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_pOwnerAllocator->m_RawMemoryAllocator.Free(m_pPageStart);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordtype">void</span>* GetBlockStartAddress(Uint32 BlockIndex)<span class="keyword"> const</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  VERIFY_EXPR(m_pOwnerAllocator != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  VERIFY(BlockIndex >= 0 && BlockIndex < m_pOwnerAllocator->m_NumBlocksInPage, <span class="stringliteral">"Invalid block index"</span> );</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_pPageStart) + BlockIndex * m_pOwnerAllocator->m_BlockSize;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> dbgVerifyAddress(<span class="keyword">const</span> <span class="keywordtype">void</span>* pBlockAddr)<span class="keyword">const</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">size_t</span> Delta = <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>Uint8*<span class="keyword">></span>(pBlockAddr) - reinterpret_cast<Uint8*>(m_pPageStart);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  VERIFY(Delta % m_pOwnerAllocator->m_BlockSize == 0, <span class="stringliteral">"Invalid address"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  Uint32 BlockIndex = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(Delta / m_pOwnerAllocator->m_BlockSize);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  VERIFY(BlockIndex >= 0 && BlockIndex < m_pOwnerAllocator->m_NumBlocksInPage, <span class="stringliteral">"Invalid block index"</span> );</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor"> #define dbgVerifyAddress(...)</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html#a97106c54ad140316e521eaa104550537">Allocate</a>()</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  VERIFY_EXPR(m_pOwnerAllocator != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (m_NumFreeBlocks == 0)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  VERIFY_EXPR(m_NumInitializedBlocks == m_pOwnerAllocator->m_NumBlocksInPage);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Initialize the next block</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span> (m_NumInitializedBlocks < m_pOwnerAllocator->m_NumBlocksInPage)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Link next uninitialized block to the end of the list:</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">//</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// ___________ ___________</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// | | | |</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// | 0xcdcdcd | -->| 0xcdcdcd | m_NumInitializedBlocks </span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// |-----------| | |-----------|</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// | | | | |</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// m_NumInitializedBlocks | 0xcdcdcd | ==> ---| | </span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// |-----------| |-----------|</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// </span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// ~ ~ ~ ~</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// | | | |</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// 0 | | | | </span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// ----------- -----------</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// </span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">auto</span> *pUninitializedBlock = GetBlockStartAddress(m_NumInitializedBlocks);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  FillWithDebugPattern(pUninitializedBlock, InitializedBlockMemPattern, m_pOwnerAllocator->m_BlockSize);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">void</span>** ppNextBlock = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>**<span class="keyword">></span>( pUninitializedBlock );</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  ++m_NumInitializedBlocks;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>( m_NumInitializedBlocks < m_pOwnerAllocator->m_NumBlocksInPage ) </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  *ppNextBlock = GetBlockStartAddress(m_NumInitializedBlocks);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  *ppNextBlock = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">void</span>* res = m_pNextFreeBlock;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  dbgVerifyAddress(res);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// Move pointer to the next free block</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_pNextFreeBlock = *<span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>**<span class="keyword">></span>(m_pNextFreeBlock);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  --m_NumFreeBlocks;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span>(m_NumFreeBlocks != 0)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  dbgVerifyAddress(m_pNextFreeBlock);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  VERIFY_EXPR(m_pNextFreeBlock == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  FillWithDebugPattern(res, AllocatedBlockMemPattern, m_pOwnerAllocator->m_BlockSize);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordtype">void</span> DeAllocate(<span class="keywordtype">void</span>* p)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  VERIFY_EXPR(m_pOwnerAllocator != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  dbgVerifyAddress(p);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  FillWithDebugPattern(p, DeallocatedBlockMemPattern, m_pOwnerAllocator->m_BlockSize);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// Add block to the beginning of the linked list</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  *<span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>**<span class="keyword">></span>(p) = m_pNextFreeBlock;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_pNextFreeBlock = p;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  ++m_NumFreeBlocks;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordtype">bool</span> HasSpace()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumFreeBlocks>0;}</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordtype">bool</span> HasAllocations()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumFreeBlocks<m_NumInitializedBlocks;}</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  MemoryPage(<span class="keyword">const</span> MemoryPage&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  MemoryPage& operator = (<span class="keyword">const</span> MemoryPage)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  MemoryPage& operator = (MemoryPage&&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  Uint32 m_NumFreeBlocks = 0; <span class="comment">// Num of remaining blocks</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  Uint32 m_NumInitializedBlocks = 0; <span class="comment">// Num of initialized blocks</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordtype">void</span>* m_pPageStart = <span class="keyword">nullptr</span>; <span class="comment">// Beginning of memory pool</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordtype">void</span>* m_pNextFreeBlock = <span class="keyword">nullptr</span>; <span class="comment">// Num of next free block</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> *m_pOwnerAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  };</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  std::vector<MemoryPage, STDAllocatorRawMem<MemoryPage> > m_PagePool;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  std::unordered_set<size_t, std::hash<size_t>, std::equal_to<size_t>, STDAllocatorRawMem<size_t> > m_AvailablePages;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">typedef</span> std::pair<void* const, size_t> AddrToPageIdMapElem;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  std::unordered_map<void*, size_t, std::hash<void*>, std::equal_to<void*>, STDAllocatorRawMem<AddrToPageIdMapElem> > m_AddrToPageId;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  std::mutex m_Mutex;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  IMemoryAllocator &m_RawMemoryAllocator;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordtype">size_t</span> m_BlockSize;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  Uint32 m_NumBlocksInPage;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> };</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> IMemoryAllocator& <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="keyword">class </span>ObjectPool</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="namespace_diligent.html#aafc497c26b864a48cd17ad3fca1fe386">SetRawAllocator</a>(IMemoryAllocator &Allocator)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span>(m_bPoolInitialized && m_pRawAllocator != &Allocator)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Setting pool raw allocator after the pool has been initialized has no effect"</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  m_pRawAllocator = &Allocator;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> SetPageSize(Uint32 NumAllocationsInPage)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">if</span>(m_bPoolInitialized && m_NumAllocationsInPage != NumAllocationsInPage)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Setting pool page size after the pool has been initialized has no effect"</span>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_NumAllocationsInPage = NumAllocationsInPage;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">static</span> ObjectPool& GetPool()</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">static</span> ObjectPool ThePool;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_bPoolInitialized = <span class="keyword">true</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">return</span> ThePool;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ... CtorArgTypes></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  ObjectType* NewObject(<span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber, CtorArgTypes&& ... CtorArgs)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">void</span> *pRawMem = m_FixedBlockAlloctor.Allocate(<span class="keyword">sizeof</span>(ObjectType), dbgDescription, dbgFileName, dbgLineNumber);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> <span class="keyword">new</span>(pRawMem) ObjectType(std::forward<CtorArgTypes>(CtorArgs)...);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">catch</span> (...)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_FixedBlockAlloctor.Free(pRawMem);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">void</span> Destroy(ObjectType* pObj)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>(pObj != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  pObj->~ObjectType();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_FixedBlockAlloctor.Free(pObj);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">static</span> Uint32 m_NumAllocationsInPage;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keyword">static</span> IMemoryAllocator *m_pRawAllocator;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  ObjectPool() : </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  m_FixedBlockAlloctor(m_pRawAllocator ? *m_pRawAllocator : <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), sizeof(ObjectType), m_NumAllocationsInPage)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {}</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> m_bPoolInitialized;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  FixedBlockMemoryAllocator m_FixedBlockAlloctor;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> };</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> Uint32 ObjectPool<ObjectType>::m_NumAllocationsInPage = 64;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> IMemoryAllocator* ObjectPool<ObjectType>::m_pRawAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="keywordtype">bool</span> ObjectPool<ObjectType>::m_bPoolInitialized = <span class="keyword">false</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor">#define SET_POOL_RAW_ALLOCATOR(ObjectType, Allocator)ObjectPool<ObjectType>::SetRawAllocator(Allocator)</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor">#define SET_POOL_PAGE_SIZE(ObjectType, NumAllocationsInPage)ObjectPool<ObjectType>::SetPageSize(NumAllocationsInPage)</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor">#define NEW_POOL_OBJECT(ObjectType, Desc, ...)ObjectPool<ObjectType>::GetPool().NewObject(Desc, __FILE__, __LINE__, ##__VA_ARGS__)</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="preprocessor">#define DESTROY_POOL_OBJECT(pObject)ObjectPool< std::remove_reference<decltype(*pObject)>::type >::GetPool().Destroy(pObject)</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <mutex></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <unordered_set></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> FillWithDebugPattern(<span class="keywordtype">void</span> *ptr, Uint8 Pattern, <span class="keywordtype">size_t</span> NumBytes)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  memset(ptr, Pattern, NumBytes);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"> #define FillWithDebugPattern(...)</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_diligent_1_1_fixed_block_memory_allocator.html"> 50</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> : <span class="keyword">public</span> IMemoryAllocator</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>(IMemoryAllocator &RawMemoryAllocator, <span class="keywordtype">size_t</span> BlockSize, Uint32 NumBlocksInPage);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  ~<a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html#a97106c54ad140316e521eaa104550537">Allocate</a>( <span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html#a88b30af4317f6a0cdb305f4a5d942f2b">Free</a>(<span class="keywordtype">void</span> *Ptr)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>(<a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>& operator = (<a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">void</span> CreateNewPage();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// Memory page class is based on the fixed-size memory pool described in "Fast Efficient Fixed-Size Memory Pool"</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// by Ben Kenwright</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">class </span>MemoryPage</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  { </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">static</span> constexpr Uint8 NewPageMemPattern = 0xAA;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">static</span> constexpr Uint8 AllocatedBlockMemPattern = 0xAB;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">static</span> constexpr Uint8 DeallocatedBlockMemPattern = 0xDE;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">static</span> constexpr Uint8 InitializedBlockMemPattern = 0xCF;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  MemoryPage(<a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &OwnerAllocator):</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_pOwnerAllocator(&OwnerAllocator),</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_NumFreeBlocks(OwnerAllocator.m_NumBlocksInPage),</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_NumInitializedBlocks(0)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">auto</span> PageSize = OwnerAllocator.m_BlockSize * OwnerAllocator.m_NumBlocksInPage;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_pPageStart = <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  OwnerAllocator.m_RawMemoryAllocator.Allocate(PageSize, <span class="stringliteral">"FixedBlockMemoryAllocator page"</span>, __FILE__, __LINE__)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  );</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_pNextFreeBlock = m_pPageStart;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  FillWithDebugPattern(m_pPageStart, NewPageMemPattern, PageSize);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  MemoryPage(MemoryPage&& Page) : </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_NumFreeBlocks(Page.m_NumFreeBlocks),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_NumInitializedBlocks(Page.m_NumInitializedBlocks),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_pPageStart(Page.m_pPageStart),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_pNextFreeBlock(Page.m_pNextFreeBlock),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_pOwnerAllocator(Page.m_pOwnerAllocator)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  Page.m_NumFreeBlocks = 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  Page.m_NumInitializedBlocks = 0;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  Page.m_pPageStart = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  Page.m_pNextFreeBlock = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Page.m_pOwnerAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  ~MemoryPage() </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  { </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span>(m_pOwnerAllocator)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_pOwnerAllocator->m_RawMemoryAllocator.Free(m_pPageStart);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordtype">void</span>* GetBlockStartAddress(Uint32 BlockIndex)<span class="keyword"> const</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  VERIFY_EXPR(m_pOwnerAllocator != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  VERIFY(BlockIndex >= 0 && BlockIndex < m_pOwnerAllocator->m_NumBlocksInPage, <span class="stringliteral">"Invalid block index"</span> );</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_pPageStart) + BlockIndex * m_pOwnerAllocator->m_BlockSize;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> dbgVerifyAddress(<span class="keyword">const</span> <span class="keywordtype">void</span>* pBlockAddr)<span class="keyword">const</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">size_t</span> Delta = <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>Uint8*<span class="keyword">></span>(pBlockAddr) - reinterpret_cast<Uint8*>(m_pPageStart);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  VERIFY(Delta % m_pOwnerAllocator->m_BlockSize == 0, <span class="stringliteral">"Invalid address"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  Uint32 BlockIndex = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(Delta / m_pOwnerAllocator->m_BlockSize);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  VERIFY(BlockIndex >= 0 && BlockIndex < m_pOwnerAllocator->m_NumBlocksInPage, <span class="stringliteral">"Invalid block index"</span> );</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor"> #define dbgVerifyAddress(...)</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html#a97106c54ad140316e521eaa104550537">Allocate</a>()</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  VERIFY_EXPR(m_pOwnerAllocator != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (m_NumFreeBlocks == 0)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  VERIFY_EXPR(m_NumInitializedBlocks == m_pOwnerAllocator->m_NumBlocksInPage);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Initialize the next block</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span> (m_NumInitializedBlocks < m_pOwnerAllocator->m_NumBlocksInPage)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Link next uninitialized block to the end of the list:</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">//</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// ___________ ___________</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// | | | |</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// | 0xcdcdcd | -->| 0xcdcdcd | m_NumInitializedBlocks </span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// |-----------| | |-----------|</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// | | | | |</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// m_NumInitializedBlocks | 0xcdcdcd | ==> ---| | </span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// |-----------| |-----------|</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// </span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// ~ ~ ~ ~</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// | | | |</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// 0 | | | | </span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// ----------- -----------</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// </span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">auto</span> *pUninitializedBlock = GetBlockStartAddress(m_NumInitializedBlocks);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  FillWithDebugPattern(pUninitializedBlock, InitializedBlockMemPattern, m_pOwnerAllocator->m_BlockSize);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">void</span>** ppNextBlock = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>**<span class="keyword">></span>( pUninitializedBlock );</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  ++m_NumInitializedBlocks;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>( m_NumInitializedBlocks < m_pOwnerAllocator->m_NumBlocksInPage ) </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  *ppNextBlock = GetBlockStartAddress(m_NumInitializedBlocks);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  *ppNextBlock = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">void</span>* res = m_pNextFreeBlock;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  dbgVerifyAddress(res);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// Move pointer to the next free block</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_pNextFreeBlock = *<span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>**<span class="keyword">></span>(m_pNextFreeBlock);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  --m_NumFreeBlocks;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span>(m_NumFreeBlocks != 0)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  dbgVerifyAddress(m_pNextFreeBlock);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  VERIFY_EXPR(m_pNextFreeBlock == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  FillWithDebugPattern(res, AllocatedBlockMemPattern, m_pOwnerAllocator->m_BlockSize);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordtype">void</span> DeAllocate(<span class="keywordtype">void</span>* p)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  VERIFY_EXPR(m_pOwnerAllocator != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  dbgVerifyAddress(p);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  FillWithDebugPattern(p, DeallocatedBlockMemPattern, m_pOwnerAllocator->m_BlockSize);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// Add block to the beginning of the linked list</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  *<span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>**<span class="keyword">></span>(p) = m_pNextFreeBlock;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_pNextFreeBlock = p;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  ++m_NumFreeBlocks;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordtype">bool</span> HasSpace()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumFreeBlocks>0;}</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordtype">bool</span> HasAllocations()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumFreeBlocks<m_NumInitializedBlocks;}</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  MemoryPage(<span class="keyword">const</span> MemoryPage&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  MemoryPage& operator = (<span class="keyword">const</span> MemoryPage)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  MemoryPage& operator = (MemoryPage&&)=<span class="keyword">delete</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  Uint32 m_NumFreeBlocks = 0; <span class="comment">// Num of remaining blocks</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  Uint32 m_NumInitializedBlocks = 0; <span class="comment">// Num of initialized blocks</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordtype">void</span>* m_pPageStart = <span class="keyword">nullptr</span>; <span class="comment">// Beginning of memory pool</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordtype">void</span>* m_pNextFreeBlock = <span class="keyword">nullptr</span>; <span class="comment">// Num of next free block</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> *m_pOwnerAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  };</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  std::vector<MemoryPage, STDAllocatorRawMem<MemoryPage> > m_PagePool;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  std::unordered_set<size_t, std::hash<size_t>, std::equal_to<size_t>, STDAllocatorRawMem<size_t> > m_AvailablePages;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">typedef</span> std::pair<void* const, size_t> AddrToPageIdMapElem;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  std::unordered_map<void*, size_t, std::hash<void*>, std::equal_to<void*>, STDAllocatorRawMem<AddrToPageIdMapElem> > m_AddrToPageId;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  std::mutex m_Mutex;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  IMemoryAllocator &m_RawMemoryAllocator;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordtype">size_t</span> m_BlockSize;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  Uint32 m_NumBlocksInPage;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> };</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> IMemoryAllocator& <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="keyword">class </span>ObjectPool</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="namespace_diligent.html#aafc497c26b864a48cd17ad3fca1fe386">SetRawAllocator</a>(IMemoryAllocator &Allocator)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span>(m_bPoolInitialized && m_pRawAllocator != &Allocator)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Setting pool raw allocator after the pool has been initialized has no effect"</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  m_pRawAllocator = &Allocator;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> SetPageSize(Uint32 NumAllocationsInPage)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">if</span>(m_bPoolInitialized && m_NumAllocationsInPage != NumAllocationsInPage)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Setting pool page size after the pool has been initialized has no effect"</span>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_NumAllocationsInPage = NumAllocationsInPage;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">static</span> ObjectPool& GetPool()</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">static</span> ObjectPool ThePool;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_bPoolInitialized = <span class="keyword">true</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">return</span> ThePool;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ... CtorArgTypes></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  ObjectType* NewObject(<span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber, CtorArgTypes&& ... CtorArgs)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">void</span> *pRawMem = m_FixedBlockAlloctor.Allocate(<span class="keyword">sizeof</span>(ObjectType), dbgDescription, dbgFileName, dbgLineNumber);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> <span class="keyword">new</span>(pRawMem) ObjectType(std::forward<CtorArgTypes>(CtorArgs)...);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">catch</span> (...)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_FixedBlockAlloctor.Free(pRawMem);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">void</span> Destroy(ObjectType* pObj)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>(pObj != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  pObj->~ObjectType();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_FixedBlockAlloctor.Free(pObj);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">static</span> Uint32 m_NumAllocationsInPage;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keyword">static</span> IMemoryAllocator *m_pRawAllocator;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  ObjectPool() : </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  m_FixedBlockAlloctor(m_pRawAllocator ? *m_pRawAllocator : <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), sizeof(ObjectType), m_NumAllocationsInPage)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {}</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> m_bPoolInitialized;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  FixedBlockMemoryAllocator m_FixedBlockAlloctor;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> };</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> Uint32 ObjectPool<ObjectType>::m_NumAllocationsInPage = 64;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> IMemoryAllocator* ObjectPool<ObjectType>::m_pRawAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="keywordtype">bool</span> ObjectPool<ObjectType>::m_bPoolInitialized = <span class="keyword">false</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor">#define SET_POOL_RAW_ALLOCATOR(ObjectType, Allocator)ObjectPool<ObjectType>::SetRawAllocator(Allocator)</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor">#define SET_POOL_PAGE_SIZE(ObjectType, NumAllocationsInPage)ObjectPool<ObjectType>::SetPageSize(NumAllocationsInPage)</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor">#define NEW_POOL_OBJECT(ObjectType, Desc, ...)ObjectPool<ObjectType>::GetPool().NewObject(Desc, __FILE__, __LINE__, ##__VA_ARGS__)</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="preprocessor">#define DESTROY_POOL_OBJECT(pObject)ObjectPool< std::remove_reference<decltype(*pObject)>::type >::GetPool().Destroy(pObject)</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_fixed_block_memory_allocator_html_a97106c54ad140316e521eaa104550537"><div class="ttname"><a href="class_diligent_1_1_fixed_block_memory_allocator.html#a97106c54ad140316e521eaa104550537">Diligent::FixedBlockMemoryAllocator::Allocate</a></div><div class="ttdeci">virtual void * Allocate(size_t Size, const Char *dbgDescription, const char *dbgFileName, const Int32 dbgLineNumber) override final</div><div class="ttdoc">Allocates block of memory. </div><div class="ttdef"><b>Definition:</b> FixedBlockMemoryAllocator.cpp:64</div></div> <div class="ttc" id="namespace_diligent_html_aef792a75d6b4771705fb4ed083428dc8"><div class="ttname"><a href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">Diligent::GetRawAllocator</a></div><div class="ttdeci">IMemoryAllocator & GetRawAllocator()</div><div class="ttdoc">Returns raw memory allocator. </div><div class="ttdef"><b>Definition:</b> EngineMemory.cpp:46</div></div> <div class="ttc" id="namespace_diligent_html_aafc497c26b864a48cd17ad3fca1fe386"><div class="ttname"><a href="namespace_diligent.html#aafc497c26b864a48cd17ad3fca1fe386">Diligent::SetRawAllocator</a></div><div class="ttdeci">void SetRawAllocator(IMemoryAllocator *pRawAllocator)</div><div class="ttdoc">Sets raw memory allocator. This function must be called before any memory allocation/deallocation fun...</div><div class="ttdef"><b>Definition:</b> EngineMemory.cpp:36</div></div> @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_format_message_8h_source.html b/doc/html/_format_message_8h_source.html index 8caf95db..b7998c01 100644 --- a/doc/html/_format_message_8h_source.html +++ b/doc/html/_format_message_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">FormatMessage.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">typedef</span> std::stringstream MsgStream;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">template</span><<span class="keyword">typename</span> SSType, <span class="keyword">typename</span> ArgType></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">void</span> FormatMsg( SSType &ss, <span class="keyword">const</span> ArgType& Arg )</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  ss << Arg;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">template</span><<span class="keyword">typename</span> SSType, <span class="keyword">typename</span> FirstArgType, <span class="keyword">typename</span>... RestArgsType></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">void</span> FormatMsg( SSType &ss, <span class="keyword">const</span> FirstArgType& FirstArg, <span class="keyword">const</span> RestArgsType&... RestArgs )</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  FormatMsg( ss, FirstArg );</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  FormatMsg( ss, RestArgs... ); <span class="comment">// recursive call using pack expansion syntax</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">typedef</span> std::stringstream MsgStream;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">template</span><<span class="keyword">typename</span> SSType, <span class="keyword">typename</span> ArgType></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">void</span> FormatMsg( SSType &ss, <span class="keyword">const</span> ArgType& Arg )</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  ss << Arg;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">template</span><<span class="keyword">typename</span> SSType, <span class="keyword">typename</span> FirstArgType, <span class="keyword">typename</span>... RestArgsType></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">void</span> FormatMsg( SSType &ss, <span class="keyword">const</span> FirstArgType& FirstArg, <span class="keyword">const</span> RestArgsType&... RestArgs )</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  FormatMsg( ss, FirstArg );</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  FormatMsg( ss, RestArgs... ); <span class="comment">// recursive call using pack expansion syntax</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_g_l_context_8h_source.html b/doc/html/_g_l_context_8h_source.html index daee0c92..4da38993 100644 --- a/doc/html/_g_l_context_8h_source.html +++ b/doc/html/_g_l_context_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">GLContext.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#if defined(PLATFORM_WIN32)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"># include "GLContextWindows.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#elif defined(PLATFORM_ANDROID)</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"># include "GLContextAndroid.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#elif defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor"># include "GLContextLinux.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"># error Unsupported platform</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#if defined(PLATFORM_WIN32)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"># include "GLContextWindows.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#elif defined(PLATFORM_ANDROID)</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"># include "GLContextAndroid.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#elif defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor"># include "GLContextLinux.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"># error Unsupported platform</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_context_android_8h_source.html b/doc/html/_g_l_context_android_8h_source.html index 53a7f351..28b05442 100644 --- a/doc/html/_g_l_context_android_8h_source.html +++ b/doc/html/_g_l_context_android_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">GLContextAndroid.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <EGL/egl.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <android/native_window.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">struct </span>ContextInitInfo</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  SwapChainDesc SwapChainAttribs;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">void</span> *pNativeWndHandle = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class </span>GLContext</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> EGLContext NativeGLContextType;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  GLContext( <span class="keyword">const</span> ContextInitInfo &Info, DeviceCaps &DeviceCaps );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ~GLContext();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">bool</span> Init( ANativeWindow* window );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> SwapBuffers();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> Invalidate();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> Suspend();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  EGLint Resume( ANativeWindow* window );</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">const</span> SwapChainDesc& GetSwapChainDesc()<span class="keyword">const</span>{ <span class="keywordflow">return</span> SwapChainAttribs_; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  NativeGLContextType GetCurrentNativeGLContext();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">//EGL configurations</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ANativeWindow* window_ = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  EGLDisplay display_ = EGL_NO_DISPLAY;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  EGLSurface surface_ = EGL_NO_SURFACE;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  EGLContext context_ = EGL_NO_CONTEXT;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  EGLConfig config_;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">//Screen parameters</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  int32_t color_size_ = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  int32_t depth_size_ = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  int32_t major_version_ = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  int32_t minor_version_ = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">//Flags</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">bool</span> gles_initialized_ = <span class="keyword">false</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">bool</span> egl_context_initialized_ = <span class="keyword">false</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">bool</span> context_valid_ = <span class="keyword">false</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  SwapChainDesc SwapChainAttribs_;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">void</span> InitGLES();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> Terminate();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">bool</span> InitEGLSurface();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">bool</span> InitEGLContext();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">void</span> AttachToCurrentEGLContext();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">void</span> FillDeviceCaps( DeviceCaps &DeviceCaps );</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  };</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <EGL/egl.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <android/native_window.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">struct </span>ContextInitInfo</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  SwapChainDesc SwapChainAttribs;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">void</span> *pNativeWndHandle = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class </span>GLContext</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> EGLContext NativeGLContextType;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  GLContext( <span class="keyword">const</span> ContextInitInfo &Info, DeviceCaps &DeviceCaps );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ~GLContext();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">bool</span> Init( ANativeWindow* window );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> SwapBuffers();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> Invalidate();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> Suspend();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  EGLint Resume( ANativeWindow* window );</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">const</span> SwapChainDesc& GetSwapChainDesc()<span class="keyword">const</span>{ <span class="keywordflow">return</span> SwapChainAttribs_; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  NativeGLContextType GetCurrentNativeGLContext();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">//EGL configurations</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ANativeWindow* window_ = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  EGLDisplay display_ = EGL_NO_DISPLAY;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  EGLSurface surface_ = EGL_NO_SURFACE;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  EGLContext context_ = EGL_NO_CONTEXT;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  EGLConfig config_;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">//Screen parameters</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  int32_t color_size_ = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  int32_t depth_size_ = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  int32_t major_version_ = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  int32_t minor_version_ = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">//Flags</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">bool</span> gles_initialized_ = <span class="keyword">false</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">bool</span> egl_context_initialized_ = <span class="keyword">false</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">bool</span> context_valid_ = <span class="keyword">false</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  SwapChainDesc SwapChainAttribs_;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">void</span> InitGLES();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> Terminate();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">bool</span> InitEGLSurface();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">bool</span> InitEGLContext();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">void</span> AttachToCurrentEGLContext();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">void</span> FillDeviceCaps( DeviceCaps &DeviceCaps );</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  };</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_context_linux_8h_source.html b/doc/html/_g_l_context_linux_8h_source.html index 13818ab8..03428ea6 100644 --- a/doc/html/_g_l_context_linux_8h_source.html +++ b/doc/html/_g_l_context_linux_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">GLContextLinux.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">struct </span>ContextInitInfo</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  SwapChainDesc SwapChainAttribs;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">void</span> *pNativeWndHandle = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">void</span> *pDisplay = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  };</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class </span>GLContext</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">typedef</span> GLXContext NativeGLContextType;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  GLContext(<span class="keyword">const</span> ContextInitInfo &Info, <span class="keyword">struct</span> DeviceCaps &DeviceCaps);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ~GLContext();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span> SwapBuffers();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> SwapChainDesc& GetSwapChainDesc()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_SwapChainAttribs; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  NativeGLContextType GetCurrentNativeGLContext();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> *m_pNativeWindow = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> *m_pDisplay = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  NativeGLContextType m_Context;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  SwapChainDesc m_SwapChainAttribs;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">struct </span>ContextInitInfo</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  SwapChainDesc SwapChainAttribs;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">void</span> *pNativeWndHandle = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">void</span> *pDisplay = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  };</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class </span>GLContext</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">typedef</span> GLXContext NativeGLContextType;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  GLContext(<span class="keyword">const</span> ContextInitInfo &Info, <span class="keyword">struct</span> DeviceCaps &DeviceCaps);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ~GLContext();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span> SwapBuffers();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> SwapChainDesc& GetSwapChainDesc()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_SwapChainAttribs; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  NativeGLContextType GetCurrentNativeGLContext();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> *m_pNativeWindow = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> *m_pDisplay = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  NativeGLContextType m_Context;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  SwapChainDesc m_SwapChainAttribs;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_context_state_8h_source.html b/doc/html/_g_l_context_state_8h_source.html index 40d2a124..a0666742 100644 --- a/doc/html/_g_l_context_state_8h_source.html +++ b/doc/html/_g_l_context_state_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">GLContextState.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "UniqueIdentifier.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GLContext.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span>GLContextState</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  GLContextState(<span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">void</span> SetProgram( <span class="keyword">const</span> GLObjectWrappers::GLProgramObj &GLProgram );</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">void</span> SetPipeline( <span class="keyword">const</span> GLObjectWrappers::GLPipelineObj &GLPipeline );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">void</span> BindVAO( <span class="keyword">const</span> GLObjectWrappers::GLVertexArrayObj &VAO );</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> BindFBO( <span class="keyword">const</span> GLObjectWrappers::GLFrameBufferObj &FBO );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span> SetActiveTexture( Int32 Index );</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">void</span> BindTexture( Int32 Index, GLenum BindTarget, <span class="keyword">const</span> GLObjectWrappers::GLTextureObj &Tex);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span> BindSampler( Uint32 Index, <span class="keyword">const</span> GLObjectWrappers::GLSamplerObj &GLSampler);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">void</span> BindImage( Uint32 Index, <span class="keyword">class</span> TextureViewGLImpl *pTexView, GLint MipLevel, GLboolean IsLayered, GLint Layer, GLenum Access, GLenum Format );</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> EnsureMemoryBarrier(Uint32 RequiredBarriers, <span class="keyword">class</span> AsyncWritableResource *pRes = <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">void</span> SetPendingMemoryBarriers( Uint32 PendingBarriers );</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> EnableDepthTest( Bool bEnable );</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> EnableDepthWrites( Bool bEnable );</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> SetDepthFunc(<a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> CmpFunc);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span> EnableStencilTest( Bool bEnable );</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> SetStencilWriteMask( Uint8 StencilWriteMask );</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">void</span> SetStencilRef( GLenum Face, Int32 Ref );</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">void</span> SetStencilFunc( GLenum Face, <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func, Int32 Ref, Uint32 Mask );</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> SetStencilOp( GLenum Face, <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilFailOp, <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilDepthFailOp, <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilPassOp );</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span> SetFillMode( <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> FillMode );</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">void</span> SetCullMode( <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> CullMode );</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span> SetFrontFace( Bool FrontCounterClockwise );</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">void</span> SetDepthBias( <span class="keywordtype">float</span> DepthBias, <span class="keywordtype">float</span> fSlopeScaledDepthBias );</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">void</span> SetDepthClamp( Bool bEnableDepthClamp );</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">void</span> EnableScissorTest( Bool bEnableScissorTest );</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">void</span> SetBlendFactors(<span class="keyword">const</span> <span class="keywordtype">float</span> *BlendFactors);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">void</span> SetBlendState(<span class="keyword">const</span> BlendStateDesc &BSDsc, Uint32 SampleMask);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  Bool GetDepthWritesEnabled(){ <span class="keywordflow">return</span> m_DSState.m_DepthWritesEnableState; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  Bool GetScissorTestEnabled(){ <span class="keywordflow">return</span> m_RSState.ScissorTestEnable; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> GetColorWriteMask( Uint32 RTIndex, Uint32 &WriteMask, Bool &bIsIndependent );</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">void</span> SetColorWriteMask( Uint32 RTIndex, Uint32 WriteMask, Bool bIsIndependent );</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> SetNumPatchVertices( Int32 NumVertices);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">void</span> Invalidate();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> SetCurrentGLContext(GLContext::NativeGLContextType Context) { m_CurrentGLContext = Context; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  GLContext::NativeGLContextType GetCurrentGLContext()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_CurrentGLContext; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// It is unsafe to use GL handle to keep track of bound objects</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// When an object is released, GL is free to reuse its handle for </span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// the new created objects.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Even using pointers is not safe as when an object is created,</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// the system can reuse the same address</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// The safest way is to keep global unique ID for all objects</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  Diligent::UniqueIdentifier m_GLProgId = -1;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Diligent::UniqueIdentifier m_GLPipelineId = -1;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  Diligent::UniqueIdentifier m_VAOId = -1;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  Diligent::UniqueIdentifier m_FBOId = -1;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  std::vector< Diligent::UniqueIdentifier > m_BoundTextures;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  std::vector< Diligent::UniqueIdentifier > m_BoundSamplers;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">struct </span>BoundImageInfo</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  Diligent::UniqueIdentifier InterfaceID = -1;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  GLint MipLevel = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  GLboolean IsLayered = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  GLint Layer = 0;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  GLenum Access = 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  GLenum Format = 0;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  BoundImageInfo() {};</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  BoundImageInfo( Diligent::UniqueIdentifier _UniqueID,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  GLint _MipLevel,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  GLboolean _IsLayered,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  GLint _Layer,</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  GLenum _Access,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  GLenum _Format) :</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  InterfaceID (_UniqueID ),</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  MipLevel (_MipLevel ),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  IsLayered (_IsLayered),</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  Layer (_Layer ),</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  Access (_Access ),</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Format (_Format )</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {}</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> BoundImageInfo &rhs)<span class="keyword">const</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> InterfaceID == rhs.InterfaceID &&</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  MipLevel == rhs.MipLevel &&</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  IsLayered == rhs.IsLayered &&</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  Layer == rhs.Layer &&</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  Access == rhs.Access &&</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  Format == rhs.Format;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  };</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  std::vector< BoundImageInfo > m_BoundImages;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  Uint32 m_PendingMemoryBarriers = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">class </span>EnableStateHelper</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">enum class</span> ENABLE_STATE : Int32</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  UNKNOWN,</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  ENABLED,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  DISABLED</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  };</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">bool</span> operator == (<span class="keywordtype">bool</span> bEnabled)<span class="keyword">const</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> (bEnabled && m_EnableState == ENABLE_STATE::ENABLED) ||</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  (!bEnabled && m_EnableState == ENABLE_STATE::DISABLED);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordtype">bool</span> operator != (<span class="keywordtype">bool</span> bEnabled)<span class="keyword"> const</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == bEnabled);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">const</span> EnableStateHelper& operator = (<span class="keywordtype">bool</span> bEnabled)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  m_EnableState = bEnabled ? ENABLE_STATE::ENABLED : ENABLE_STATE::DISABLED;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">operator</span> bool()<span class="keyword">const</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">return</span> m_EnableState == ENABLE_STATE::ENABLED;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  ENABLE_STATE m_EnableState = ENABLE_STATE::UNKNOWN;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  };</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">struct </span>DepthStencilGLState</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  EnableStateHelper m_DepthEnableState;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  EnableStateHelper m_DepthWritesEnableState;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> m_DepthCmpFunc = <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5">COMPARISON_FUNC_UNKNOWN</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  EnableStateHelper m_StencilTestEnableState;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  Uint16 m_StencilReadMask = 0xFFFF;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  Uint16 m_StencilWriteMask = 0xFFFF;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">struct </span>StencilOpState</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func = <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5">COMPARISON_FUNC_UNKNOWN</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilFailOp = <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40">STENCIL_OP_UNDEFINED</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilDepthFailOp = <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40">STENCIL_OP_UNDEFINED</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilPassOp = <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40">STENCIL_OP_UNDEFINED</a>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  Int32 Ref = std::numeric_limits<Int32>::min();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  Uint32 Mask = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }m_StencilOpState[2];</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }m_DSState;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">struct </span>RasterizerGLState</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> FillMode = <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4f9c2dce719b61de78321d1742ad4dd3">FILL_MODE_UNDEFINED</a>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> CullMode = <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aceb414f364000c13d75a7a17fa0416ca">CULL_MODE_UNDEFINED</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  EnableStateHelper FrontCounterClockwise;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">float</span> fDepthBias = std::numeric_limits<float>::max();</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">float</span> fSlopeScaledDepthBias = std::numeric_limits<float>::max();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  EnableStateHelper DepthClampEnable;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  EnableStateHelper ScissorTestEnable;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }m_RSState;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">struct </span>ContextCaps</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordtype">bool</span> bFillModeSelectionSupported = True;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  GLint m_iMaxCombinedTexUnits = 0;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }m_Caps;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  Uint32 m_ColorWriteMasks[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  EnableStateHelper m_bIndependentWriteMasks;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  Int32 m_iActiveTexture = -1;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  Int32 m_NumPatchVertices = -1;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  GLContext::NativeGLContextType m_CurrentGLContext = {};</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> };</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> }</div><div class="ttc" id="namespace_diligent_html_a4d5f2c67b76f870790521dd26e4a8a29"><div class="ttname"><a href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">Diligent::STENCIL_OP</a></div><div class="ttdeci">STENCIL_OP</div><div class="ttdoc">Stencil operation. </div><div class="ttdef"><b>Definition:</b> DepthStencilState.h:42</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "UniqueIdentifier.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GLContext.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span>GLContextState</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  GLContextState(<span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">void</span> SetProgram( <span class="keyword">const</span> GLObjectWrappers::GLProgramObj &GLProgram );</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">void</span> SetPipeline( <span class="keyword">const</span> GLObjectWrappers::GLPipelineObj &GLPipeline );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">void</span> BindVAO( <span class="keyword">const</span> GLObjectWrappers::GLVertexArrayObj &VAO );</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> BindFBO( <span class="keyword">const</span> GLObjectWrappers::GLFrameBufferObj &FBO );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span> SetActiveTexture( Int32 Index );</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">void</span> BindTexture( Int32 Index, GLenum BindTarget, <span class="keyword">const</span> GLObjectWrappers::GLTextureObj &Tex);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span> BindSampler( Uint32 Index, <span class="keyword">const</span> GLObjectWrappers::GLSamplerObj &GLSampler);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">void</span> BindImage( Uint32 Index, <span class="keyword">class</span> TextureViewGLImpl *pTexView, GLint MipLevel, GLboolean IsLayered, GLint Layer, GLenum Access, GLenum Format );</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> EnsureMemoryBarrier(Uint32 RequiredBarriers, <span class="keyword">class</span> AsyncWritableResource *pRes = <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">void</span> SetPendingMemoryBarriers( Uint32 PendingBarriers );</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> EnableDepthTest( Bool bEnable );</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> EnableDepthWrites( Bool bEnable );</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> SetDepthFunc(<a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> CmpFunc);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span> EnableStencilTest( Bool bEnable );</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> SetStencilWriteMask( Uint8 StencilWriteMask );</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">void</span> SetStencilRef( GLenum Face, Int32 Ref );</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">void</span> SetStencilFunc( GLenum Face, <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func, Int32 Ref, Uint32 Mask );</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> SetStencilOp( GLenum Face, <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilFailOp, <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilDepthFailOp, <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilPassOp );</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span> SetFillMode( <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> FillMode );</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">void</span> SetCullMode( <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> CullMode );</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span> SetFrontFace( Bool FrontCounterClockwise );</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">void</span> SetDepthBias( <span class="keywordtype">float</span> DepthBias, <span class="keywordtype">float</span> fSlopeScaledDepthBias );</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">void</span> SetDepthClamp( Bool bEnableDepthClamp );</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">void</span> EnableScissorTest( Bool bEnableScissorTest );</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">void</span> SetBlendFactors(<span class="keyword">const</span> <span class="keywordtype">float</span> *BlendFactors);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">void</span> SetBlendState(<span class="keyword">const</span> BlendStateDesc &BSDsc, Uint32 SampleMask);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  Bool GetDepthWritesEnabled(){ <span class="keywordflow">return</span> m_DSState.m_DepthWritesEnableState; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  Bool GetScissorTestEnabled(){ <span class="keywordflow">return</span> m_RSState.ScissorTestEnable; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> GetColorWriteMask( Uint32 RTIndex, Uint32 &WriteMask, Bool &bIsIndependent );</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">void</span> SetColorWriteMask( Uint32 RTIndex, Uint32 WriteMask, Bool bIsIndependent );</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> SetNumPatchVertices( Int32 NumVertices);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">void</span> Invalidate();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> SetCurrentGLContext(GLContext::NativeGLContextType Context) { m_CurrentGLContext = Context; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  GLContext::NativeGLContextType GetCurrentGLContext()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_CurrentGLContext; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// It is unsafe to use GL handle to keep track of bound objects</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// When an object is released, GL is free to reuse its handle for </span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// the new created objects.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Even using pointers is not safe as when an object is created,</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// the system can reuse the same address</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// The safest way is to keep global unique ID for all objects</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  Diligent::UniqueIdentifier m_GLProgId = -1;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Diligent::UniqueIdentifier m_GLPipelineId = -1;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  Diligent::UniqueIdentifier m_VAOId = -1;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  Diligent::UniqueIdentifier m_FBOId = -1;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  std::vector< Diligent::UniqueIdentifier > m_BoundTextures;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  std::vector< Diligent::UniqueIdentifier > m_BoundSamplers;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">struct </span>BoundImageInfo</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  Diligent::UniqueIdentifier InterfaceID = -1;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  GLint MipLevel = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  GLboolean IsLayered = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  GLint Layer = 0;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  GLenum Access = 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  GLenum Format = 0;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  BoundImageInfo() {};</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  BoundImageInfo( Diligent::UniqueIdentifier _UniqueID,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  GLint _MipLevel,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  GLboolean _IsLayered,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  GLint _Layer,</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  GLenum _Access,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  GLenum _Format) :</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  InterfaceID (_UniqueID ),</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  MipLevel (_MipLevel ),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  IsLayered (_IsLayered),</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  Layer (_Layer ),</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  Access (_Access ),</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Format (_Format )</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {}</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> BoundImageInfo &rhs)<span class="keyword">const</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> InterfaceID == rhs.InterfaceID &&</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  MipLevel == rhs.MipLevel &&</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  IsLayered == rhs.IsLayered &&</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  Layer == rhs.Layer &&</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  Access == rhs.Access &&</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  Format == rhs.Format;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  };</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  std::vector< BoundImageInfo > m_BoundImages;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  Uint32 m_PendingMemoryBarriers = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">class </span>EnableStateHelper</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">enum class</span> ENABLE_STATE : Int32</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  UNKNOWN,</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  ENABLED,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  DISABLED</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  };</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">bool</span> operator == (<span class="keywordtype">bool</span> bEnabled)<span class="keyword">const</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> (bEnabled && m_EnableState == ENABLE_STATE::ENABLED) ||</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  (!bEnabled && m_EnableState == ENABLE_STATE::DISABLED);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordtype">bool</span> operator != (<span class="keywordtype">bool</span> bEnabled)<span class="keyword"> const</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == bEnabled);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">const</span> EnableStateHelper& operator = (<span class="keywordtype">bool</span> bEnabled)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  m_EnableState = bEnabled ? ENABLE_STATE::ENABLED : ENABLE_STATE::DISABLED;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">operator</span> bool()<span class="keyword">const</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">return</span> m_EnableState == ENABLE_STATE::ENABLED;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  ENABLE_STATE m_EnableState = ENABLE_STATE::UNKNOWN;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  };</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">struct </span>DepthStencilGLState</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  EnableStateHelper m_DepthEnableState;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  EnableStateHelper m_DepthWritesEnableState;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> m_DepthCmpFunc = <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5">COMPARISON_FUNC_UNKNOWN</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  EnableStateHelper m_StencilTestEnableState;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  Uint16 m_StencilReadMask = 0xFFFF;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  Uint16 m_StencilWriteMask = 0xFFFF;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">struct </span>StencilOpState</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func = <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5">COMPARISON_FUNC_UNKNOWN</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilFailOp = <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40">STENCIL_OP_UNDEFINED</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilDepthFailOp = <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40">STENCIL_OP_UNDEFINED</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilPassOp = <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29afac7937c3ec76ac501dd693217c7ab40">STENCIL_OP_UNDEFINED</a>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  Int32 Ref = std::numeric_limits<Int32>::min();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  Uint32 Mask = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }m_StencilOpState[2];</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }m_DSState;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">struct </span>RasterizerGLState</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> FillMode = <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4f9c2dce719b61de78321d1742ad4dd3">FILL_MODE_UNDEFINED</a>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> CullMode = <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aceb414f364000c13d75a7a17fa0416ca">CULL_MODE_UNDEFINED</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  EnableStateHelper FrontCounterClockwise;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">float</span> fDepthBias = std::numeric_limits<float>::max();</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">float</span> fSlopeScaledDepthBias = std::numeric_limits<float>::max();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  EnableStateHelper DepthClampEnable;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  EnableStateHelper ScissorTestEnable;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }m_RSState;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">struct </span>ContextCaps</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordtype">bool</span> bFillModeSelectionSupported = True;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  GLint m_iMaxCombinedTexUnits = 0;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }m_Caps;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  Uint32 m_ColorWriteMasks[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  EnableStateHelper m_bIndependentWriteMasks;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  Int32 m_iActiveTexture = -1;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  Int32 m_NumPatchVertices = -1;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  GLContext::NativeGLContextType m_CurrentGLContext = {};</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> };</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> }</div><div class="ttc" id="namespace_diligent_html_a4d5f2c67b76f870790521dd26e4a8a29"><div class="ttname"><a href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">Diligent::STENCIL_OP</a></div><div class="ttdeci">STENCIL_OP</div><div class="ttdoc">Stencil operation. </div><div class="ttdef"><b>Definition:</b> DepthStencilState.h:42</div></div> <div class="ttc" id="namespace_diligent_html_a3b85032ce91db5b8f9bcaab7bff02bc9a4f9c2dce719b61de78321d1742ad4dd3"><div class="ttname"><a href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4f9c2dce719b61de78321d1742ad4dd3">Diligent::FILL_MODE_UNDEFINED</a></div><div class="ttdoc">Undefined fill mode. </div><div class="ttdef"><b>Definition:</b> RasterizerState.h:43</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespace_diligent_html_ac667e59fc3ba021e3bd1d1424a3674d8"><div class="ttname"><a href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">Diligent::MaxRenderTargets</a></div><div class="ttdeci">static constexpr Uint32 MaxRenderTargets</div><div class="ttdoc">Maximum number of simultaneous render targets. </div><div class="ttdef"><b>Definition:</b> Constants.h:36</div></div> @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_context_windows_8h_source.html b/doc/html/_g_l_context_windows_8h_source.html index b47b6f17..e2b1f56f 100644 --- a/doc/html/_g_l_context_windows_8h_source.html +++ b/doc/html/_g_l_context_windows_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">GLContextWindows.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">struct </span>ContextInitInfo</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  SwapChainDesc SwapChainAttribs;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">void</span> *pNativeWndHandle = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">class </span>GLContext</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> HGLRC NativeGLContextType;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GLContext( <span class="keyword">const</span> ContextInitInfo &Info, <span class="keyword">struct</span> DeviceCaps &DeviceCaps );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  ~GLContext();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> SwapBuffers();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> SwapChainDesc& GetSwapChainDesc()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_SwapChainAttribs; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  NativeGLContextType GetCurrentNativeGLContext();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  HGLRC m_Context;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  HDC m_WindowHandleToDeviceContext;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  SwapChainDesc m_SwapChainAttribs;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">struct </span>ContextInitInfo</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  SwapChainDesc SwapChainAttribs;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">void</span> *pNativeWndHandle = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">class </span>GLContext</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> HGLRC NativeGLContextType;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GLContext( <span class="keyword">const</span> ContextInitInfo &Info, <span class="keyword">struct</span> DeviceCaps &DeviceCaps );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  ~GLContext();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> SwapBuffers();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> SwapChainDesc& GetSwapChainDesc()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_SwapChainAttribs; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  NativeGLContextType GetCurrentNativeGLContext();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  HGLRC m_Context;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  HDC m_WindowHandleToDeviceContext;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  SwapChainDesc m_SwapChainAttribs;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_object_wrapper_8h_source.html b/doc/html/_g_l_object_wrapper_8h_source.html index cf445f4f..c8ce2742 100644 --- a/doc/html/_g_l_object_wrapper_8h_source.html +++ b/doc/html/_g_l_object_wrapper_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">GLObjectWrapper.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "UniqueIdentifier.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_g_l_object_wrappers.html">GLObjectWrappers</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">template</span><<span class="keyword">class</span> CreateReleaseHelperType></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>GLObjWrapper</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  GLObjWrapper(<span class="keywordtype">bool</span> CreateObject, CreateReleaseHelperType CreateReleaseHelper = CreateReleaseHelperType()) : </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_uiHandle(0),</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_CreateReleaseHelper(CreateReleaseHelper)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>( CreateObject )</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Create();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(!m_uiHandle)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  LOG_ERROR_AND_THROW(<span class="stringliteral">"Failed to create "</span>, m_CreateReleaseHelper.Name, <span class="stringliteral">" GL object"</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~GLObjWrapper()</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  Release();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GLObjWrapper(GLObjWrapper&& Wrapper) : </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_uiHandle(Wrapper.m_uiHandle),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_CreateReleaseHelper( <a class="code" href="namespacestd.html">std</a>::move( Wrapper.m_CreateReleaseHelper ) ),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_UniqueId( <a class="code" href="namespacestd.html">std</a>::move(Wrapper.m_UniqueId) )</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  Wrapper.m_uiHandle = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  GLObjWrapper& operator = (GLObjWrapper&& Wrapper)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  Release();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_uiHandle = Wrapper.m_uiHandle;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  Wrapper.m_uiHandle = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_CreateReleaseHelper = std::move( Wrapper.m_CreateReleaseHelper );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_UniqueId = std::move(Wrapper.m_UniqueId);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">void</span> Create()</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  VERIFY(m_uiHandle == 0, <span class="stringliteral">"GL object is already initialized"</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Release();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_CreateReleaseHelper.Create(m_uiHandle);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  VERIFY(m_uiHandle, <span class="stringliteral">"Failed to initialize GL object"</span> );</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> Release()</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span>( m_uiHandle )</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_CreateReleaseHelper.Release(m_uiHandle);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_uiHandle = 0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Diligent::UniqueIdentifier GetUniqueID()<span class="keyword">const</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// This unique ID is used to unambiguously identify the object for</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// tracking purposes.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// Niether GL handle nor pointer could be safely used for this purpose</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// as both GL reuses released handles and the OS reuses released pointers</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> m_UniqueId.GetID();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">operator</span> GLuint()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_uiHandle;}</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  GLObjWrapper(<span class="keyword">const</span> GLObjWrapper&);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  GLObjWrapper& operator = (<span class="keyword">const</span> GLObjWrapper&);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  GLuint m_uiHandle;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  CreateReleaseHelperType m_CreateReleaseHelper;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// Have separate counter for every type of wrappers</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  Diligent::UniqueIdHelper<CreateReleaseHelperType> m_UniqueId;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> };</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">class </span>GLBufferObjCreateReleaseHelper</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">explicit</span> GLBufferObjCreateReleaseHelper(GLuint ExternalGLBufferHandle = 0) :</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_ExternalGLBufferHandle(ExternalGLBufferHandle)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> Create(GLuint &BuffObj)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  { </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span> (m_ExternalGLBufferHandle != 0)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  BuffObj = m_ExternalGLBufferHandle; <span class="comment">// Attach to external GL buffer handle</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  glGenBuffers(1, &BuffObj); </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">void</span> Release(GLuint BuffObj)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  { </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (m_ExternalGLBufferHandle != 0)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_ExternalGLBufferHandle = 0; <span class="comment">// Detach from external GL buffer. DO NOT delete the buffer</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  glDeleteBuffers(1, &BuffObj); </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  GLuint m_ExternalGLBufferHandle;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> };</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword">typedef</span> GLObjWrapper<GLBufferObjCreateReleaseHelper> GLBufferObj;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">class </span>GLProgramObjCreateReleaseHelper</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Create(GLuint &ProgObj){ ProgObj = glCreateProgram(); }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Release(GLuint ProgObj){ glDeleteProgram(ProgObj); }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> };</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">typedef</span> GLObjWrapper<GLProgramObjCreateReleaseHelper> GLProgramObj;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">class </span>GLShaderObjCreateReleaseHelper</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  GLShaderObjCreateReleaseHelper(GLenum ShaderType) : m_ShaderType(ShaderType){}</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">void</span> Create(GLuint &ShaderObj){ ShaderObj = glCreateShader(m_ShaderType); }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">void</span> Release(GLuint ShaderObj){ glDeleteShader(ShaderObj); }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  GLenum m_ShaderType;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> };</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="keyword">typedef</span> GLObjWrapper<GLShaderObjCreateReleaseHelper> GLShaderObj;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keyword">class </span>GLPipelineObjCreateReleaseHelper</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordtype">void</span> Create(GLuint &Pipeline) { glGenProgramPipelines(1, &Pipeline); }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordtype">void</span> Release(GLuint Pipeline) { glDeleteProgramPipelines(1, &Pipeline); }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> };</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">typedef</span> GLObjWrapper<GLPipelineObjCreateReleaseHelper> GLPipelineObj;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keyword">class </span>GLVAOCreateReleaseHelper</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">void</span> Create(GLuint &VAO) { glGenVertexArrays(1, &VAO); }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordtype">void</span> Release(GLuint VAO) { glDeleteVertexArrays(1, &VAO); }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> };</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keyword">typedef</span> GLObjWrapper<GLVAOCreateReleaseHelper> GLVertexArrayObj;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keyword">class </span>GLTextureCreateReleaseHelper</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">explicit</span> GLTextureCreateReleaseHelper(GLuint ExternalGLTextureHandle = 0) :</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_ExternalGLTextureHandle(ExternalGLTextureHandle)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {}</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">void</span> Create(GLuint &Tex) </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  { </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span> (m_ExternalGLTextureHandle != 0)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  Tex = m_ExternalGLTextureHandle; <span class="comment">// Attach to the external texture</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  glGenTextures(1, &Tex);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">void</span> Release(GLuint Tex)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  { </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (m_ExternalGLTextureHandle != 0)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  m_ExternalGLTextureHandle = 0; <span class="comment">// Detach from the external texture. DO NOT delete it!</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  glDeleteTextures(1, &Tex);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  GLuint m_ExternalGLTextureHandle;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> };</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keyword">typedef</span> GLObjWrapper<GLTextureCreateReleaseHelper> GLTextureObj;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">class </span>GLSamplerCreateReleaseHelper</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordtype">void</span> Create(GLuint &Sampler) { glGenSamplers(1, &Sampler); }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordtype">void</span> Release(GLuint Sampler) { glDeleteSamplers(1, &Sampler); }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> };</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">typedef</span> GLObjWrapper<GLSamplerCreateReleaseHelper> GLSamplerObj;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">class </span>GLFBOCreateReleaseHelper</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordtype">void</span> Create(GLuint &FBO) { glGenFramebuffers(1, &FBO); }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordtype">void</span> Release(GLuint FBO) { glDeleteFramebuffers(1, &FBO); }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> };</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="keyword">typedef</span> GLObjWrapper<GLFBOCreateReleaseHelper> GLFrameBufferObj;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> }</div><div class="ttc" id="namespace_g_l_object_wrappers_html"><div class="ttname"><a href="namespace_g_l_object_wrappers.html">GLObjectWrappers</a></div><div class="ttdef"><b>Definition:</b> GLObjectWrapper.h:28</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "UniqueIdentifier.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_g_l_object_wrappers.html">GLObjectWrappers</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">template</span><<span class="keyword">class</span> CreateReleaseHelperType></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>GLObjWrapper</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  GLObjWrapper(<span class="keywordtype">bool</span> CreateObject, CreateReleaseHelperType CreateReleaseHelper = CreateReleaseHelperType()) : </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_uiHandle(0),</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_CreateReleaseHelper(CreateReleaseHelper)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>( CreateObject )</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Create();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(!m_uiHandle)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  LOG_ERROR_AND_THROW(<span class="stringliteral">"Failed to create "</span>, m_CreateReleaseHelper.Name, <span class="stringliteral">" GL object"</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~GLObjWrapper()</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  Release();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GLObjWrapper(GLObjWrapper&& Wrapper) : </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_uiHandle(Wrapper.m_uiHandle),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_CreateReleaseHelper( <a class="code" href="namespacestd.html">std</a>::move( Wrapper.m_CreateReleaseHelper ) ),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_UniqueId( <a class="code" href="namespacestd.html">std</a>::move(Wrapper.m_UniqueId) )</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  Wrapper.m_uiHandle = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  GLObjWrapper& operator = (GLObjWrapper&& Wrapper)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  Release();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_uiHandle = Wrapper.m_uiHandle;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  Wrapper.m_uiHandle = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_CreateReleaseHelper = std::move( Wrapper.m_CreateReleaseHelper );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_UniqueId = std::move(Wrapper.m_UniqueId);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">void</span> Create()</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  VERIFY(m_uiHandle == 0, <span class="stringliteral">"GL object is already initialized"</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Release();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_CreateReleaseHelper.Create(m_uiHandle);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  VERIFY(m_uiHandle, <span class="stringliteral">"Failed to initialize GL object"</span> );</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> Release()</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span>( m_uiHandle )</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_CreateReleaseHelper.Release(m_uiHandle);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_uiHandle = 0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Diligent::UniqueIdentifier GetUniqueID()<span class="keyword">const</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// This unique ID is used to unambiguously identify the object for</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// tracking purposes.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// Niether GL handle nor pointer could be safely used for this purpose</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// as both GL reuses released handles and the OS reuses released pointers</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> m_UniqueId.GetID();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">operator</span> GLuint()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_uiHandle;}</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  GLObjWrapper(<span class="keyword">const</span> GLObjWrapper&);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  GLObjWrapper& operator = (<span class="keyword">const</span> GLObjWrapper&);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  GLuint m_uiHandle;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  CreateReleaseHelperType m_CreateReleaseHelper;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// Have separate counter for every type of wrappers</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  Diligent::UniqueIdHelper<CreateReleaseHelperType> m_UniqueId;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> };</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">class </span>GLBufferObjCreateReleaseHelper</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">explicit</span> GLBufferObjCreateReleaseHelper(GLuint ExternalGLBufferHandle = 0) :</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_ExternalGLBufferHandle(ExternalGLBufferHandle)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> Create(GLuint &BuffObj)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  { </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span> (m_ExternalGLBufferHandle != 0)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  BuffObj = m_ExternalGLBufferHandle; <span class="comment">// Attach to external GL buffer handle</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  glGenBuffers(1, &BuffObj); </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">void</span> Release(GLuint BuffObj)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  { </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (m_ExternalGLBufferHandle != 0)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_ExternalGLBufferHandle = 0; <span class="comment">// Detach from external GL buffer. DO NOT delete the buffer</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  glDeleteBuffers(1, &BuffObj); </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  GLuint m_ExternalGLBufferHandle;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> };</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword">typedef</span> GLObjWrapper<GLBufferObjCreateReleaseHelper> GLBufferObj;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">class </span>GLProgramObjCreateReleaseHelper</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Create(GLuint &ProgObj){ ProgObj = glCreateProgram(); }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Release(GLuint ProgObj){ glDeleteProgram(ProgObj); }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> };</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">typedef</span> GLObjWrapper<GLProgramObjCreateReleaseHelper> GLProgramObj;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">class </span>GLShaderObjCreateReleaseHelper</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  GLShaderObjCreateReleaseHelper(GLenum ShaderType) : m_ShaderType(ShaderType){}</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">void</span> Create(GLuint &ShaderObj){ ShaderObj = glCreateShader(m_ShaderType); }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">void</span> Release(GLuint ShaderObj){ glDeleteShader(ShaderObj); }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  GLenum m_ShaderType;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> };</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="keyword">typedef</span> GLObjWrapper<GLShaderObjCreateReleaseHelper> GLShaderObj;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keyword">class </span>GLPipelineObjCreateReleaseHelper</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordtype">void</span> Create(GLuint &Pipeline) { glGenProgramPipelines(1, &Pipeline); }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordtype">void</span> Release(GLuint Pipeline) { glDeleteProgramPipelines(1, &Pipeline); }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> };</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">typedef</span> GLObjWrapper<GLPipelineObjCreateReleaseHelper> GLPipelineObj;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keyword">class </span>GLVAOCreateReleaseHelper</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">void</span> Create(GLuint &VAO) { glGenVertexArrays(1, &VAO); }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordtype">void</span> Release(GLuint VAO) { glDeleteVertexArrays(1, &VAO); }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> };</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keyword">typedef</span> GLObjWrapper<GLVAOCreateReleaseHelper> GLVertexArrayObj;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keyword">class </span>GLTextureCreateReleaseHelper</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">explicit</span> GLTextureCreateReleaseHelper(GLuint ExternalGLTextureHandle = 0) :</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_ExternalGLTextureHandle(ExternalGLTextureHandle)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {}</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">void</span> Create(GLuint &Tex) </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  { </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span> (m_ExternalGLTextureHandle != 0)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  Tex = m_ExternalGLTextureHandle; <span class="comment">// Attach to the external texture</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  glGenTextures(1, &Tex);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">void</span> Release(GLuint Tex)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  { </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (m_ExternalGLTextureHandle != 0)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  m_ExternalGLTextureHandle = 0; <span class="comment">// Detach from the external texture. DO NOT delete it!</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  glDeleteTextures(1, &Tex);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  GLuint m_ExternalGLTextureHandle;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> };</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keyword">typedef</span> GLObjWrapper<GLTextureCreateReleaseHelper> GLTextureObj;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">class </span>GLSamplerCreateReleaseHelper</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordtype">void</span> Create(GLuint &Sampler) { glGenSamplers(1, &Sampler); }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordtype">void</span> Release(GLuint Sampler) { glDeleteSamplers(1, &Sampler); }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> };</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">typedef</span> GLObjWrapper<GLSamplerCreateReleaseHelper> GLSamplerObj;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">class </span>GLFBOCreateReleaseHelper</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordtype">void</span> Create(GLuint &FBO) { glGenFramebuffers(1, &FBO); }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordtype">void</span> Release(GLuint FBO) { glDeleteFramebuffers(1, &FBO); }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> };</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="keyword">typedef</span> GLObjWrapper<GLFBOCreateReleaseHelper> GLFrameBufferObj;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> }</div><div class="ttc" id="namespace_g_l_object_wrappers_html"><div class="ttname"><a href="namespace_g_l_object_wrappers.html">GLObjectWrappers</a></div><div class="ttdef"><b>Definition:</b> GLObjectWrapper.h:28</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_program_8h_source.html b/doc/html/_g_l_program_8h_source.html index 00124bb3..edff899f 100644 --- a/doc/html/_g_l_program_8h_source.html +++ b/doc/html/_g_l_program_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">GLProgram.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "GLProgramResources.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">class </span>GLProgram : <span class="keyword">public</span> GLObjectWrappers::GLProgramObj</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  GLProgram( <span class="keywordtype">bool</span> CreateObject );</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  GLProgram( GLProgram&& Program );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">void</span> InitResources(RenderDeviceGLImpl* pDeviceGLImpl, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> DefaultVariableType, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> ShaderVariableDesc *VariableDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  Uint32 NumVars, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">const</span> StaticSamplerDesc *StaticSamplers,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Uint32 NumStaticSamplers,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  IObject &Owner);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">void</span> BindConstantResources(IResourceMapping *pResourceMapping, Uint32 Flags);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> GLProgramResources& GetAllResources(){<span class="keywordflow">return</span> m_AllResources;}</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLProgramResources& GetConstantResources(){<span class="keywordflow">return</span> m_ConstantResources;}</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#ifdef VERIFY_RESOURCE_BINDINGS</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TResArrayType></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> dbgVerifyBindingCompletenessHelper(TResArrayType &ResArr, GLProgramResources *pDynamicResources);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span> dbgVerifyBindingCompleteness(GLProgramResources *pDynamicResources, <span class="keyword">class</span> PipelineStateGLImpl *pPSO);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  GLProgram( <span class="keyword">const</span> GLProgram& Program );</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> GLProgram& operator = (<span class="keyword">const</span> GLProgram& Program);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLProgramResources m_AllResources;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  GLProgramResources m_ConstantResources;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// When adding new member DO NOT FORGET TO UPDATE GLProgram( GLProgram&& Program )!!!</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "GLProgramResources.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">class </span>GLProgram : <span class="keyword">public</span> GLObjectWrappers::GLProgramObj</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  GLProgram( <span class="keywordtype">bool</span> CreateObject );</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  GLProgram( GLProgram&& Program );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">void</span> InitResources(RenderDeviceGLImpl* pDeviceGLImpl, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> DefaultVariableType, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> ShaderVariableDesc *VariableDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  Uint32 NumVars, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">const</span> StaticSamplerDesc *StaticSamplers,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Uint32 NumStaticSamplers,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  IObject &Owner);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">void</span> BindConstantResources(IResourceMapping *pResourceMapping, Uint32 Flags);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> GLProgramResources& GetAllResources(){<span class="keywordflow">return</span> m_AllResources;}</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLProgramResources& GetConstantResources(){<span class="keywordflow">return</span> m_ConstantResources;}</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#ifdef VERIFY_RESOURCE_BINDINGS</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TResArrayType></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> dbgVerifyBindingCompletenessHelper(TResArrayType &ResArr, GLProgramResources *pDynamicResources);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span> dbgVerifyBindingCompleteness(GLProgramResources *pDynamicResources, <span class="keyword">class</span> PipelineStateGLImpl *pPSO);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  GLProgram( <span class="keyword">const</span> GLProgram& Program );</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> GLProgram& operator = (<span class="keyword">const</span> GLProgram& Program);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLProgramResources m_AllResources;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  GLProgramResources m_ConstantResources;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// When adding new member DO NOT FORGET TO UPDATE GLProgram( GLProgram&& Program )!!!</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespace_diligent_html_adea6ddf55230a2722e6a7401e18de698"><div class="ttname"><a href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">Diligent::SHADER_VARIABLE_TYPE</a></div><div class="ttdeci">SHADER_VARIABLE_TYPE</div><div class="ttdoc">Describes shader variable type that is used by ShaderVariableDesc. </div><div class="ttdef"><b>Definition:</b> Shader.h:100</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_program_resources_8h_source.html b/doc/html/_g_l_program_resources_8h_source.html index a29daebf..3c5b1267 100644 --- a/doc/html/_g_l_program_resources_8h_source.html +++ b/doc/html/_g_l_program_resources_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">GLProgramResources.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "SamplerGLImpl.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor"># define VERIFY_RESOURCE_BINDINGS</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class </span>GLProgramResources</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  GLProgramResources();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GLProgramResources( GLProgramResources&& Program );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> LoadUniforms(<span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGLImpl,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  GLuint GLProgram, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> DefaultVariableType, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> ShaderVariableDesc *VariableDesc, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  Uint32 NumVars,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">const</span> StaticSamplerDesc *StaticSamplers,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  Uint32 NumStaticSamplers);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> Clone(<span class="keyword">const</span> GLProgramResources& SrcLayout, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *VarTypes, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  Uint32 NumVarTypes,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  IObject &Owner);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">struct </span>GLProgramVariableBase</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  GLProgramVariableBase( <span class="keyword">const</span> Char* _Name, <span class="keywordtype">size_t</span> _ArraySize, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VarType) :</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  Name( _Name ),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  VarType(_VarType),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  pResources(_ArraySize)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  VERIFY_EXPR(_ArraySize >= 1);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  String Name;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::vector< RefCntAutoPtr<IDeviceObject> > pResources;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">struct </span>UniformBufferInfo : GLProgramVariableBase</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  UniformBufferInfo(<span class="keyword">const</span> Char* _Name, <span class="keywordtype">size_t</span> _ArraySize, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VarType, GLint _Index) :</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  GLProgramVariableBase(_Name, _ArraySize, _VarType),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  Index(_Index)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {}</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  GLuint Index;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::vector<UniformBufferInfo>& GetUniformBlocks(){ <span class="keywordflow">return</span> m_UniformBlocks; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">struct </span>SamplerInfo : GLProgramVariableBase</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  SamplerInfo(<span class="keyword">const</span> Char* _Name, <span class="keywordtype">size_t</span> _ArraySize, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VarType, GLint _Location, GLenum _Type, <span class="keyword">class</span> SamplerGLImpl *_pStaticSampler) :</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  GLProgramVariableBase(_Name, _ArraySize, _VarType),</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  Location(_Location),</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  Type(_Type),</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  pStaticSampler(_pStaticSampler)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {}</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  GLint Location;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  GLenum Type;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  RefCntAutoPtr<class SamplerGLImpl> pStaticSampler;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  };</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  std::vector<SamplerInfo>& GetSamplers(){ <span class="keywordflow">return</span> m_Samplers; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">struct </span>ImageInfo : GLProgramVariableBase</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  ImageInfo(<span class="keyword">const</span> Char* _Name, <span class="keywordtype">size_t</span> _ArraySize, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VarType, GLint _BindingPoint, GLenum _Type) :</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  GLProgramVariableBase(_Name, _ArraySize, _VarType),</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  BindingPoint(_BindingPoint),</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  Type(_Type)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  GLint BindingPoint;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  GLenum Type;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::vector<ImageInfo>& GetImages(){ <span class="keywordflow">return</span> m_Images; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">struct </span>StorageBlockInfo : GLProgramVariableBase</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  StorageBlockInfo(<span class="keyword">const</span> Char* _Name, <span class="keywordtype">size_t</span> _ArraySize, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VarType, GLint _Binding) :</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  GLProgramVariableBase(_Name, _ArraySize, _VarType),</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  Binding(_Binding)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  GLint Binding;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  };</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::vector<StorageBlockInfo>& GetStorageBlocks(){ <span class="keywordflow">return</span> m_StorageBlocks; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">struct </span>CGLShaderVariable : ShaderVariableBase</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  CGLShaderVariable( IObject &Owner, GLProgramResources::GLProgramVariableBase &ProgVar ) :</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  ShaderVariableBase( Owner ),</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  ProgramVar(ProgVar)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {}</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set( IDeviceObject *pObject )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  ProgramVar.pResources[0] = pObject;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(IDeviceObject* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span>(Uint32 i=0; i < NumElements; ++i)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  ProgramVar.pResources[FirstElement + i] = ppObjects[i];</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  GLProgramVariableBase &ProgramVar;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  };</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">void</span> BindResources(IResourceMapping *pResourceMapping, Uint32 Flags);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#ifdef VERIFY_RESOURCE_BINDINGS</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">void</span> dbgVerifyResourceBindings();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  IShaderVariable* GetShaderVariable( <span class="keyword">const</span> Char* Name );</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">const</span> std::unordered_map<HashMapStringKey, CGLShaderVariable>& GetVariables(){<span class="keywordflow">return</span> m_VariableHash;}</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">const</span> GLProgramResources& operator = (<span class="keyword">const</span> GLProgramResources& Program);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">void</span> InitVariables(IObject &Owner);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  std::vector<UniformBufferInfo> m_UniformBlocks;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  std::vector< SamplerInfo > m_Samplers;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  std::vector< ImageInfo > m_Images;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  std::vector< StorageBlockInfo > m_StorageBlocks;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  std::unordered_map<HashMapStringKey, CGLShaderVariable> m_VariableHash;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// When adding new member DO NOT FORGET TO UPDATE GLProgramResources( GLProgramResources&& ProgramResources )!!!</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "SamplerGLImpl.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor"># define VERIFY_RESOURCE_BINDINGS</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class </span>GLProgramResources</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  GLProgramResources();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GLProgramResources( GLProgramResources&& Program );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> LoadUniforms(<span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGLImpl,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  GLuint GLProgram, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> DefaultVariableType, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> ShaderVariableDesc *VariableDesc, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  Uint32 NumVars,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">const</span> StaticSamplerDesc *StaticSamplers,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  Uint32 NumStaticSamplers);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> Clone(<span class="keyword">const</span> GLProgramResources& SrcLayout, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *VarTypes, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  Uint32 NumVarTypes,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  IObject &Owner);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">struct </span>GLProgramVariableBase</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  GLProgramVariableBase( <span class="keyword">const</span> Char* _Name, <span class="keywordtype">size_t</span> _ArraySize, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VarType) :</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  Name( _Name ),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  VarType(_VarType),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  pResources(_ArraySize)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  VERIFY_EXPR(_ArraySize >= 1);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  String Name;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::vector< RefCntAutoPtr<IDeviceObject> > pResources;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">struct </span>UniformBufferInfo : GLProgramVariableBase</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  UniformBufferInfo(<span class="keyword">const</span> Char* _Name, <span class="keywordtype">size_t</span> _ArraySize, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VarType, GLint _Index) :</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  GLProgramVariableBase(_Name, _ArraySize, _VarType),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  Index(_Index)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {}</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  GLuint Index;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::vector<UniformBufferInfo>& GetUniformBlocks(){ <span class="keywordflow">return</span> m_UniformBlocks; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">struct </span>SamplerInfo : GLProgramVariableBase</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  SamplerInfo(<span class="keyword">const</span> Char* _Name, <span class="keywordtype">size_t</span> _ArraySize, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VarType, GLint _Location, GLenum _Type, <span class="keyword">class</span> SamplerGLImpl *_pStaticSampler) :</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  GLProgramVariableBase(_Name, _ArraySize, _VarType),</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  Location(_Location),</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  Type(_Type),</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  pStaticSampler(_pStaticSampler)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {}</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  GLint Location;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  GLenum Type;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  RefCntAutoPtr<class SamplerGLImpl> pStaticSampler;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  };</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  std::vector<SamplerInfo>& GetSamplers(){ <span class="keywordflow">return</span> m_Samplers; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">struct </span>ImageInfo : GLProgramVariableBase</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  ImageInfo(<span class="keyword">const</span> Char* _Name, <span class="keywordtype">size_t</span> _ArraySize, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VarType, GLint _BindingPoint, GLenum _Type) :</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  GLProgramVariableBase(_Name, _ArraySize, _VarType),</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  BindingPoint(_BindingPoint),</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  Type(_Type)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  GLint BindingPoint;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  GLenum Type;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::vector<ImageInfo>& GetImages(){ <span class="keywordflow">return</span> m_Images; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">struct </span>StorageBlockInfo : GLProgramVariableBase</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  StorageBlockInfo(<span class="keyword">const</span> Char* _Name, <span class="keywordtype">size_t</span> _ArraySize, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VarType, GLint _Binding) :</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  GLProgramVariableBase(_Name, _ArraySize, _VarType),</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  Binding(_Binding)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  GLint Binding;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  };</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::vector<StorageBlockInfo>& GetStorageBlocks(){ <span class="keywordflow">return</span> m_StorageBlocks; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">struct </span>CGLShaderVariable : ShaderVariableBase</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  CGLShaderVariable( IObject &Owner, GLProgramResources::GLProgramVariableBase &ProgVar ) :</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  ShaderVariableBase( Owner ),</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  ProgramVar(ProgVar)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {}</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set( IDeviceObject *pObject )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  ProgramVar.pResources[0] = pObject;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(IDeviceObject* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span>(Uint32 i=0; i < NumElements; ++i)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  ProgramVar.pResources[FirstElement + i] = ppObjects[i];</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  GLProgramVariableBase &ProgramVar;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  };</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">void</span> BindResources(IResourceMapping *pResourceMapping, Uint32 Flags);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#ifdef VERIFY_RESOURCE_BINDINGS</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">void</span> dbgVerifyResourceBindings();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  IShaderVariable* GetShaderVariable( <span class="keyword">const</span> Char* Name );</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">const</span> std::unordered_map<HashMapStringKey, CGLShaderVariable>& GetVariables(){<span class="keywordflow">return</span> m_VariableHash;}</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">const</span> GLProgramResources& operator = (<span class="keyword">const</span> GLProgramResources& Program);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">void</span> InitVariables(IObject &Owner);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  std::vector<UniformBufferInfo> m_UniformBlocks;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  std::vector< SamplerInfo > m_Samplers;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  std::vector< ImageInfo > m_Images;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  std::vector< StorageBlockInfo > m_StorageBlocks;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  std::unordered_map<HashMapStringKey, CGLShaderVariable> m_VariableHash;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// When adding new member DO NOT FORGET TO UPDATE GLProgramResources( GLProgramResources&& ProgramResources )!!!</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespace_diligent_html_adea6ddf55230a2722e6a7401e18de698"><div class="ttname"><a href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">Diligent::SHADER_VARIABLE_TYPE</a></div><div class="ttdeci">SHADER_VARIABLE_TYPE</div><div class="ttdoc">Describes shader variable type that is used by ShaderVariableDesc. </div><div class="ttdef"><b>Definition:</b> Shader.h:100</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_s_l_definitions_8h_source.html b/doc/html/_g_l_s_l_definitions_8h_source.html index 72411e67..c16719da 100644 --- a/doc/html/_g_l_s_l_definitions_8h_source.html +++ b/doc/html/_g_l_s_l_definitions_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">GLSLDefinitions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifndef _GLSL_DEFINITIONS_</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define _GLSL_DEFINITIONS_</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#define GLSL</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define float4 vec4</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define float3 vec3</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define float2 vec2</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define int4 ivec4</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define int3 ivec3</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define int2 ivec2</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define uint4 uvec4</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#define uint3 uvec3</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#define uint2 uvec2</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define bool4 bvec4</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define bool3 bvec3</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define bool2 bvec2</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// OpenGL matrices in GLSL are always as column-major </span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// (this is not related to how they are stored)</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#define float2x2 mat2x2</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#define float2x3 mat3x2</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#define float2x4 mat4x2</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define float3x2 mat2x3</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#define float3x3 mat3x3</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#define float3x4 mat4x3</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define float4x2 mat2x4</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define float4x3 mat3x4</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#define float4x4 mat4x4</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#define matrix mat4x4</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#define static</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#define SamplerState int</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#define SamplerComparisonState int</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// https://www.opengl.org/wiki/Memory_Model#Incoherent_memory_access</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// Shared variable access uses the rules for incoherent memory access. </span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// This means that the user must perform certain synchronization in </span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// order to ensure that shared variables are visible.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// At the same time, shared variables are all implicitly declared coherent, </span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// so one don't need to (and can't) use that qualifier.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#define groupshared shared</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#ifdef FRAGMENT_SHADER</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"># define ddx dFdx</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"># define ddy dFdy</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor"># define ddx(x) (x) // GLSL compiler fails when it sees derivatives </span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"># define ddy(x) (x) // in any shader but fragment</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#define ddx_coarse ddx</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#define ddy_coarse ddy</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#define ddx_fine ddx</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#define ddy_fine ddy</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#define mul(a, b) ((a)*(b))</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#define frac fract</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#define atan2 atan</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#define rsqrt inversesqrt</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#define fmod mod</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#define lerp mix</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#define dst distance</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#define countbits bitCount</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#define firstbithigh findMSB</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#define firstbitlow findLSB</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#define reversebits bitfieldReverse</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">float</span> rcp( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> 1.0 / x; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> vec2 rcp( vec2 x ){ <span class="keywordflow">return</span> vec2(1.0,1.0) / x; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> vec3 rcp( vec3 x ){ <span class="keywordflow">return</span> vec3(1.0,1.0,1.0) / x; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> vec4 rcp( vec4 x ){ <span class="keywordflow">return</span> vec4(1.0,1.0,1.0,1.0) / x; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">float</span> saturate( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> clamp( x, 0.0, 1.0 ); }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> vec2 saturate( vec2 x ){ <span class="keywordflow">return</span> clamp( x, vec2(0.0, 0.0), vec2(1.0, 1.0) ); }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> vec3 saturate( vec3 x ){ <span class="keywordflow">return</span> clamp( x, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0) ); }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> vec4 saturate( vec4 x ){ <span class="keywordflow">return</span> clamp( x, vec4(0.0, 0.0, 0.0, 0.0), vec4(1.0, 1.0, 1.0, 1.0) ); }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">void</span> sincos( <span class="keywordtype">float</span> x, out <span class="keywordtype">float</span> s, out <span class="keywordtype">float</span> c ){ s = sin( x ); c = cos( x ); }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">void</span> sincos( vec2 x, out vec2 s, out vec2 c ){ s = sin( x ); c = cos( x ); }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keywordtype">void</span> sincos( vec3 x, out vec3 s, out vec3 c ){ s = sin( x ); c = cos( x ); }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">void</span> sincos( vec4 x, out vec4 s, out vec4 c ){ s = sin( x ); c = cos( x ); }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// Bit conversion operations</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keywordtype">float</span> asfloat( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> vec2 asfloat( vec2 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> vec3 asfloat( vec3 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> vec4 asfloat( vec4 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keywordtype">float</span> asfloat( <span class="keywordtype">int</span> x ){ <span class="keywordflow">return</span> intBitsToFloat(x); }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> vec2 asfloat( ivec2 x ){ <span class="keywordflow">return</span> intBitsToFloat(x); }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> vec3 asfloat( ivec3 x ){ <span class="keywordflow">return</span> intBitsToFloat(x); }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> vec4 asfloat( ivec4 x ){ <span class="keywordflow">return</span> intBitsToFloat(x); }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">float</span> asfloat( uint x ){ <span class="keywordflow">return</span> uintBitsToFloat(x); }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> vec2 asfloat( uvec2 x ){ <span class="keywordflow">return</span> uintBitsToFloat(x); }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> vec3 asfloat( uvec3 x ){ <span class="keywordflow">return</span> uintBitsToFloat(x); }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> vec4 asfloat( uvec4 x ){ <span class="keywordflow">return</span> uintBitsToFloat(x); }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">int</span> asint( <span class="keywordtype">int</span> x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> ivec2 asint( ivec2 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> ivec3 asint( ivec3 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> ivec4 asint( ivec4 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="keywordtype">int</span> asint( uint x ){ <span class="keywordflow">return</span> int(x); }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> ivec2 asint( uvec2 x ){ <span class="keywordflow">return</span> ivec2(x); }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> ivec3 asint( uvec3 x ){ <span class="keywordflow">return</span> ivec3(x); }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> ivec4 asint( uvec4 x ){ <span class="keywordflow">return</span> ivec4(x); }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="keywordtype">int</span> asint( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> floatBitsToInt(x); }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> ivec2 asint( vec2 x ){ <span class="keywordflow">return</span> floatBitsToInt(x); }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> ivec3 asint( vec3 x ){ <span class="keywordflow">return</span> floatBitsToInt(x); }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> ivec4 asint( vec4 x ){ <span class="keywordflow">return</span> floatBitsToInt(x); }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> uint asuint( uint x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> uvec2 asuint( uvec2 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> uvec3 asuint( uvec3 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> uvec4 asuint( uvec4 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> uint asuint( <span class="keywordtype">int</span> x ){ <span class="keywordflow">return</span> uint(x); }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> uvec2 asuint( ivec2 x ){ <span class="keywordflow">return</span> uvec2(x); }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> uvec3 asuint( ivec3 x ){ <span class="keywordflow">return</span> uvec3(x); }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> uvec4 asuint( ivec4 x ){ <span class="keywordflow">return</span> uvec4(x); }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> uint asuint( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> floatBitsToUint(x); }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> uvec2 asuint( vec2 x ){ <span class="keywordflow">return</span> floatBitsToUint(x); }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> uvec3 asuint( vec3 x ){ <span class="keywordflow">return</span> floatBitsToUint(x); }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> uvec4 asuint( vec4 x ){ <span class="keywordflow">return</span> floatBitsToUint(x); }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">float</span> f16tof32( uint u1 )</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> { </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> unpackHalf2x16( u1 ).x; </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> vec2 f16tof32( uvec2 u2 )</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> { </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  uint u2PackedHalf = (u2.x & 0x0ffffu) | ((u2.y & 0x0ffffu) << 16u);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> unpackHalf2x16( u2PackedHalf ); </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> vec3 f16tof32( uvec3 u3 )</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> { </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> vec3( f16tof32( u3.xy ), f16tof32( u3.z ) );</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> vec4 f16tof32( uvec4 u4 )</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> { </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> vec4( f16tof32( u4.xy ), f16tof32( u4.zw ) );</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keywordtype">float</span> f16tof32( <span class="keywordtype">int</span> i1 ){ <span class="keywordflow">return</span> f16tof32( uint ( i1 ) ); }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> vec2 f16tof32( ivec2 i2 ){ <span class="keywordflow">return</span> f16tof32( uvec2( i2 ) ); }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> vec3 f16tof32( ivec3 i3 ){ <span class="keywordflow">return</span> f16tof32( uvec3( i3 ) ); }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> vec4 f16tof32( ivec4 i4 ){ <span class="keywordflow">return</span> f16tof32( uvec4( i4 ) ); }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> uint f32tof16( <span class="keywordtype">float</span> f )</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> { </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> packHalf2x16( vec2( f, 0.0 ) ) & 0x0ffffu; </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> uvec2 f32tof16( vec2 f2 )</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> { </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  uint u2PackedHalf = packHalf2x16( f2 );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> uvec2( u2PackedHalf & 0x0ffffu, u2PackedHalf >> 16u );</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> uvec3 f32tof16( vec3 f3 )</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> uvec3( f32tof16( f3.xy ), f32tof16( f3.z ) );</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> uvec4 f32tof16( vec4 f4 )</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> uvec4( f32tof16( f4.xy ), f32tof16( f4.zw ) );</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor">#ifndef GL_ES // double is not supported on GLES</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keywordtype">double</span> asdouble(uint lowbits, uint highbits)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> packDouble2x32( uvec2( lowbits, highbits ) );</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment">// Floating point functions</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keywordtype">bool</span> isfinite( <span class="keywordtype">float</span> x )</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> !isinf( x ) && !isnan( x );</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> bool2 isfinite( vec2 f2 )</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> bool2( isfinite( f2.x ), isfinite( f2.y ) );</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> bool3 isfinite( vec3 f3 )</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> bool3( isfinite( f3.xy ), isfinite( f3.z ) );</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> bool4 isfinite( vec4 f4 )</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> bool4( isfinite( f4.xyz ), isfinite( f4.w ) );</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor">#ifndef GL_ES</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordtype">float</span> noise( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> noise1( x ); }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  vec2 noise( vec2 x ){ <span class="keywordflow">return</span> noise2( x ); }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  vec3 noise( vec3 x ){ <span class="keywordflow">return</span> noise3( x ); }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  vec4 noise( vec4 x ){ <span class="keywordflow">return</span> noise4( x ); }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordtype">float</span> noise( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> 0.0; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  vec2 noise( vec2 x ){ <span class="keywordflow">return</span> vec2(0.0, 0.0); }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  vec3 noise( vec3 x ){ <span class="keywordflow">return</span> vec3(0.0, 0.0, 0.0); }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  vec4 noise( vec4 x ){ <span class="keywordflow">return</span> vec4(0.0, 0.0, 0.0, 0.0); }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="keywordtype">float</span> log10( <span class="keywordtype">float</span> x )</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> log( x ) / log( 10.0 );</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> vec2 log10( vec2 x )</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordtype">float</span> _lg10 = log( 10.0 );</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> log( x ) / vec2(_lg10, _lg10);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> vec3 log10( vec3 x )</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">float</span> _lg10 = log( 10.0 );</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">return</span> log( x ) / vec3(_lg10, _lg10, _lg10);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> vec4 log10( vec4 x )</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">float</span> _lg10 = log( 10.0 );</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> log( x ) / vec4(_lg10, _lg10, _lg10, _lg10);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#ifdef GL_ES</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="preprocessor"># define mad(a,b,c) ((a)*(b)+(c))</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor"># define mad fma</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="comment">// Relational and logical operators</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor">#define Less lessThan</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor">#define LessEqual lessThanEqual</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor">#define Greater greaterThan</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor">#define GreaterEqual greaterThanEqual</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor">#define Equal equal</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="preprocessor">#define NotEqual notEqual</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="preprocessor">#define Not not</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> bool4 And(bool4 L, bool4 R)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">return</span> bool4(L.x && R.x,</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  L.y && R.y,</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  L.z && R.z,</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  L.w && R.w);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> bool3 And(bool3 L, bool3 R)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> bool3(L.x && R.x,</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  L.y && R.y,</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  L.z && R.z);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> bool2 And(bool2 L, bool2 R)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> bool2(L.x && R.x,</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  L.y && R.y);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="keywordtype">bool</span> And(<span class="keywordtype">bool</span> L, <span class="keywordtype">bool</span> R)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">return</span> (L && R);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> bool4 Or(bool4 L, bool4 R)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> bool4(L.x || R.x,</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  L.y || R.y,</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  L.z || R.z,</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  L.w || R.w);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> bool3 Or(bool3 L, bool3 R)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">return</span> bool3(L.x || R.x,</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  L.y || R.y,</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  L.z || R.z);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> bool2 Or(bool2 L, bool2 R)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">return</span> bool2(L.x || R.x,</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  L.y || R.y);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keywordtype">bool</span> Or(<span class="keywordtype">bool</span> L, <span class="keywordtype">bool</span> R)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">return</span> (L || R);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> float4 BoolToFloat( bool4 b4 )</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">return</span> float4(b4.x ? 1.0 : 0.0,</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  b4.y ? 1.0 : 0.0,</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  b4.z ? 1.0 : 0.0,</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  b4.w ? 1.0 : 0.0);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> float3 BoolToFloat( bool3 b3 )</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> float3(b3.x ? 1.0 : 0.0,</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  b3.y ? 1.0 : 0.0,</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  b3.z ? 1.0 : 0.0);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> float2 BoolToFloat( bool2 b2 )</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> float2(b2.x ? 1.0 : 0.0,</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  b2.y ? 1.0 : 0.0);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="keywordtype">float</span> BoolToFloat( <span class="keywordtype">bool</span> b )</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">return</span> b ? 1.0 : 0.0;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="comment">// Synchronization functions</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="preprocessor">#ifdef COMPUTE_SHADER</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="comment">// https://www.opengl.org/wiki/Memory_Model#Incoherent_memory_access</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="comment">// MSDN: GroupMemoryBarrier() blocks execution of all threads </span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="comment">// in a group until all group SHARED accesses have been completed.</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="keywordtype">void</span> GroupMemoryBarrier()</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="comment">// OpenGL.org: groupMemoryBarrier() waits on the completion of all memory accesses </span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="comment">// performed by an invocation of a compute shader relative to the same access performed </span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="comment">// by other invocations in the same work group and then returns with no other effect.</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="comment">// groupMemoryBarrier() acts like memoryBarrier(), ordering memory writes for all kinds </span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="comment">// of variables, but it only orders read/writes for the current work group.</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  groupMemoryBarrier();</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">// OpenGL.org: memoryBarrierShared() waits on the completion of </span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="comment">// all memory accesses resulting from the use of SHARED variables</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="comment">// and then returns with no other effect. </span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  memoryBarrierShared();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="comment">// MSDN: GroupMemoryBarrierWithGroupSync() blocks execution of all </span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="comment">// threads in a group until all memory accesses have been completed </span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="comment">// and all threads in the group have reached this call.</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="keywordtype">void</span> GroupMemoryBarrierWithGroupSync()</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="comment">// Issue memory barrier first!</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  GroupMemoryBarrier();</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  barrier();</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="comment">// MSDN: DeviceMemoryBarrier() blocks execution of all threads </span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="comment">// in a group until all device memory accesses have been completed.</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="keywordtype">void</span> DeviceMemoryBarrier()</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="comment">// Call all memory barriers except for shared memory</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="comment">// Do we need to call groupMemoryBarrier() ????? </span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// OpenGL.org: memoryBarrierBuffer() waits on the completion of </span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="comment">// all memory accesses resulting from the use of BUFFER variables </span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">// and then returns with no other effect</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  memoryBarrierBuffer();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="comment">// OpenGL.org: memoryBarrierImage() waits on the completion of all </span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="comment">// memory accesses resulting from the use of IMAGE variables and then </span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="comment">// returns with no other effect. </span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  memoryBarrierImage();</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="comment">// OpenGL.org: memoryBarrierAtomicCounter() waits on the completion of </span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="comment">// all accesses resulting from the use of ATOMIC COUNTERS and then returns </span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="comment">// with no other effect. </span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  memoryBarrierAtomicCounter();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="comment">// MSDN: DeviceMemoryBarrierWithGroupSync() blocks execution of </span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="comment">// all threads in a group until all device memory accesses have </span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="comment">// been completed and all threads in the group have reached this call.</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="keywordtype">void</span> DeviceMemoryBarrierWithGroupSync()</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  DeviceMemoryBarrier();</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  barrier();</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="comment">// MSDN: AllMemoryBarrier() blocks execution of all threads in a </span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="comment">// group until all memory accesses have been completed.</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="keywordtype">void</span> AllMemoryBarrier()</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="comment">// OpenGL.org: memoryBarrier() waits on the completion of ALL </span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// memory accesses resulting from the use of IMAGE variables or </span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">// ATOMIC COUNTERS and then returns with no other effect.</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  memoryBarrier();</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="comment">// NOTE: nothing is said about buffer memory and shared memory,</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// so call memoryBarrierBuffer() and memoryBarrierShared() for safety</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">// OpenGL.org: memoryBarrierBuffer() waits on the completion of </span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="comment">// all memory accesses resulting from the use of BUFFER variables </span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="comment">// and then returns with no other effect</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  memoryBarrierBuffer();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">// OpenGL.org: memoryBarrierShared() waits on the completion of </span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="comment">// all memory accesses resulting from the use of SHARED variables</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="comment">// and then returns with no other effect. </span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  memoryBarrierShared();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="comment">// Call all memory barrier functions. They should have no effect</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="comment">// if everything is synchronized.</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="comment">// OpenGL.org: memoryBarrierImage() waits on the completion of all </span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// memory accesses resulting from the use of IMAGE variables and then </span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="comment">// returns with no other effect. </span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  memoryBarrierImage();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// OpenGL.org: memoryBarrierAtomicCounter() waits on the completion of </span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// all accesses resulting from the use of ATOMIC COUNTERS and then returns </span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">// with no other effect. </span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  memoryBarrierAtomicCounter();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="comment">// groupMemoryBarrier waits on the completion of all memory accesses performed </span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="comment">// by an invocation of a compute shader relative to the same access performed by </span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// other invocations in the same work group and then returns with no other effect.</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  groupMemoryBarrier();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="comment">// MSDN: AllMemoryBarrierWithGroupSync() blocks execution of all </span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="comment">// threads in a group until all memory accesses have been completed </span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="comment">// and all threads in the group have reached this call.</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="keywordtype">void</span> AllMemoryBarrierWithGroupSync()</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  AllMemoryBarrier();</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  barrier();</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="keywordtype">void</span> AllMemoryBarrier(){}</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="keywordtype">void</span> AllMemoryBarrierWithGroupSync(){}</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="keywordtype">void</span> DeviceMemoryBarrier(){}</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="keywordtype">void</span> DeviceMemoryBarrierWithGroupSync(){}</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="keywordtype">void</span> GroupMemoryBarrier(){}</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="keywordtype">void</span> GroupMemoryBarrierWithGroupSync(){}</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="comment">// Type conversion functions</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> vec4 _ExpandVector( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> vec4( x, x, x, x ); }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> vec4 _ExpandVector( vec2 f2 ){ <span class="keywordflow">return</span> vec4( f2.x, f2.y, 0.0, 0.0 ); }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> vec4 _ExpandVector( vec3 f3 ){ <span class="keywordflow">return</span> vec4( f3.x, f3.y, f3.z, 0.0 ); }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> vec4 _ExpandVector( vec4 f4 ){ <span class="keywordflow">return</span> vec4( f4.x, f4.y, f4.z, f4.w ); }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> ivec4 _ExpandVector( <span class="keywordtype">int</span> x ){ <span class="keywordflow">return</span> ivec4( x, x, x, x ); }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> ivec4 _ExpandVector( ivec2 i2 ){ <span class="keywordflow">return</span> ivec4( i2.x, i2.y, 0, 0 ); }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> ivec4 _ExpandVector( ivec3 i3 ){ <span class="keywordflow">return</span> ivec4( i3.x, i3.y, i3.z, 0 ); }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> ivec4 _ExpandVector( ivec4 i4 ){ <span class="keywordflow">return</span> ivec4( i4.x, i4.y, i4.z, i4.w ); }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> uvec4 _ExpandVector( uint x ){ <span class="keywordflow">return</span> uvec4( x, x, x, x ); }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> uvec4 _ExpandVector( uvec2 u2 ){ <span class="keywordflow">return</span> uvec4( u2.x, u2.y, 0u, 0u ); }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> uvec4 _ExpandVector( uvec3 u3 ){ <span class="keywordflow">return</span> uvec4( u3.x, u3.y, u3.z, 0u ); }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> uvec4 _ExpandVector( uvec4 u4 ){ <span class="keywordflow">return</span> uvec4( u4.x, u4.y, u4.z, u4.w ); }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> bvec4 _ExpandVector( <span class="keywordtype">bool</span> x ){ <span class="keywordflow">return</span> bvec4( x, x, x, x ); }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> bvec4 _ExpandVector( bvec2 b2 ){ <span class="keywordflow">return</span> bvec4( b2.x, b2.y, <span class="keyword">false</span>, <span class="keyword">false</span> ); }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> bvec4 _ExpandVector( bvec3 b3 ){ <span class="keywordflow">return</span> bvec4( b3.x, b3.y, b3.z, <span class="keyword">false</span> ); }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> bvec4 _ExpandVector( bvec4 b4 ){ <span class="keywordflow">return</span> bvec4( b4.x, b4.y, b4.z, b4.w ); }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="keywordtype">void</span> _ResizeVector(out vec4 outVec4, in vec4 inVec4){outVec4 = inVec4;}</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="keywordtype">void</span> _ResizeVector(out vec3 outVec3, in vec4 inVec4){outVec3 = inVec4.xyz;}</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="keywordtype">void</span> _ResizeVector(out vec2 outVec2, in vec4 inVec4){outVec2 = inVec4.xy;}</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="keywordtype">void</span> _ResizeVector(out <span class="keywordtype">float</span> outFlt, in vec4 inVec4){outFlt = inVec4.x;}</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="keywordtype">void</span> _ResizeVector(out vec4 outVec4, in vec3 inVec3){outVec4 = vec4(inVec3, 0.0);}</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="keywordtype">void</span> _ResizeVector(out vec3 outVec3, in vec3 inVec3){outVec3 = inVec3;}</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="keywordtype">void</span> _ResizeVector(out vec2 outVec2, in vec3 inVec3){outVec2 = inVec3.xy;}</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="keywordtype">void</span> _ResizeVector(out <span class="keywordtype">float</span> outFlt, in vec3 inVec3){outFlt = inVec3.x;}</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="keywordtype">void</span> _ResizeVector(out vec4 outVec4, in vec2 inVec2){outVec4 = vec4(inVec2, 0.0, 0.0);}</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="keywordtype">void</span> _ResizeVector(out vec3 outVec3, in vec2 inVec2){outVec3 = vec3(inVec2, 0.0);}</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="keywordtype">void</span> _ResizeVector(out vec2 outVec2, in vec2 inVec2){outVec2 = inVec2;}</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="keywordtype">void</span> _ResizeVector(out <span class="keywordtype">float</span> outFlt, in vec2 inVec2){outFlt = inVec2.x;}</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="keywordtype">void</span> _ResizeVector(out vec4 outVec4, in <span class="keywordtype">float</span> v){outVec4 = vec4(v, 0.0, 0.0, 0.0);}</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="keywordtype">void</span> _ResizeVector(out vec3 outVec3, in <span class="keywordtype">float</span> v){outVec3 = vec3(v, 0.0, 0.0);}</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="keywordtype">void</span> _ResizeVector(out vec2 outVec2, in <span class="keywordtype">float</span> v){outVec2 = vec2(v, 0.0);}</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="keywordtype">void</span> _ResizeVector(out <span class="keywordtype">float</span> outFlt, in <span class="keywordtype">float</span> v){outFlt = v;}</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">float</span> Dst, in <span class="keywordtype">int</span> Src ){ Dst = float( Src ); }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">float</span> Dst, in uint Src ){ Dst = float( Src ); }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">float</span> Dst, in <span class="keywordtype">float</span> Src ){ Dst = float( Src ); }</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="keywordtype">void</span> _TypeConvertStore( out uint Dst, in <span class="keywordtype">int</span> Src ){ Dst = uint( Src ); }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="keywordtype">void</span> _TypeConvertStore( out uint Dst, in uint Src ){ Dst = uint( Src ); }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="keywordtype">void</span> _TypeConvertStore( out uint Dst, in <span class="keywordtype">float</span> Src ){ Dst = uint( Src ); }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">int</span> Dst, in <span class="keywordtype">int</span> Src ){ Dst = int( Src ); }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">int</span> Dst, in uint Src ){ Dst = int( Src ); }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">int</span> Dst, in <span class="keywordtype">float</span> Src ){ Dst = int( Src ); }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="keywordtype">int</span> _ToInt( <span class="keywordtype">int</span> x ) { <span class="keywordflow">return</span> int(x); }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="keywordtype">int</span> _ToInt( uint x ) { <span class="keywordflow">return</span> int(x); }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="keywordtype">int</span> _ToInt( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> int(x); }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="keywordtype">int</span> _ToInt( <span class="keywordtype">bool</span> x ) { <span class="keywordflow">return</span> x ? 1 : 0; }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="keywordtype">float</span> _ToFloat( <span class="keywordtype">int</span> x ) { <span class="keywordflow">return</span> float(x); }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="keywordtype">float</span> _ToFloat( uint x ) { <span class="keywordflow">return</span> float(x); }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="keywordtype">float</span> _ToFloat( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> float(x); }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="keywordtype">float</span> _ToFloat( <span class="keywordtype">bool</span> x ) { <span class="keywordflow">return</span> x ? 1.0 : 0.0;}</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> uint _ToUint( <span class="keywordtype">int</span> x ) { <span class="keywordflow">return</span> uint(x); }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> uint _ToUint( uint x ) { <span class="keywordflow">return</span> uint(x); }</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> uint _ToUint( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> uint(x); }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> uint _ToUint( <span class="keywordtype">bool</span> x ) { <span class="keywordflow">return</span> x ? 1u : 0u; }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="keywordtype">bool</span> _ToBool( <span class="keywordtype">int</span> x ) { <span class="keywordflow">return</span> x != 0 ? true : <span class="keyword">false</span>; }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="keywordtype">bool</span> _ToBool( uint x ) { <span class="keywordflow">return</span> x != 0u ? true : <span class="keyword">false</span>; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="keywordtype">bool</span> _ToBool( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> x != 0.0 ? true : <span class="keyword">false</span>; }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="keywordtype">bool</span> _ToBool( <span class="keywordtype">bool</span> x ) { <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="preprocessor">#define _ToVec2(x,y) vec2(_ToFloat(x), _ToFloat(y))</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <span class="preprocessor">#define _ToVec3(x,y,z) vec3(_ToFloat(x), _ToFloat(y), _ToFloat(z))</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="preprocessor">#define _ToVec4(x,y,z,w) vec4(_ToFloat(x), _ToFloat(y), _ToFloat(z), _ToFloat(w))</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> <span class="preprocessor">#define _ToIvec2(x,y) ivec2(_ToInt(x), _ToInt(y))</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="preprocessor">#define _ToIvec3(x,y,z) ivec3(_ToInt(x), _ToInt(y), _ToInt(z))</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> <span class="preprocessor">#define _ToIvec4(x,y,z,w) ivec4(_ToInt(x), _ToInt(y), _ToInt(z), _ToInt(w))</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="preprocessor">#define _ToUvec2(x,y) uvec2(_ToUint(x), _ToUint(y))</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="preprocessor">#define _ToUvec3(x,y,z) uvec3(_ToUint(x), _ToUint(y), _ToUint(z))</span></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <span class="preprocessor">#define _ToUvec4(x,y,z,w) uvec4(_ToUint(x), _ToUint(y), _ToUint(z), _ToUint(w))</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor">#define _ToBvec2(x,y) bvec2(_ToBool(x), _ToBool(y))</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> <span class="preprocessor">#define _ToBvec3(x,y,z) bvec3(_ToBool(x), _ToBool(y), _ToBool(z))</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="preprocessor">#define _ToBvec4(x,y,z,w) bvec4(_ToBool(x), _ToBool(y), _ToBool(z), _ToBool(w))</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="keywordtype">int</span> _ToIvec( uint u1 ){ <span class="keywordflow">return</span> _ToInt( u1 ); }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> ivec2 _ToIvec( uvec2 u2 ){ <span class="keywordflow">return</span> _ToIvec2( u2.x, u2.y ); }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> ivec3 _ToIvec( uvec3 u3 ){ <span class="keywordflow">return</span> _ToIvec3( u3.x, u3.y, u3.z ); }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> ivec4 _ToIvec( uvec4 u4 ){ <span class="keywordflow">return</span> _ToIvec4( u4.x, u4.y, u4.z, u4.w ); }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="keywordtype">int</span> _ToIvec( <span class="keywordtype">int</span> i1 ){ <span class="keywordflow">return</span> i1; }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> ivec2 _ToIvec( ivec2 i2 ){ <span class="keywordflow">return</span> i2; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> ivec3 _ToIvec( ivec3 i3 ){ <span class="keywordflow">return</span> i3; }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> ivec4 _ToIvec( ivec4 i4 ){ <span class="keywordflow">return</span> i4; }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="keywordtype">int</span> _ToIvec( <span class="keywordtype">float</span> f1 ){ <span class="keywordflow">return</span> _ToInt( f1 ); }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> ivec2 _ToIvec( vec2 f2 ){ <span class="keywordflow">return</span> _ToIvec2( f2.x, f2.y ); }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> ivec3 _ToIvec( vec3 f3 ){ <span class="keywordflow">return</span> _ToIvec3( f3.x, f3.y, f3.z ); }</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> ivec4 _ToIvec( vec4 f4 ){ <span class="keywordflow">return</span> _ToIvec4( f4.x, f4.y, f4.z, f4.w ); }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> </div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="keywordtype">float</span> _ToVec( uint u1 ){ <span class="keywordflow">return</span> _ToFloat(u1); }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> vec2 _ToVec( uvec2 u2 ){ <span class="keywordflow">return</span> _ToVec2( u2.x, u2.y ); }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> vec3 _ToVec( uvec3 u3 ){ <span class="keywordflow">return</span> _ToVec3( u3.x, u3.y, u3.z ); }</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> vec4 _ToVec( uvec4 u4 ){ <span class="keywordflow">return</span> _ToVec4( u4.x, u4.y, u4.z, u4.w ); }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="keywordtype">float</span> _ToVec( <span class="keywordtype">int</span> i1 ){ <span class="keywordflow">return</span> _ToFloat(i1); }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> vec2 _ToVec( ivec2 i2 ){ <span class="keywordflow">return</span> _ToVec2( i2.x, i2.y ); }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> vec3 _ToVec( ivec3 i3 ){ <span class="keywordflow">return</span> _ToVec3( i3.x, i3.y, i3.z ); }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> vec4 _ToVec( ivec4 i4 ){ <span class="keywordflow">return</span> _ToVec4( i4.x, i4.y, i4.z, i4.w ); }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="keywordtype">float</span> _ToVec( <span class="keywordtype">float</span> f1 ){ <span class="keywordflow">return</span> f1; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> vec2 _ToVec( vec2 f2 ){ <span class="keywordflow">return</span> f2; }</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> vec3 _ToVec( vec3 f3 ){ <span class="keywordflow">return</span> f3; }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> vec4 _ToVec( vec4 f4 ){ <span class="keywordflow">return</span> f4; }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> </div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> uint _ToUvec( uint u1 ){ <span class="keywordflow">return</span> u1; }</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> uvec2 _ToUvec( uvec2 u2 ){ <span class="keywordflow">return</span> u2; }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> uvec3 _ToUvec( uvec3 u3 ){ <span class="keywordflow">return</span> u3; }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> uvec4 _ToUvec( uvec4 u4 ){ <span class="keywordflow">return</span> u4; }</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> uint _ToUvec( <span class="keywordtype">int</span> i1 ){ <span class="keywordflow">return</span> _ToUint( i1 ); }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> uvec2 _ToUvec( ivec2 i2 ){ <span class="keywordflow">return</span> _ToUvec2( i2.x, i2.y ); }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> uvec3 _ToUvec( ivec3 i3 ){ <span class="keywordflow">return</span> _ToUvec3( i3.x, i3.y, i3.z ); }</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> uvec4 _ToUvec( ivec4 i4 ){ <span class="keywordflow">return</span> _ToUvec4( i4.x, i4.y, i4.z, i4.w ); }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> uint _ToUvec( <span class="keywordtype">float</span> f1 ){ <span class="keywordflow">return</span> _ToUint( f1 ); }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> uvec2 _ToUvec( vec2 f2 ){ <span class="keywordflow">return</span> _ToUvec2( f2.x, f2.y ); }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> uvec3 _ToUvec( vec3 f3 ){ <span class="keywordflow">return</span> _ToUvec3( f3.x, f3.y, f3.z ); }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> uvec4 _ToUvec( vec4 f4 ){ <span class="keywordflow">return</span> _ToUvec4( f4.x, f4.y, f4.z, f4.w ); }</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> </div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> </div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="comment">// TEXTURE FUNCTION STUB MACROS</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="comment">// https://www.opengl.org/wiki/Sampler_(GLSL)</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> </div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> </div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> <span class="comment">// Texture size queries</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> <span class="comment">// https://www.opengl.org/sdk/docs/man/html/textureSize.xhtml</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="comment">// textureSize returns the dimensions of level lod (if present) of the texture bound to sampler. </span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="comment">// The components in the return value are filled in, in order, with the width, height and depth </span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="comment">// of the texture. For the array forms, the last component of the return value is the number of </span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="comment">// layers in the texture array.</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> </div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="comment">//#if !(defined(DESKTOP_GL) && __VERSION__ >= 430)</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> <span class="preprocessor"># define textureQueryLevels(x) 0 // Only supported on 4.3+</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="comment">//#endif</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="preprocessor">#define GetTex1DDimensions_1(Sampler, Width)\</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="preprocessor"> _TypeConvertStore( Width, textureSize(Sampler, 0) );\</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="preprocessor">#define GetTex1DDimensions_3(Sampler, MipLevel, Width, NumberOfMipLevels)\</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="preprocessor"> _TypeConvertStore( Width, textureSize(Sampler, _ToInt(MipLevel)) ); \</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="preprocessor"> _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) ); \</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="preprocessor">#define GetTex1DArrDimensions_2(Sampler, Width, Elements)\</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="preprocessor"> ivec2 i2Size = textureSize(Sampler, 0); \</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x );\</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="preprocessor"> _TypeConvertStore( Elements, i2Size.y );\</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> </div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="preprocessor">#define GetTex1DArrDimensions_4(Sampler, MipLevel, Width, Elements, NumberOfMipLevels)\</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor"> ivec2 i2Size = textureSize(Sampler, _ToInt(MipLevel)); \</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="preprocessor"> _TypeConvertStore( Elements, i2Size.y ); \</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor"> _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="preprocessor">#define GetTex2DDimensions_2(Sampler, Width, Height)\</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="preprocessor"> ivec2 i2Size = textureSize(Sampler, 0); \</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="preprocessor"> _TypeConvertStore( Height, i2Size.y ); \</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> </div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <span class="preprocessor">#define GetTex2DDimensions_4(Sampler, MipLevel, Width, Height, NumberOfMipLevels)\</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="preprocessor"> ivec2 i2Size = textureSize(Sampler, _ToInt(MipLevel) ); \</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> <span class="preprocessor"> _TypeConvertStore( Height, i2Size.y ); \</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="preprocessor"> _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\</span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="preprocessor">#define GetTex2DArrDimensions_3(Sampler, Width, Height, Elements)\</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="preprocessor"> ivec3 i3Size = textureSize(Sampler, 0); \</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x ); \</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y ); \</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="preprocessor"> _TypeConvertStore( Elements,i3Size.z ); \</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> <span class="preprocessor">#define GetTex2DArrDimensions_5(Sampler, MipLevel, Width, Height, Elements, NumberOfMipLevels)\</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="preprocessor"> ivec3 i3Size = textureSize(Sampler, _ToInt(MipLevel)); \</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x ); \</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y ); \</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="preprocessor"> _TypeConvertStore( Elements, i3Size.z ); \</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> <span class="preprocessor"> _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="preprocessor">#define GetTex3DDimensions_3(Sampler, Width, Height, Depth)\</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="preprocessor"> ivec3 i3Size = textureSize(Sampler, 0); \</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x ); \</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y ); \</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="preprocessor"> _TypeConvertStore( Depth, i3Size.z ); \</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> </div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> <span class="preprocessor">#define GetTex3DDimensions_5(Sampler, MipLevel, Width, Height, Depth, NumberOfMipLevels)\</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="preprocessor"> ivec3 i3Size = textureSize(Sampler, _ToInt(MipLevel)); \</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x ); \</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y ); \</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span> <span class="preprocessor"> _TypeConvertStore( Depth, i3Size.z ); \</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> <span class="preprocessor"> _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> </div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="preprocessor">#define GetTex2DMSDimensions_3(Sampler, Width, Height, NumberOfSamples)\</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> <span class="preprocessor"> ivec2 i2Size = textureSize(Sampler); \</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <span class="preprocessor"> _TypeConvertStore( Height, i2Size.y ); \</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="preprocessor"> _TypeConvertStore( NumberOfSamples, 0 );\</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="preprocessor">#define GetTex2DMSArrDimensions_4(Sampler, Width, Height, Elements, NumberOfSamples)\</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> <span class="preprocessor"> ivec3 i3Size = textureSize(Sampler); \</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x );\</span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y );\</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="preprocessor"> _TypeConvertStore( Elements, i3Size.z );\</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span> <span class="preprocessor"> _TypeConvertStore( NumberOfSamples, 0 );\</span></div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span> </div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> </div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> <span class="comment">// https://www.opengl.org/sdk/docs/man/html/imageSize.xhtml</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="comment">// imageSize returns the dimensions of the image bound to image. The components in the </span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="comment">// return value are filled in, in order, with the width, height and depth of the image. </span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="comment">// For the array forms, the last component of the return value is the number of layers </span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="comment">// in the texture array.</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="preprocessor">#define GetRWTex1DDimensions_1(Tex, Width)\</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> <span class="preprocessor"> _TypeConvertStore( Width, imageSize(Tex) ); \</span></div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> </div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="preprocessor">#define GetRWTex1DArrDimensions_2(Tex, Width, Elements)\</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="preprocessor"> ivec2 i2Size = imageSize(Tex); \</span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="preprocessor"> _TypeConvertStore( Elements, i2Size.y ); \</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> </div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="preprocessor">#define GetRWTex2DDimensions_2(Tex, Width, Height)\</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> <span class="preprocessor"> ivec2 i2Size = imageSize(Tex); \</span></div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> <span class="preprocessor"> _TypeConvertStore( Height, i2Size.y ); \</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="preprocessor">#define GetRWTex2DArrDimensions_3(Tex, Width, Height, Elements)\</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="preprocessor"> ivec3 i3Size = imageSize(Tex); \</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x );\</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y );\</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="preprocessor"> _TypeConvertStore( Elements, i3Size.z );\</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="preprocessor">#define GetRWTex3DDimensions_3(Tex, Width, Height, Depth)\</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="preprocessor"> ivec3 i3Size = imageSize(Tex); \</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x ); \</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y ); \</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="preprocessor"> _TypeConvertStore( Depth, i3Size.z ); \</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> </div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> </div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="comment">// Texture sampling operations</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> </div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="comment">// IMPORTANT NOTE ABOUT OFFSET</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="comment">// Offset parameter to all texture sampling functions must be a constant expression.</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="comment">// If it is not, the shader will be successfully compiled, HOWEVER the value of Offset </span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="comment">// will silently be zero. </span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="comment">//</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="comment">// A constant expression in GLSL is defined as follows:</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="comment">// * A literal value.</span></div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="comment">// * A const-qualified variable with an explicit initializer (so not a function parameter).</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="comment">// * The result of the length() function of an array, but only if the array has an explicit size.</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="comment">// * The result of most operators, so long as all the operands are themselves constant expressions. </span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span> <span class="comment">// The operators not on this list are any assignment operators (+= and so forth), and the comma operator.</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="comment">// * The result of a constructor for a type, but only if all of the arguments to the constructor are </span></div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="comment">// themselves constant expressions.</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="comment">// * The return value of any built-in function, but only if all of the arguments to the function are </span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="comment">// themselves constant expressions. Opaque Types are never constant expressions. Note that the </span></div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="comment">// functions dFdx, dFdy, and fwidth will return 0, when used in a context that requires a constant </span></div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="comment">// expression (such as a const variable initializer).</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="comment">// </span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="comment">// The list above does not include return value of a function, even when the value is compile-time expression.</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="comment">// As a result, we cannot use type conversion functions for Offset parameter.</span></div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span> </div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="comment">// In all texture sampling functions, the last component of Coords is used as Dsub and the array layer is specified </span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> <span class="comment">// in the second to last component of Coords. (The second component of Coords is unused for 1D shadow lookups.)</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="comment">// For cube array textures, Dsub is specified as a separate parameter</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="comment">// mip</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="preprocessor">#define SampleCmpLevel0Tex1D_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, 0.0, CompareValue), 0.0)</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> <span class="preprocessor">#define SampleCmpLevel0Tex1DArr_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0)</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="preprocessor">#define SampleCmpLevel0Tex2D_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0)</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="preprocessor">#define SampleCmpLevel0Tex2DArr_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for sampler2DArrayShadow</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="preprocessor">#define SampleCmpLevel0TexCube_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for samplerCubeShadow</span></div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> <span class="preprocessor">#define SampleCmpLevel0TexCubeArr_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for samplerCubeArrayShadow</span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="comment">// mip</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="preprocessor">#define SampleCmpLevel0Tex1D_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, 0.0, CompareValue), 0.0, int(Offset))</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="preprocessor">#define SampleCmpLevel0Tex1DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0, int(Offset))</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="preprocessor">#define SampleCmpLevel0Tex2D_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0, ivec2((Offset).xy))</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="preprocessor">#define SampleCmpLevel0Tex2DArr_4(Tex, Sampler, Coords, CompareValue, Offset) 0.0 // No textureLodOffset for sampler2DArrayShadow</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> </div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> </div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> <span class="comment">// https://www.opengl.org/sdk/docs/man/html/texture.xhtml - note: there are many mistakes on the page</span></div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="preprocessor">#ifdef FRAGMENT_SHADER</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="preprocessor"># define Sample_2(Tex, Sampler, Coords) texture (Tex, _ToVec(Coords))</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="preprocessor"># define Sample_3(Tex, Sampler, Coords, Offset) textureOffset(Tex, _ToVec(Coords), Offset)</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <span class="preprocessor"># define SampleBias_3(Tex, Sampler, Coords, Bias) texture (Tex, _ToVec(Coords), _ToFloat(Bias))</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> <span class="preprocessor"># define SampleBias_4(Tex, Sampler, Coords, Bias, Offset) textureOffset(Tex, _ToVec(Coords), Offset, _ToFloat(Bias))</span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> </div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> <span class="preprocessor"># define SampleCmpTex1D_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, 0.0, CompareValue))</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> <span class="preprocessor"># define SampleCmpTex1DArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue))</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> <span class="preprocessor"># define SampleCmpTex2D_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue))</span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="preprocessor"># define SampleCmpTex2DArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue))</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="preprocessor"># define SampleCmpTexCube_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue))</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> <span class="preprocessor"># define SampleCmpTexCubeArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, (Coords).w), _ToFloat(CompareValue))</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="preprocessor"># define SampleCmpTex1D_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, 0.0, CompareValue), int(Offset))</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="preprocessor"># define SampleCmpTex1DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), int(Offset))</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> <span class="preprocessor"># define SampleCmpTex2D_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), ivec2((Offset).xy))</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="preprocessor"># define SampleCmpTex2DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue), ivec2((Offset).xy))</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> </div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <span class="comment">// Derivatives are only available in fragment shader. GLSL compiler fails when it</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span> <span class="comment">// encounters texture() or textureOffset() instructions in other types of shaders. So</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="comment">// to let the shader be compiled and to have something meaningful, replace such operations</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="comment">// with textureLod() and textureLodOffset()</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> </div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> <span class="preprocessor"># define Sample_2(Tex, Sampler, Coords) textureLod (Tex, _ToVec(Coords), 0.0)</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <span class="preprocessor"># define Sample_3(Tex, Sampler, Coords, Offset) textureLodOffset(Tex, _ToVec(Coords), 0.0, Offset)</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> <span class="preprocessor"># define SampleBias_3(Tex, Sampler, Coords, Bias) textureLod (Tex, _ToVec(Coords), 0.0 + _ToFloat(Bias))</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> <span class="preprocessor"># define SampleBias_4(Tex, Sampler, Coords, Bias, Offset) textureLodOffset(Tex, _ToVec(Coords), 0.0 + _ToFloat(Bias), Offset)</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> <span class="preprocessor"># define SampleCmpTex1D_3 SampleCmpLevel0Tex1D_3</span></div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <span class="preprocessor"># define SampleCmpTex1DArr_3 SampleCmpLevel0Tex1DArr_3</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="preprocessor"># define SampleCmpTex2D_3 SampleCmpLevel0Tex2D_3</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> <span class="preprocessor"># define SampleCmpTex2DArr_3 SampleCmpLevel0Tex2DArr_3</span></div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> <span class="preprocessor"># define SampleCmpTexCube_3 SampleCmpLevel0TexCube_3</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="preprocessor"># define SampleCmpTexCubeArr_3 SampleCmpLevel0TexCubeArr_3</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  </div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="preprocessor"># define SampleCmpTex1D_4 SampleCmpLevel0Tex1D_4</span></div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> <span class="preprocessor"># define SampleCmpTex1DArr_4 SampleCmpLevel0Tex1DArr_4</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> <span class="preprocessor"># define SampleCmpTex2D_4 SampleCmpLevel0Tex2D_4</span></div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="preprocessor"># define SampleCmpTex2DArr_4 SampleCmpLevel0Tex2DArr_4</span></div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> </div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> <span class="comment">// https://www.opengl.org/sdk/docs/man/html/textureLod.xhtml</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="preprocessor">#define SampleLevel_3(Tex, Sampler, Coords, Level) textureLod (Tex, _ToVec(Coords), _ToFloat(Level))</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> <span class="preprocessor">#define SampleLevel_4(Tex, Sampler, Coords, Level, Offset) textureLodOffset(Tex, _ToVec(Coords), _ToFloat(Level), Offset)</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> </div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> <span class="comment">// https://www.opengl.org/sdk/docs/man/html/textureGrad.xhtml</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> <span class="preprocessor">#define SampleGrad_4(Tex, Sampler, Coords, DDX, DDY) textureGrad (Tex, _ToVec(Coords), _ToVec(DDX), _ToVec(DDY))</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="preprocessor">#define SampleGrad_5(Tex, Sampler, Coords, DDX, DDY, Offset) textureGradOffset(Tex, _ToVec(Coords), _ToVec(DDX), _ToVec(DDY), Offset)</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> </div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> </div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> <span class="comment">// texelFetch performs a lookup of a single texel from texture coordinate P in the texture </span></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> <span class="comment">// bound to sampler. The array layer is specified in the last component of P for array forms. </span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="comment">// The lod parameter (if present) specifies the level-of-detail from which the texel will be fetched. </span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> <span class="comment">// The sample specifies which sample within the texel will be returned when reading from a multi-sample texure.</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="preprocessor">#define LoadTex1D_1(Tex, Location) texelFetch (Tex, _ToInt((Location).x), _ToInt((Location).y))</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <span class="preprocessor">#define LoadTex1D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToInt((Location).x), _ToInt((Location).y), int(Offset))</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="preprocessor">#define LoadTex1DArr_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xy), _ToInt((Location).z) )</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> <span class="preprocessor">#define LoadTex1DArr_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xy), _ToInt((Location).z), int(Offset))</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="preprocessor">#define LoadTex2D_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xy), _ToInt((Location).z))</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <span class="preprocessor">#define LoadTex2D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xy), _ToInt((Location).z), ivec2( (Offset).xy) )</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="preprocessor">#define LoadTex2DArr_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xyz), _ToInt((Location).w) )</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="preprocessor">#define LoadTex2DArr_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xyz), _ToInt((Location).w), ivec2( (Offset).xy))</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <span class="preprocessor">#define LoadTex3D_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xyz), _ToInt((Location).w))</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="preprocessor">#define LoadTex3D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xyz), _ToInt((Location).w), ivec3( (Offset).xyz))</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="preprocessor">#define LoadTex2DMS_2(Tex, Location, Sample) texelFetch(Tex, _ToIvec( (Location).xy), _ToInt(Sample))</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="preprocessor">#define LoadTex2DMS_3(Tex, Location, Sample, Offset)texelFetch(Tex, _ToIvec2( (Location).x + (Offset).x, (Location).y + (Offset).y), int(Sample) ) // No texelFetchOffset for texture2DMS</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> <span class="preprocessor">#define LoadTex2DMSArr_2(Tex, Location, Sample) texelFetch(Tex, _ToIvec( (Location).xyz), _ToInt(Sample))</span></div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> <span class="preprocessor">#define LoadTex2DMSArr_3(Tex, Location, Sample, Offset)texelFetch(Tex, _ToIvec3( (Location).x + (Offset).x, (Location).y + (Offset).y, (Location).z), int(Sample)) // No texelFetchOffset for texture2DMSArray</span></div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> </div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> <span class="comment">//https://www.opengl.org/sdk/docs/man/html/imageLoad.xhtml</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> <span class="preprocessor">#define LoadRWTex1D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).x) )</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> <span class="preprocessor">#define LoadRWTex1DArr_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xy) )</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> <span class="preprocessor">#define LoadRWTex2D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xy) )</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> <span class="preprocessor">#define LoadRWTex2DArr_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xyz) )</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> <span class="preprocessor">#define LoadRWTex3D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xyz) )</span></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> </div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> <span class="preprocessor">#define Gather_2(Tex, Sampler, Location) textureGather (Tex, _ToVec(Location))</span></div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> <span class="preprocessor">#define Gather_3(Tex, Sampler, Location, Offset)textureGatherOffset(Tex, _ToVec(Location), Offset)</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> </div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="preprocessor">#define GatherCmp_3(Tex, Sampler, Location, CompareVal) textureGather (Tex, _ToVec(Location), _ToFloat(CompareVal))</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="preprocessor">#define GatherCmp_4(Tex, Sampler, Location, CompareVal, Offset)textureGatherOffset(Tex, _ToVec(Location), _ToFloat(CompareVal), Offset)</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> </div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="comment">// Atomic operations</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="preprocessor">#define InterlockedAddSharedVar_2(dest, value) atomicAdd(dest, value)</span></div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <span class="preprocessor">#define InterlockedAddSharedVar_3(dest, value, orig_val) orig_val = atomicAdd(dest, value)</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> <span class="preprocessor">#define InterlockedAddImage_2(img, coords, value) imageAtomicAdd(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="preprocessor">#define InterlockedAddImage_3(img, coords, value, orig_val)orig_val = imageAtomicAdd(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> </div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span> <span class="preprocessor">#define InterlockedAndSharedVar_2(dest, value) atomicAnd(dest, value)</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> <span class="preprocessor">#define InterlockedAndSharedVar_3(dest, value, orig_val) orig_val = atomicAnd(dest, value)</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <span class="preprocessor">#define InterlockedAndImage_2(img, coords, value) imageAtomicAnd(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> <span class="preprocessor">#define InterlockedAndImage_3(img, coords, value, orig_val)orig_val = imageAtomicAnd(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> </div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> <span class="preprocessor">#define InterlockedMaxSharedVar_2(dest, value) atomicMax(dest, value)</span></div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> <span class="preprocessor">#define InterlockedMaxSharedVar_3(dest, value, orig_val) orig_val = atomicMax(dest, value)</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span> <span class="preprocessor">#define InterlockedMaxImage_2(img, coords, value) imageAtomicMax(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="preprocessor">#define InterlockedMaxImage_3(img, coords, value, orig_val)orig_val = imageAtomicMax(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="preprocessor">#define InterlockedMinSharedVar_2(dest, value) atomicMin(dest, value)</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="preprocessor">#define InterlockedMinSharedVar_3(dest, value, orig_val) orig_val = atomicMin(dest, value)</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span> <span class="preprocessor">#define InterlockedMinImage_2(img, coords, value) imageAtomicMin(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="preprocessor">#define InterlockedMinImage_3(img, coords, value, orig_val)orig_val = imageAtomicMin(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> <span class="preprocessor">#define InterlockedOrSharedVar_2(dest, value) atomicOr(dest, value)</span></div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="preprocessor">#define InterlockedOrSharedVar_3(dest, value, orig_val) orig_val = atomicOr(dest, value)</span></div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="preprocessor">#define InterlockedOrImage_2(img, coords, value) imageAtomicOr(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="preprocessor">#define InterlockedOrImage_3(img, coords, value, orig_val)orig_val = imageAtomicOr(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> </div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span> <span class="preprocessor">#define InterlockedXorSharedVar_2(dest, value) atomicXor(dest, value)</span></div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> <span class="preprocessor">#define InterlockedXorSharedVar_3(dest, value, orig_val) orig_val = atomicXor(dest, value)</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="preprocessor">#define InterlockedXorImage_2(img, coords, value) imageAtomicXor(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> <span class="preprocessor">#define InterlockedXorImage_3(img, coords, value, orig_val)orig_val = imageAtomicXor(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> <span class="comment">// There is actually no InterlockedExchange() with 2 arguments</span></div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> <span class="preprocessor">#define InterlockedExchangeSharedVar_2(dest, value) atomicExchange(dest, value)</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span> <span class="preprocessor">#define InterlockedExchangeSharedVar_3(dest, value, orig_val) orig_val = atomicExchange(dest, value)</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> <span class="preprocessor">#define InterlockedExchangeImage_2(img, coords, value) imageAtomicExchange(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> <span class="preprocessor">#define InterlockedExchangeImage_3(img, coords, value, orig_val)orig_val = imageAtomicExchange(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="comment">//uint imageAtomicCompSwap( image img, IVec P, nint compare, nint data);</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span> <span class="comment">//void InterlockedCompareExchange( in R dest, in T compare_value, in T value, out T original_value);</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="preprocessor">#define InterlockedCompareExchangeSharedVar_4(dest, cmp_val, value, orig_val) orig_val = atomicCompSwap(dest, cmp_val, value)</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> <span class="preprocessor">#define InterlockedCompareExchangeImage_4(img, coords, cmp_val, value, orig_val) orig_val = imageAtomicCompSwap(img, _ToIvec(coords), cmp_val, value)</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> </div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> <span class="preprocessor">#define InterlockedCompareStoreSharedVar_3(dest, cmp_val, value) atomicCompSwap(dest, cmp_val, value)</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="preprocessor">#define InterlockedCompareStoreImage_3(img, coords, cmp_val, value)imageAtomicCompSwap(img, _ToIvec(coords), cmp_val, value)</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> </div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="comment">// Swizzling macros</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="preprocessor">#define _SWIZZLE0</span></div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> <span class="preprocessor">#define _SWIZZLE1 .x</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> <span class="preprocessor">#define _SWIZZLE2 .xy</span></div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> <span class="preprocessor">#define _SWIZZLE3 .xyz</span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> <span class="preprocessor">#define _SWIZZLE4 .xyzw</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> </div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> <span class="comment">// Helper functions</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> </div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> float2 NormalizedDeviceXYToTexUV( float2 f2ProjSpaceXY )</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">return</span> float2(0.5,0.5) + float2(0.5,0.5) * f2ProjSpaceXY.xy;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> }</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> <span class="keywordtype">float</span> NormalizedDeviceZToDepth(<span class="keywordtype">float</span> fNDC_Z)</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keywordflow">return</span> fNDC_Z * 0.5 + 0.5; <span class="comment">// [-1, +1] -> [0, 1]</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> }</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> </div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> <span class="keywordtype">float</span> DepthToNormalizedDeviceZ(<span class="keywordtype">float</span> fDepth)</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> {</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordflow">return</span> fDepth * 2.0 - 1.0; <span class="comment">// [0, 1] -> [-1, +1]</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> }</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <span class="preprocessor">#define F3NDC_XYZ_TO_UVD_SCALE float3(0.5, 0.5, 0.5)</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> </div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> <span class="preprocessor">#define NDC_MIN_Z -1.0 // Minimal z in the normalized device space</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> </div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> <span class="preprocessor">#define MATRIX_ELEMENT(mat, row, col) mat[col][row]</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> </div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="comment">// ---------------------------------- Vertex shader ----------------------------------</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="preprocessor">#ifdef VERTEX_SHADER</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> </div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="preprocessor">#ifndef GL_ES</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> out gl_PerVertex</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> {</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  vec4 gl_Position;</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> };</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> </div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> <span class="preprocessor">#define _GET_GL_VERTEX_ID(VertexId)_TypeConvertStore(VertexId, gl_VertexID)</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="preprocessor">#define _GET_GL_INSTANCE_ID(InstId)_TypeConvertStore(InstId, gl_InstanceID)</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="preprocessor">#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)</span></div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> </div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> </div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> </div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <span class="comment">// --------------------------------- Fragment shader ---------------------------------</span></div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <span class="preprocessor">#ifdef FRAGMENT_SHADER</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> </div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="preprocessor">#define _GET_GL_FRAG_COORD(FragCoord)_ResizeVector(FragCoord, gl_FragCoord)</span></div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span> <span class="preprocessor">#define _SET_GL_FRAG_DEPTH(Depth)_TypeConvertStore(gl_FragDepth, Depth)</span></div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> </div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> </div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="comment">// --------------------------------- Geometry shader ---------------------------------</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="preprocessor">#ifdef GEOMETRY_SHADER</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="comment">// ARB_separate_shader_objects requires built-in block gl_PerVertex to be redeclared before accessing its members</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> <span class="comment">// declaring gl_PointSize and gl_ClipDistance causes compilation error on Android</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> in gl_PerVertex</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  vec4 gl_Position;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> } gl_in[];</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> out gl_PerVertex</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  vec4 gl_Position;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> };</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> </div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> <span class="preprocessor">#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="preprocessor">#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_in[i].gl_PrimitiveIDIn)</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="preprocessor">#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> <span class="preprocessor">#define _SET_GL_LAYER(Layer)_TypeConvertStore(gl_Layer,Layer)</span></div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> </div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="comment">// --------------------------- Tessellation control shader ---------------------------</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> <span class="preprocessor">#ifdef TESS_CONTROL_SHADER</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> in gl_PerVertex</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> {</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  vec4 gl_Position;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> } gl_in[gl_MaxPatchVertices];</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> </div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> out gl_PerVertex</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> {</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  vec4 gl_Position;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> } gl_out[];</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> </div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> <span class="preprocessor">#define _GET_GL_INVOCATION_ID(InvocId)_TypeConvertStore(InvocId, gl_InvocationID)</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="preprocessor">#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_PrimitiveID)</span></div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <span class="preprocessor">#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> </div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> <span class="preprocessor">#define _SET_GL_POSITION(Pos)gl_out[gl_InvocationID].gl_Position=_ExpandVector(Pos)</span></div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <span class="preprocessor">#define _SET_GL_TESS_LEVEL_OUTER(OuterLevel)for(int i=0; i < OuterLevel.length(); ++i)gl_TessLevelOuter[i] = OuterLevel[i]</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> <span class="keywordtype">void</span> _SetGLTessLevelInner(<span class="keywordtype">float</span> InnerLevel[2])</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> {</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  gl_TessLevelInner[0] = InnerLevel[0];</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  gl_TessLevelInner[1] = InnerLevel[1];</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> }</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="keywordtype">void</span> _SetGLTessLevelInner(<span class="keywordtype">float</span> InnerLevel)</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> {</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  gl_TessLevelInner[0] = InnerLevel;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> }</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> </div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> </div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> </div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="comment">// --------------------------- Tessellation evaluation shader ---------------------------</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> <span class="preprocessor">#ifdef TESS_EVALUATION_SHADER</span></div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> in gl_PerVertex</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> {</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  vec4 gl_Position;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> } gl_in[gl_MaxPatchVertices];</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> out gl_PerVertex</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> {</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  vec4 gl_Position;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> };</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> </div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="preprocessor">#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="preprocessor">#define _GET_GL_TESS_LEVEL_OUTER(OuterLevel)for(int i=0; i < OuterLevel.length(); ++i)OuterLevel[i] = gl_TessLevelOuter[i]</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="keywordtype">void</span> _GetGLTessLevelInner(out <span class="keywordtype">float</span> InnerLevel[2])</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> {</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  InnerLevel[0] = gl_TessLevelInner[0];</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  InnerLevel[1] = gl_TessLevelInner[1];</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> }</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <span class="keywordtype">void</span> _GetGLTessLevelInner(out <span class="keywordtype">float</span> InnerLevel)</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  InnerLevel = gl_TessLevelInner[0];</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> }</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> </div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> <span class="preprocessor">#define _GET_GL_TESS_COORD(TessCoord)_ResizeVector(TessCoord, gl_TessCoord)</span></div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="preprocessor">#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_PrimitiveID)</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="preprocessor">#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> </div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> <span class="comment">// ---------------------------------- Compute shader ----------------------------------</span></div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="preprocessor">#ifdef COMPUTE_SHADER</span></div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> </div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <span class="preprocessor">#define _GET_GL_GLOBAL_INVOCATION_ID(Type, InvocId)InvocId=Type(gl_GlobalInvocationID)</span></div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="preprocessor">#define _GET_GL_WORK_GROUP_ID(Type, GroupId)GroupId=Type(gl_WorkGroupID)</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> <span class="preprocessor">#define _GET_GL_LOCAL_INVOCATION_ID(Type, InvocId)InvocId=Type(gl_LocalInvocationID)</span></div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="preprocessor">#define _GET_GL_LOCAL_INVOCATION_INDEX(Type, InvocInd)InvocInd=Type(gl_LocalInvocationIndex)</span></div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> </div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> </div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="preprocessor">#endif // _GLSL_DEFINITIONS_</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifndef _GLSL_DEFINITIONS_</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define _GLSL_DEFINITIONS_</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#define GLSL</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define float4 vec4</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define float3 vec3</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define float2 vec2</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define int4 ivec4</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define int3 ivec3</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#define int2 ivec2</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define uint4 uvec4</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#define uint3 uvec3</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#define uint2 uvec2</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define bool4 bvec4</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define bool3 bvec3</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define bool2 bvec2</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// OpenGL matrices in GLSL are always as column-major </span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// (this is not related to how they are stored)</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#define float2x2 mat2x2</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#define float2x3 mat3x2</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#define float2x4 mat4x2</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define float3x2 mat2x3</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#define float3x3 mat3x3</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#define float3x4 mat4x3</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define float4x2 mat2x4</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define float4x3 mat3x4</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#define float4x4 mat4x4</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#define matrix mat4x4</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#define static</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#define SamplerState int</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#define SamplerComparisonState int</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// https://www.opengl.org/wiki/Memory_Model#Incoherent_memory_access</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// Shared variable access uses the rules for incoherent memory access. </span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// This means that the user must perform certain synchronization in </span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// order to ensure that shared variables are visible.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// At the same time, shared variables are all implicitly declared coherent, </span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// so one don't need to (and can't) use that qualifier.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#define groupshared shared</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#ifdef FRAGMENT_SHADER</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"># define ddx dFdx</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"># define ddy dFdy</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor"># define ddx(x) (x) // GLSL compiler fails when it sees derivatives </span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"># define ddy(x) (x) // in any shader but fragment</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#define ddx_coarse ddx</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#define ddy_coarse ddy</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#define ddx_fine ddx</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#define ddy_fine ddy</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#define mul(a, b) ((a)*(b))</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#define frac fract</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#define atan2 atan</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#define rsqrt inversesqrt</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#define fmod mod</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#define lerp mix</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#define dst distance</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#define countbits bitCount</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#define firstbithigh findMSB</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#define firstbitlow findLSB</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#define reversebits bitfieldReverse</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">float</span> rcp( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> 1.0 / x; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> vec2 rcp( vec2 x ){ <span class="keywordflow">return</span> vec2(1.0,1.0) / x; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> vec3 rcp( vec3 x ){ <span class="keywordflow">return</span> vec3(1.0,1.0,1.0) / x; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> vec4 rcp( vec4 x ){ <span class="keywordflow">return</span> vec4(1.0,1.0,1.0,1.0) / x; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">float</span> saturate( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> clamp( x, 0.0, 1.0 ); }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> vec2 saturate( vec2 x ){ <span class="keywordflow">return</span> clamp( x, vec2(0.0, 0.0), vec2(1.0, 1.0) ); }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> vec3 saturate( vec3 x ){ <span class="keywordflow">return</span> clamp( x, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0) ); }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> vec4 saturate( vec4 x ){ <span class="keywordflow">return</span> clamp( x, vec4(0.0, 0.0, 0.0, 0.0), vec4(1.0, 1.0, 1.0, 1.0) ); }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">void</span> sincos( <span class="keywordtype">float</span> x, out <span class="keywordtype">float</span> s, out <span class="keywordtype">float</span> c ){ s = sin( x ); c = cos( x ); }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">void</span> sincos( vec2 x, out vec2 s, out vec2 c ){ s = sin( x ); c = cos( x ); }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keywordtype">void</span> sincos( vec3 x, out vec3 s, out vec3 c ){ s = sin( x ); c = cos( x ); }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">void</span> sincos( vec4 x, out vec4 s, out vec4 c ){ s = sin( x ); c = cos( x ); }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// Bit conversion operations</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keywordtype">float</span> asfloat( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> vec2 asfloat( vec2 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> vec3 asfloat( vec3 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> vec4 asfloat( vec4 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keywordtype">float</span> asfloat( <span class="keywordtype">int</span> x ){ <span class="keywordflow">return</span> intBitsToFloat(x); }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> vec2 asfloat( ivec2 x ){ <span class="keywordflow">return</span> intBitsToFloat(x); }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> vec3 asfloat( ivec3 x ){ <span class="keywordflow">return</span> intBitsToFloat(x); }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> vec4 asfloat( ivec4 x ){ <span class="keywordflow">return</span> intBitsToFloat(x); }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">float</span> asfloat( uint x ){ <span class="keywordflow">return</span> uintBitsToFloat(x); }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> vec2 asfloat( uvec2 x ){ <span class="keywordflow">return</span> uintBitsToFloat(x); }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> vec3 asfloat( uvec3 x ){ <span class="keywordflow">return</span> uintBitsToFloat(x); }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> vec4 asfloat( uvec4 x ){ <span class="keywordflow">return</span> uintBitsToFloat(x); }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">int</span> asint( <span class="keywordtype">int</span> x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> ivec2 asint( ivec2 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> ivec3 asint( ivec3 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> ivec4 asint( ivec4 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="keywordtype">int</span> asint( uint x ){ <span class="keywordflow">return</span> int(x); }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> ivec2 asint( uvec2 x ){ <span class="keywordflow">return</span> ivec2(x); }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> ivec3 asint( uvec3 x ){ <span class="keywordflow">return</span> ivec3(x); }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> ivec4 asint( uvec4 x ){ <span class="keywordflow">return</span> ivec4(x); }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="keywordtype">int</span> asint( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> floatBitsToInt(x); }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> ivec2 asint( vec2 x ){ <span class="keywordflow">return</span> floatBitsToInt(x); }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> ivec3 asint( vec3 x ){ <span class="keywordflow">return</span> floatBitsToInt(x); }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> ivec4 asint( vec4 x ){ <span class="keywordflow">return</span> floatBitsToInt(x); }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> uint asuint( uint x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> uvec2 asuint( uvec2 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> uvec3 asuint( uvec3 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> uvec4 asuint( uvec4 x ){ <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> uint asuint( <span class="keywordtype">int</span> x ){ <span class="keywordflow">return</span> uint(x); }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> uvec2 asuint( ivec2 x ){ <span class="keywordflow">return</span> uvec2(x); }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> uvec3 asuint( ivec3 x ){ <span class="keywordflow">return</span> uvec3(x); }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> uvec4 asuint( ivec4 x ){ <span class="keywordflow">return</span> uvec4(x); }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> uint asuint( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> floatBitsToUint(x); }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> uvec2 asuint( vec2 x ){ <span class="keywordflow">return</span> floatBitsToUint(x); }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> uvec3 asuint( vec3 x ){ <span class="keywordflow">return</span> floatBitsToUint(x); }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> uvec4 asuint( vec4 x ){ <span class="keywordflow">return</span> floatBitsToUint(x); }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">float</span> f16tof32( uint u1 )</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> { </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> unpackHalf2x16( u1 ).x; </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> vec2 f16tof32( uvec2 u2 )</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> { </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  uint u2PackedHalf = (u2.x & 0x0ffffu) | ((u2.y & 0x0ffffu) << 16u);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> unpackHalf2x16( u2PackedHalf ); </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> vec3 f16tof32( uvec3 u3 )</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> { </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> vec3( f16tof32( u3.xy ), f16tof32( u3.z ) );</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> vec4 f16tof32( uvec4 u4 )</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> { </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> vec4( f16tof32( u4.xy ), f16tof32( u4.zw ) );</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keywordtype">float</span> f16tof32( <span class="keywordtype">int</span> i1 ){ <span class="keywordflow">return</span> f16tof32( uint ( i1 ) ); }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> vec2 f16tof32( ivec2 i2 ){ <span class="keywordflow">return</span> f16tof32( uvec2( i2 ) ); }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> vec3 f16tof32( ivec3 i3 ){ <span class="keywordflow">return</span> f16tof32( uvec3( i3 ) ); }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> vec4 f16tof32( ivec4 i4 ){ <span class="keywordflow">return</span> f16tof32( uvec4( i4 ) ); }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> uint f32tof16( <span class="keywordtype">float</span> f )</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> { </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> packHalf2x16( vec2( f, 0.0 ) ) & 0x0ffffu; </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> uvec2 f32tof16( vec2 f2 )</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> { </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  uint u2PackedHalf = packHalf2x16( f2 );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> uvec2( u2PackedHalf & 0x0ffffu, u2PackedHalf >> 16u );</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> uvec3 f32tof16( vec3 f3 )</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> uvec3( f32tof16( f3.xy ), f32tof16( f3.z ) );</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> uvec4 f32tof16( vec4 f4 )</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> uvec4( f32tof16( f4.xy ), f32tof16( f4.zw ) );</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor">#ifndef GL_ES // double is not supported on GLES</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keywordtype">double</span> asdouble(uint lowbits, uint highbits)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> packDouble2x32( uvec2( lowbits, highbits ) );</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment">// Floating point functions</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keywordtype">bool</span> isfinite( <span class="keywordtype">float</span> x )</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> !isinf( x ) && !isnan( x );</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> bool2 isfinite( vec2 f2 )</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> bool2( isfinite( f2.x ), isfinite( f2.y ) );</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> bool3 isfinite( vec3 f3 )</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> bool3( isfinite( f3.xy ), isfinite( f3.z ) );</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> bool4 isfinite( vec4 f4 )</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> bool4( isfinite( f4.xyz ), isfinite( f4.w ) );</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor">#ifndef GL_ES</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordtype">float</span> noise( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> noise1( x ); }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  vec2 noise( vec2 x ){ <span class="keywordflow">return</span> noise2( x ); }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  vec3 noise( vec3 x ){ <span class="keywordflow">return</span> noise3( x ); }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  vec4 noise( vec4 x ){ <span class="keywordflow">return</span> noise4( x ); }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordtype">float</span> noise( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> 0.0; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  vec2 noise( vec2 x ){ <span class="keywordflow">return</span> vec2(0.0, 0.0); }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  vec3 noise( vec3 x ){ <span class="keywordflow">return</span> vec3(0.0, 0.0, 0.0); }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  vec4 noise( vec4 x ){ <span class="keywordflow">return</span> vec4(0.0, 0.0, 0.0, 0.0); }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="keywordtype">float</span> log10( <span class="keywordtype">float</span> x )</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> log( x ) / log( 10.0 );</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> vec2 log10( vec2 x )</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordtype">float</span> _lg10 = log( 10.0 );</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> log( x ) / vec2(_lg10, _lg10);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> vec3 log10( vec3 x )</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">float</span> _lg10 = log( 10.0 );</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">return</span> log( x ) / vec3(_lg10, _lg10, _lg10);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> vec4 log10( vec4 x )</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">float</span> _lg10 = log( 10.0 );</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> log( x ) / vec4(_lg10, _lg10, _lg10, _lg10);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#ifdef GL_ES</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="preprocessor"># define mad(a,b,c) ((a)*(b)+(c))</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor"># define mad fma</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="comment">// Relational and logical operators</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor">#define Less lessThan</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor">#define LessEqual lessThanEqual</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor">#define Greater greaterThan</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor">#define GreaterEqual greaterThanEqual</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor">#define Equal equal</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="preprocessor">#define NotEqual notEqual</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="preprocessor">#define Not not</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> bool4 And(bool4 L, bool4 R)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">return</span> bool4(L.x && R.x,</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  L.y && R.y,</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  L.z && R.z,</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  L.w && R.w);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> bool3 And(bool3 L, bool3 R)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> bool3(L.x && R.x,</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  L.y && R.y,</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  L.z && R.z);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> bool2 And(bool2 L, bool2 R)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> bool2(L.x && R.x,</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  L.y && R.y);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="keywordtype">bool</span> And(<span class="keywordtype">bool</span> L, <span class="keywordtype">bool</span> R)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">return</span> (L && R);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> bool4 Or(bool4 L, bool4 R)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> bool4(L.x || R.x,</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  L.y || R.y,</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  L.z || R.z,</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  L.w || R.w);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> bool3 Or(bool3 L, bool3 R)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">return</span> bool3(L.x || R.x,</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  L.y || R.y,</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  L.z || R.z);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> bool2 Or(bool2 L, bool2 R)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">return</span> bool2(L.x || R.x,</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  L.y || R.y);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keywordtype">bool</span> Or(<span class="keywordtype">bool</span> L, <span class="keywordtype">bool</span> R)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">return</span> (L || R);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> float4 BoolToFloat( bool4 b4 )</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">return</span> float4(b4.x ? 1.0 : 0.0,</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  b4.y ? 1.0 : 0.0,</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  b4.z ? 1.0 : 0.0,</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  b4.w ? 1.0 : 0.0);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> float3 BoolToFloat( bool3 b3 )</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> float3(b3.x ? 1.0 : 0.0,</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  b3.y ? 1.0 : 0.0,</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  b3.z ? 1.0 : 0.0);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> float2 BoolToFloat( bool2 b2 )</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> float2(b2.x ? 1.0 : 0.0,</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  b2.y ? 1.0 : 0.0);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="keywordtype">float</span> BoolToFloat( <span class="keywordtype">bool</span> b )</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">return</span> b ? 1.0 : 0.0;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="comment">// Synchronization functions</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="preprocessor">#ifdef COMPUTE_SHADER</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="comment">// https://www.opengl.org/wiki/Memory_Model#Incoherent_memory_access</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="comment">// MSDN: GroupMemoryBarrier() blocks execution of all threads </span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="comment">// in a group until all group SHARED accesses have been completed.</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="keywordtype">void</span> GroupMemoryBarrier()</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="comment">// OpenGL.org: groupMemoryBarrier() waits on the completion of all memory accesses </span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="comment">// performed by an invocation of a compute shader relative to the same access performed </span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="comment">// by other invocations in the same work group and then returns with no other effect.</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="comment">// groupMemoryBarrier() acts like memoryBarrier(), ordering memory writes for all kinds </span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="comment">// of variables, but it only orders read/writes for the current work group.</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  groupMemoryBarrier();</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">// OpenGL.org: memoryBarrierShared() waits on the completion of </span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="comment">// all memory accesses resulting from the use of SHARED variables</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="comment">// and then returns with no other effect. </span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  memoryBarrierShared();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="comment">// MSDN: GroupMemoryBarrierWithGroupSync() blocks execution of all </span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="comment">// threads in a group until all memory accesses have been completed </span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="comment">// and all threads in the group have reached this call.</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="keywordtype">void</span> GroupMemoryBarrierWithGroupSync()</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="comment">// Issue memory barrier first!</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  GroupMemoryBarrier();</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  barrier();</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="comment">// MSDN: DeviceMemoryBarrier() blocks execution of all threads </span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="comment">// in a group until all device memory accesses have been completed.</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="keywordtype">void</span> DeviceMemoryBarrier()</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="comment">// Call all memory barriers except for shared memory</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="comment">// Do we need to call groupMemoryBarrier() ????? </span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// OpenGL.org: memoryBarrierBuffer() waits on the completion of </span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="comment">// all memory accesses resulting from the use of BUFFER variables </span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">// and then returns with no other effect</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  memoryBarrierBuffer();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="comment">// OpenGL.org: memoryBarrierImage() waits on the completion of all </span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="comment">// memory accesses resulting from the use of IMAGE variables and then </span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="comment">// returns with no other effect. </span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  memoryBarrierImage();</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="comment">// OpenGL.org: memoryBarrierAtomicCounter() waits on the completion of </span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="comment">// all accesses resulting from the use of ATOMIC COUNTERS and then returns </span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="comment">// with no other effect. </span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  memoryBarrierAtomicCounter();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="comment">// MSDN: DeviceMemoryBarrierWithGroupSync() blocks execution of </span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="comment">// all threads in a group until all device memory accesses have </span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="comment">// been completed and all threads in the group have reached this call.</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="keywordtype">void</span> DeviceMemoryBarrierWithGroupSync()</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  DeviceMemoryBarrier();</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  barrier();</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="comment">// MSDN: AllMemoryBarrier() blocks execution of all threads in a </span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="comment">// group until all memory accesses have been completed.</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="keywordtype">void</span> AllMemoryBarrier()</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="comment">// OpenGL.org: memoryBarrier() waits on the completion of ALL </span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// memory accesses resulting from the use of IMAGE variables or </span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">// ATOMIC COUNTERS and then returns with no other effect.</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  memoryBarrier();</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="comment">// NOTE: nothing is said about buffer memory and shared memory,</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// so call memoryBarrierBuffer() and memoryBarrierShared() for safety</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">// OpenGL.org: memoryBarrierBuffer() waits on the completion of </span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="comment">// all memory accesses resulting from the use of BUFFER variables </span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="comment">// and then returns with no other effect</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  memoryBarrierBuffer();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">// OpenGL.org: memoryBarrierShared() waits on the completion of </span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="comment">// all memory accesses resulting from the use of SHARED variables</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="comment">// and then returns with no other effect. </span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  memoryBarrierShared();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="comment">// Call all memory barrier functions. They should have no effect</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="comment">// if everything is synchronized.</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="comment">// OpenGL.org: memoryBarrierImage() waits on the completion of all </span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// memory accesses resulting from the use of IMAGE variables and then </span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="comment">// returns with no other effect. </span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  memoryBarrierImage();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// OpenGL.org: memoryBarrierAtomicCounter() waits on the completion of </span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// all accesses resulting from the use of ATOMIC COUNTERS and then returns </span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">// with no other effect. </span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  memoryBarrierAtomicCounter();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="comment">// groupMemoryBarrier waits on the completion of all memory accesses performed </span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="comment">// by an invocation of a compute shader relative to the same access performed by </span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// other invocations in the same work group and then returns with no other effect.</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  groupMemoryBarrier();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="comment">// MSDN: AllMemoryBarrierWithGroupSync() blocks execution of all </span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="comment">// threads in a group until all memory accesses have been completed </span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="comment">// and all threads in the group have reached this call.</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="keywordtype">void</span> AllMemoryBarrierWithGroupSync()</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  AllMemoryBarrier();</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  barrier();</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="keywordtype">void</span> AllMemoryBarrier(){}</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="keywordtype">void</span> AllMemoryBarrierWithGroupSync(){}</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="keywordtype">void</span> DeviceMemoryBarrier(){}</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="keywordtype">void</span> DeviceMemoryBarrierWithGroupSync(){}</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="keywordtype">void</span> GroupMemoryBarrier(){}</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="keywordtype">void</span> GroupMemoryBarrierWithGroupSync(){}</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="comment">// Type conversion functions</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> vec4 _ExpandVector( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> vec4( x, x, x, x ); }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> vec4 _ExpandVector( vec2 f2 ){ <span class="keywordflow">return</span> vec4( f2.x, f2.y, 0.0, 0.0 ); }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> vec4 _ExpandVector( vec3 f3 ){ <span class="keywordflow">return</span> vec4( f3.x, f3.y, f3.z, 0.0 ); }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> vec4 _ExpandVector( vec4 f4 ){ <span class="keywordflow">return</span> vec4( f4.x, f4.y, f4.z, f4.w ); }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> ivec4 _ExpandVector( <span class="keywordtype">int</span> x ){ <span class="keywordflow">return</span> ivec4( x, x, x, x ); }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> ivec4 _ExpandVector( ivec2 i2 ){ <span class="keywordflow">return</span> ivec4( i2.x, i2.y, 0, 0 ); }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> ivec4 _ExpandVector( ivec3 i3 ){ <span class="keywordflow">return</span> ivec4( i3.x, i3.y, i3.z, 0 ); }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> ivec4 _ExpandVector( ivec4 i4 ){ <span class="keywordflow">return</span> ivec4( i4.x, i4.y, i4.z, i4.w ); }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> uvec4 _ExpandVector( uint x ){ <span class="keywordflow">return</span> uvec4( x, x, x, x ); }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> uvec4 _ExpandVector( uvec2 u2 ){ <span class="keywordflow">return</span> uvec4( u2.x, u2.y, 0u, 0u ); }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> uvec4 _ExpandVector( uvec3 u3 ){ <span class="keywordflow">return</span> uvec4( u3.x, u3.y, u3.z, 0u ); }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> uvec4 _ExpandVector( uvec4 u4 ){ <span class="keywordflow">return</span> uvec4( u4.x, u4.y, u4.z, u4.w ); }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> bvec4 _ExpandVector( <span class="keywordtype">bool</span> x ){ <span class="keywordflow">return</span> bvec4( x, x, x, x ); }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> bvec4 _ExpandVector( bvec2 b2 ){ <span class="keywordflow">return</span> bvec4( b2.x, b2.y, <span class="keyword">false</span>, <span class="keyword">false</span> ); }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> bvec4 _ExpandVector( bvec3 b3 ){ <span class="keywordflow">return</span> bvec4( b3.x, b3.y, b3.z, <span class="keyword">false</span> ); }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> bvec4 _ExpandVector( bvec4 b4 ){ <span class="keywordflow">return</span> bvec4( b4.x, b4.y, b4.z, b4.w ); }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="keywordtype">void</span> _ResizeVector(out vec4 outVec4, in vec4 inVec4){outVec4 = inVec4;}</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="keywordtype">void</span> _ResizeVector(out vec3 outVec3, in vec4 inVec4){outVec3 = inVec4.xyz;}</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="keywordtype">void</span> _ResizeVector(out vec2 outVec2, in vec4 inVec4){outVec2 = inVec4.xy;}</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="keywordtype">void</span> _ResizeVector(out <span class="keywordtype">float</span> outFlt, in vec4 inVec4){outFlt = inVec4.x;}</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="keywordtype">void</span> _ResizeVector(out vec4 outVec4, in vec3 inVec3){outVec4 = vec4(inVec3, 0.0);}</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="keywordtype">void</span> _ResizeVector(out vec3 outVec3, in vec3 inVec3){outVec3 = inVec3;}</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="keywordtype">void</span> _ResizeVector(out vec2 outVec2, in vec3 inVec3){outVec2 = inVec3.xy;}</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="keywordtype">void</span> _ResizeVector(out <span class="keywordtype">float</span> outFlt, in vec3 inVec3){outFlt = inVec3.x;}</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="keywordtype">void</span> _ResizeVector(out vec4 outVec4, in vec2 inVec2){outVec4 = vec4(inVec2, 0.0, 0.0);}</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="keywordtype">void</span> _ResizeVector(out vec3 outVec3, in vec2 inVec2){outVec3 = vec3(inVec2, 0.0);}</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="keywordtype">void</span> _ResizeVector(out vec2 outVec2, in vec2 inVec2){outVec2 = inVec2;}</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="keywordtype">void</span> _ResizeVector(out <span class="keywordtype">float</span> outFlt, in vec2 inVec2){outFlt = inVec2.x;}</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="keywordtype">void</span> _ResizeVector(out vec4 outVec4, in <span class="keywordtype">float</span> v){outVec4 = vec4(v, 0.0, 0.0, 0.0);}</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="keywordtype">void</span> _ResizeVector(out vec3 outVec3, in <span class="keywordtype">float</span> v){outVec3 = vec3(v, 0.0, 0.0);}</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="keywordtype">void</span> _ResizeVector(out vec2 outVec2, in <span class="keywordtype">float</span> v){outVec2 = vec2(v, 0.0);}</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="keywordtype">void</span> _ResizeVector(out <span class="keywordtype">float</span> outFlt, in <span class="keywordtype">float</span> v){outFlt = v;}</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">float</span> Dst, in <span class="keywordtype">int</span> Src ){ Dst = float( Src ); }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">float</span> Dst, in uint Src ){ Dst = float( Src ); }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">float</span> Dst, in <span class="keywordtype">float</span> Src ){ Dst = float( Src ); }</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="keywordtype">void</span> _TypeConvertStore( out uint Dst, in <span class="keywordtype">int</span> Src ){ Dst = uint( Src ); }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="keywordtype">void</span> _TypeConvertStore( out uint Dst, in uint Src ){ Dst = uint( Src ); }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="keywordtype">void</span> _TypeConvertStore( out uint Dst, in <span class="keywordtype">float</span> Src ){ Dst = uint( Src ); }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">int</span> Dst, in <span class="keywordtype">int</span> Src ){ Dst = int( Src ); }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">int</span> Dst, in uint Src ){ Dst = int( Src ); }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="keywordtype">void</span> _TypeConvertStore( out <span class="keywordtype">int</span> Dst, in <span class="keywordtype">float</span> Src ){ Dst = int( Src ); }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="keywordtype">int</span> _ToInt( <span class="keywordtype">int</span> x ) { <span class="keywordflow">return</span> int(x); }</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="keywordtype">int</span> _ToInt( uint x ) { <span class="keywordflow">return</span> int(x); }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="keywordtype">int</span> _ToInt( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> int(x); }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="keywordtype">int</span> _ToInt( <span class="keywordtype">bool</span> x ) { <span class="keywordflow">return</span> x ? 1 : 0; }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="keywordtype">float</span> _ToFloat( <span class="keywordtype">int</span> x ) { <span class="keywordflow">return</span> float(x); }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="keywordtype">float</span> _ToFloat( uint x ) { <span class="keywordflow">return</span> float(x); }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="keywordtype">float</span> _ToFloat( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> float(x); }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="keywordtype">float</span> _ToFloat( <span class="keywordtype">bool</span> x ) { <span class="keywordflow">return</span> x ? 1.0 : 0.0;}</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> uint _ToUint( <span class="keywordtype">int</span> x ) { <span class="keywordflow">return</span> uint(x); }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> uint _ToUint( uint x ) { <span class="keywordflow">return</span> uint(x); }</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> uint _ToUint( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> uint(x); }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> uint _ToUint( <span class="keywordtype">bool</span> x ) { <span class="keywordflow">return</span> x ? 1u : 0u; }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="keywordtype">bool</span> _ToBool( <span class="keywordtype">int</span> x ) { <span class="keywordflow">return</span> x != 0 ? true : <span class="keyword">false</span>; }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="keywordtype">bool</span> _ToBool( uint x ) { <span class="keywordflow">return</span> x != 0u ? true : <span class="keyword">false</span>; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="keywordtype">bool</span> _ToBool( <span class="keywordtype">float</span> x ){ <span class="keywordflow">return</span> x != 0.0 ? true : <span class="keyword">false</span>; }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="keywordtype">bool</span> _ToBool( <span class="keywordtype">bool</span> x ) { <span class="keywordflow">return</span> x; }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="preprocessor">#define _ToVec2(x,y) vec2(_ToFloat(x), _ToFloat(y))</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <span class="preprocessor">#define _ToVec3(x,y,z) vec3(_ToFloat(x), _ToFloat(y), _ToFloat(z))</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="preprocessor">#define _ToVec4(x,y,z,w) vec4(_ToFloat(x), _ToFloat(y), _ToFloat(z), _ToFloat(w))</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> <span class="preprocessor">#define _ToIvec2(x,y) ivec2(_ToInt(x), _ToInt(y))</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="preprocessor">#define _ToIvec3(x,y,z) ivec3(_ToInt(x), _ToInt(y), _ToInt(z))</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> <span class="preprocessor">#define _ToIvec4(x,y,z,w) ivec4(_ToInt(x), _ToInt(y), _ToInt(z), _ToInt(w))</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="preprocessor">#define _ToUvec2(x,y) uvec2(_ToUint(x), _ToUint(y))</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="preprocessor">#define _ToUvec3(x,y,z) uvec3(_ToUint(x), _ToUint(y), _ToUint(z))</span></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <span class="preprocessor">#define _ToUvec4(x,y,z,w) uvec4(_ToUint(x), _ToUint(y), _ToUint(z), _ToUint(w))</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor">#define _ToBvec2(x,y) bvec2(_ToBool(x), _ToBool(y))</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> <span class="preprocessor">#define _ToBvec3(x,y,z) bvec3(_ToBool(x), _ToBool(y), _ToBool(z))</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="preprocessor">#define _ToBvec4(x,y,z,w) bvec4(_ToBool(x), _ToBool(y), _ToBool(z), _ToBool(w))</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="keywordtype">int</span> _ToIvec( uint u1 ){ <span class="keywordflow">return</span> _ToInt( u1 ); }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> ivec2 _ToIvec( uvec2 u2 ){ <span class="keywordflow">return</span> _ToIvec2( u2.x, u2.y ); }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> ivec3 _ToIvec( uvec3 u3 ){ <span class="keywordflow">return</span> _ToIvec3( u3.x, u3.y, u3.z ); }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> ivec4 _ToIvec( uvec4 u4 ){ <span class="keywordflow">return</span> _ToIvec4( u4.x, u4.y, u4.z, u4.w ); }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="keywordtype">int</span> _ToIvec( <span class="keywordtype">int</span> i1 ){ <span class="keywordflow">return</span> i1; }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> ivec2 _ToIvec( ivec2 i2 ){ <span class="keywordflow">return</span> i2; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> ivec3 _ToIvec( ivec3 i3 ){ <span class="keywordflow">return</span> i3; }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> ivec4 _ToIvec( ivec4 i4 ){ <span class="keywordflow">return</span> i4; }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="keywordtype">int</span> _ToIvec( <span class="keywordtype">float</span> f1 ){ <span class="keywordflow">return</span> _ToInt( f1 ); }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> ivec2 _ToIvec( vec2 f2 ){ <span class="keywordflow">return</span> _ToIvec2( f2.x, f2.y ); }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> ivec3 _ToIvec( vec3 f3 ){ <span class="keywordflow">return</span> _ToIvec3( f3.x, f3.y, f3.z ); }</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> ivec4 _ToIvec( vec4 f4 ){ <span class="keywordflow">return</span> _ToIvec4( f4.x, f4.y, f4.z, f4.w ); }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> </div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="keywordtype">float</span> _ToVec( uint u1 ){ <span class="keywordflow">return</span> _ToFloat(u1); }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> vec2 _ToVec( uvec2 u2 ){ <span class="keywordflow">return</span> _ToVec2( u2.x, u2.y ); }</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> vec3 _ToVec( uvec3 u3 ){ <span class="keywordflow">return</span> _ToVec3( u3.x, u3.y, u3.z ); }</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> vec4 _ToVec( uvec4 u4 ){ <span class="keywordflow">return</span> _ToVec4( u4.x, u4.y, u4.z, u4.w ); }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="keywordtype">float</span> _ToVec( <span class="keywordtype">int</span> i1 ){ <span class="keywordflow">return</span> _ToFloat(i1); }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> vec2 _ToVec( ivec2 i2 ){ <span class="keywordflow">return</span> _ToVec2( i2.x, i2.y ); }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> vec3 _ToVec( ivec3 i3 ){ <span class="keywordflow">return</span> _ToVec3( i3.x, i3.y, i3.z ); }</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> vec4 _ToVec( ivec4 i4 ){ <span class="keywordflow">return</span> _ToVec4( i4.x, i4.y, i4.z, i4.w ); }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="keywordtype">float</span> _ToVec( <span class="keywordtype">float</span> f1 ){ <span class="keywordflow">return</span> f1; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> vec2 _ToVec( vec2 f2 ){ <span class="keywordflow">return</span> f2; }</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> vec3 _ToVec( vec3 f3 ){ <span class="keywordflow">return</span> f3; }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> vec4 _ToVec( vec4 f4 ){ <span class="keywordflow">return</span> f4; }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> </div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> uint _ToUvec( uint u1 ){ <span class="keywordflow">return</span> u1; }</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> uvec2 _ToUvec( uvec2 u2 ){ <span class="keywordflow">return</span> u2; }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> uvec3 _ToUvec( uvec3 u3 ){ <span class="keywordflow">return</span> u3; }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> uvec4 _ToUvec( uvec4 u4 ){ <span class="keywordflow">return</span> u4; }</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> uint _ToUvec( <span class="keywordtype">int</span> i1 ){ <span class="keywordflow">return</span> _ToUint( i1 ); }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> uvec2 _ToUvec( ivec2 i2 ){ <span class="keywordflow">return</span> _ToUvec2( i2.x, i2.y ); }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> uvec3 _ToUvec( ivec3 i3 ){ <span class="keywordflow">return</span> _ToUvec3( i3.x, i3.y, i3.z ); }</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> uvec4 _ToUvec( ivec4 i4 ){ <span class="keywordflow">return</span> _ToUvec4( i4.x, i4.y, i4.z, i4.w ); }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> uint _ToUvec( <span class="keywordtype">float</span> f1 ){ <span class="keywordflow">return</span> _ToUint( f1 ); }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> uvec2 _ToUvec( vec2 f2 ){ <span class="keywordflow">return</span> _ToUvec2( f2.x, f2.y ); }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> uvec3 _ToUvec( vec3 f3 ){ <span class="keywordflow">return</span> _ToUvec3( f3.x, f3.y, f3.z ); }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> uvec4 _ToUvec( vec4 f4 ){ <span class="keywordflow">return</span> _ToUvec4( f4.x, f4.y, f4.z, f4.w ); }</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> </div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> </div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="comment">// TEXTURE FUNCTION STUB MACROS</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="comment">// https://www.opengl.org/wiki/Sampler_(GLSL)</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> </div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> </div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> <span class="comment">// Texture size queries</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> <span class="comment">// https://www.opengl.org/sdk/docs/man/html/textureSize.xhtml</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="comment">// textureSize returns the dimensions of level lod (if present) of the texture bound to sampler. </span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="comment">// The components in the return value are filled in, in order, with the width, height and depth </span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="comment">// of the texture. For the array forms, the last component of the return value is the number of </span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="comment">// layers in the texture array.</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> </div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="comment">//#if !(defined(DESKTOP_GL) && __VERSION__ >= 430)</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> <span class="preprocessor"># define textureQueryLevels(x) 0 // Only supported on 4.3+</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="comment">//#endif</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="preprocessor">#define GetTex1DDimensions_1(Sampler, Width)\</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="preprocessor"> _TypeConvertStore( Width, textureSize(Sampler, 0) );\</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="preprocessor">#define GetTex1DDimensions_3(Sampler, MipLevel, Width, NumberOfMipLevels)\</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="preprocessor"> _TypeConvertStore( Width, textureSize(Sampler, _ToInt(MipLevel)) ); \</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="preprocessor"> _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) ); \</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> </div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="preprocessor">#define GetTex1DArrDimensions_2(Sampler, Width, Elements)\</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="preprocessor"> ivec2 i2Size = textureSize(Sampler, 0); \</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x );\</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="preprocessor"> _TypeConvertStore( Elements, i2Size.y );\</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> </div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="preprocessor">#define GetTex1DArrDimensions_4(Sampler, MipLevel, Width, Elements, NumberOfMipLevels)\</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor"> ivec2 i2Size = textureSize(Sampler, _ToInt(MipLevel)); \</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="preprocessor"> _TypeConvertStore( Elements, i2Size.y ); \</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor"> _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="preprocessor">#define GetTex2DDimensions_2(Sampler, Width, Height)\</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="preprocessor"> ivec2 i2Size = textureSize(Sampler, 0); \</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="preprocessor"> _TypeConvertStore( Height, i2Size.y ); \</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> </div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <span class="preprocessor">#define GetTex2DDimensions_4(Sampler, MipLevel, Width, Height, NumberOfMipLevels)\</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="preprocessor"> ivec2 i2Size = textureSize(Sampler, _ToInt(MipLevel) ); \</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> <span class="preprocessor"> _TypeConvertStore( Height, i2Size.y ); \</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="preprocessor"> _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\</span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="preprocessor">#define GetTex2DArrDimensions_3(Sampler, Width, Height, Elements)\</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="preprocessor"> ivec3 i3Size = textureSize(Sampler, 0); \</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x ); \</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y ); \</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="preprocessor"> _TypeConvertStore( Elements,i3Size.z ); \</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> <span class="preprocessor">#define GetTex2DArrDimensions_5(Sampler, MipLevel, Width, Height, Elements, NumberOfMipLevels)\</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="preprocessor"> ivec3 i3Size = textureSize(Sampler, _ToInt(MipLevel)); \</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x ); \</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y ); \</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="preprocessor"> _TypeConvertStore( Elements, i3Size.z ); \</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> <span class="preprocessor"> _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="preprocessor">#define GetTex3DDimensions_3(Sampler, Width, Height, Depth)\</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="preprocessor"> ivec3 i3Size = textureSize(Sampler, 0); \</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x ); \</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y ); \</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="preprocessor"> _TypeConvertStore( Depth, i3Size.z ); \</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> </div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> <span class="preprocessor">#define GetTex3DDimensions_5(Sampler, MipLevel, Width, Height, Depth, NumberOfMipLevels)\</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="preprocessor"> ivec3 i3Size = textureSize(Sampler, _ToInt(MipLevel)); \</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x ); \</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y ); \</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span> <span class="preprocessor"> _TypeConvertStore( Depth, i3Size.z ); \</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> <span class="preprocessor"> _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> </div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="preprocessor">#define GetTex2DMSDimensions_3(Sampler, Width, Height, NumberOfSamples)\</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> <span class="preprocessor"> ivec2 i2Size = textureSize(Sampler); \</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <span class="preprocessor"> _TypeConvertStore( Height, i2Size.y ); \</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="preprocessor"> _TypeConvertStore( NumberOfSamples, 0 );\</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="preprocessor">#define GetTex2DMSArrDimensions_4(Sampler, Width, Height, Elements, NumberOfSamples)\</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> <span class="preprocessor"> ivec3 i3Size = textureSize(Sampler); \</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x );\</span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y );\</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="preprocessor"> _TypeConvertStore( Elements, i3Size.z );\</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span> <span class="preprocessor"> _TypeConvertStore( NumberOfSamples, 0 );\</span></div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span> </div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> </div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> <span class="comment">// https://www.opengl.org/sdk/docs/man/html/imageSize.xhtml</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="comment">// imageSize returns the dimensions of the image bound to image. The components in the </span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="comment">// return value are filled in, in order, with the width, height and depth of the image. </span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="comment">// For the array forms, the last component of the return value is the number of layers </span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="comment">// in the texture array.</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="preprocessor">#define GetRWTex1DDimensions_1(Tex, Width)\</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> <span class="preprocessor"> _TypeConvertStore( Width, imageSize(Tex) ); \</span></div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> </div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="preprocessor">#define GetRWTex1DArrDimensions_2(Tex, Width, Elements)\</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="preprocessor"> ivec2 i2Size = imageSize(Tex); \</span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="preprocessor"> _TypeConvertStore( Elements, i2Size.y ); \</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> </div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="preprocessor">#define GetRWTex2DDimensions_2(Tex, Width, Height)\</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> <span class="preprocessor"> ivec2 i2Size = imageSize(Tex); \</span></div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> <span class="preprocessor"> _TypeConvertStore( Width, i2Size.x ); \</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> <span class="preprocessor"> _TypeConvertStore( Height, i2Size.y ); \</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="preprocessor">#define GetRWTex2DArrDimensions_3(Tex, Width, Height, Elements)\</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="preprocessor"> ivec3 i3Size = imageSize(Tex); \</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x );\</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y );\</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="preprocessor"> _TypeConvertStore( Elements, i3Size.z );\</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="preprocessor">#define GetRWTex3DDimensions_3(Tex, Width, Height, Depth)\</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="preprocessor"> ivec3 i3Size = imageSize(Tex); \</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="preprocessor"> _TypeConvertStore( Width, i3Size.x ); \</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="preprocessor"> _TypeConvertStore( Height, i3Size.y ); \</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="preprocessor"> _TypeConvertStore( Depth, i3Size.z ); \</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> </div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> </div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="comment">// Texture sampling operations</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> </div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="comment">// IMPORTANT NOTE ABOUT OFFSET</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="comment">// Offset parameter to all texture sampling functions must be a constant expression.</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="comment">// If it is not, the shader will be successfully compiled, HOWEVER the value of Offset </span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="comment">// will silently be zero. </span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="comment">//</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="comment">// A constant expression in GLSL is defined as follows:</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="comment">// * A literal value.</span></div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="comment">// * A const-qualified variable with an explicit initializer (so not a function parameter).</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="comment">// * The result of the length() function of an array, but only if the array has an explicit size.</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="comment">// * The result of most operators, so long as all the operands are themselves constant expressions. </span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span> <span class="comment">// The operators not on this list are any assignment operators (+= and so forth), and the comma operator.</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="comment">// * The result of a constructor for a type, but only if all of the arguments to the constructor are </span></div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="comment">// themselves constant expressions.</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="comment">// * The return value of any built-in function, but only if all of the arguments to the function are </span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="comment">// themselves constant expressions. Opaque Types are never constant expressions. Note that the </span></div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="comment">// functions dFdx, dFdy, and fwidth will return 0, when used in a context that requires a constant </span></div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="comment">// expression (such as a const variable initializer).</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="comment">// </span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="comment">// The list above does not include return value of a function, even when the value is compile-time expression.</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="comment">// As a result, we cannot use type conversion functions for Offset parameter.</span></div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span> </div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="comment">// In all texture sampling functions, the last component of Coords is used as Dsub and the array layer is specified </span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> <span class="comment">// in the second to last component of Coords. (The second component of Coords is unused for 1D shadow lookups.)</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="comment">// For cube array textures, Dsub is specified as a separate parameter</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="comment">// mip</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="preprocessor">#define SampleCmpLevel0Tex1D_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, 0.0, CompareValue), 0.0)</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> <span class="preprocessor">#define SampleCmpLevel0Tex1DArr_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0)</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="preprocessor">#define SampleCmpLevel0Tex2D_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0)</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="preprocessor">#define SampleCmpLevel0Tex2DArr_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for sampler2DArrayShadow</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="preprocessor">#define SampleCmpLevel0TexCube_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for samplerCubeShadow</span></div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> <span class="preprocessor">#define SampleCmpLevel0TexCubeArr_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for samplerCubeArrayShadow</span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="comment">// mip</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="preprocessor">#define SampleCmpLevel0Tex1D_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, 0.0, CompareValue), 0.0, int(Offset))</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="preprocessor">#define SampleCmpLevel0Tex1DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0, int(Offset))</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="preprocessor">#define SampleCmpLevel0Tex2D_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0, ivec2((Offset).xy))</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="preprocessor">#define SampleCmpLevel0Tex2DArr_4(Tex, Sampler, Coords, CompareValue, Offset) 0.0 // No textureLodOffset for sampler2DArrayShadow</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> </div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> </div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> <span class="comment">// https://www.opengl.org/sdk/docs/man/html/texture.xhtml - note: there are many mistakes on the page</span></div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="preprocessor">#ifdef FRAGMENT_SHADER</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="preprocessor"># define Sample_2(Tex, Sampler, Coords) texture (Tex, _ToVec(Coords))</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="preprocessor"># define Sample_3(Tex, Sampler, Coords, Offset) textureOffset(Tex, _ToVec(Coords), Offset)</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <span class="preprocessor"># define SampleBias_3(Tex, Sampler, Coords, Bias) texture (Tex, _ToVec(Coords), _ToFloat(Bias))</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> <span class="preprocessor"># define SampleBias_4(Tex, Sampler, Coords, Bias, Offset) textureOffset(Tex, _ToVec(Coords), Offset, _ToFloat(Bias))</span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> </div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> <span class="preprocessor"># define SampleCmpTex1D_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, 0.0, CompareValue))</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> <span class="preprocessor"># define SampleCmpTex1DArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue))</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> <span class="preprocessor"># define SampleCmpTex2D_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue))</span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="preprocessor"># define SampleCmpTex2DArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue))</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="preprocessor"># define SampleCmpTexCube_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue))</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> <span class="preprocessor"># define SampleCmpTexCubeArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, (Coords).w), _ToFloat(CompareValue))</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="preprocessor"># define SampleCmpTex1D_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, 0.0, CompareValue), int(Offset))</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="preprocessor"># define SampleCmpTex1DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), int(Offset))</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> <span class="preprocessor"># define SampleCmpTex2D_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), ivec2((Offset).xy))</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="preprocessor"># define SampleCmpTex2DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue), ivec2((Offset).xy))</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> </div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <span class="comment">// Derivatives are only available in fragment shader. GLSL compiler fails when it</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span> <span class="comment">// encounters texture() or textureOffset() instructions in other types of shaders. So</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="comment">// to let the shader be compiled and to have something meaningful, replace such operations</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="comment">// with textureLod() and textureLodOffset()</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> </div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> <span class="preprocessor"># define Sample_2(Tex, Sampler, Coords) textureLod (Tex, _ToVec(Coords), 0.0)</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <span class="preprocessor"># define Sample_3(Tex, Sampler, Coords, Offset) textureLodOffset(Tex, _ToVec(Coords), 0.0, Offset)</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> <span class="preprocessor"># define SampleBias_3(Tex, Sampler, Coords, Bias) textureLod (Tex, _ToVec(Coords), 0.0 + _ToFloat(Bias))</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> <span class="preprocessor"># define SampleBias_4(Tex, Sampler, Coords, Bias, Offset) textureLodOffset(Tex, _ToVec(Coords), 0.0 + _ToFloat(Bias), Offset)</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> <span class="preprocessor"># define SampleCmpTex1D_3 SampleCmpLevel0Tex1D_3</span></div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <span class="preprocessor"># define SampleCmpTex1DArr_3 SampleCmpLevel0Tex1DArr_3</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="preprocessor"># define SampleCmpTex2D_3 SampleCmpLevel0Tex2D_3</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> <span class="preprocessor"># define SampleCmpTex2DArr_3 SampleCmpLevel0Tex2DArr_3</span></div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> <span class="preprocessor"># define SampleCmpTexCube_3 SampleCmpLevel0TexCube_3</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="preprocessor"># define SampleCmpTexCubeArr_3 SampleCmpLevel0TexCubeArr_3</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  </div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="preprocessor"># define SampleCmpTex1D_4 SampleCmpLevel0Tex1D_4</span></div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> <span class="preprocessor"># define SampleCmpTex1DArr_4 SampleCmpLevel0Tex1DArr_4</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> <span class="preprocessor"># define SampleCmpTex2D_4 SampleCmpLevel0Tex2D_4</span></div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="preprocessor"># define SampleCmpTex2DArr_4 SampleCmpLevel0Tex2DArr_4</span></div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> </div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> <span class="comment">// https://www.opengl.org/sdk/docs/man/html/textureLod.xhtml</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="preprocessor">#define SampleLevel_3(Tex, Sampler, Coords, Level) textureLod (Tex, _ToVec(Coords), _ToFloat(Level))</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> <span class="preprocessor">#define SampleLevel_4(Tex, Sampler, Coords, Level, Offset) textureLodOffset(Tex, _ToVec(Coords), _ToFloat(Level), Offset)</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> </div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> <span class="comment">// https://www.opengl.org/sdk/docs/man/html/textureGrad.xhtml</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> <span class="preprocessor">#define SampleGrad_4(Tex, Sampler, Coords, DDX, DDY) textureGrad (Tex, _ToVec(Coords), _ToVec(DDX), _ToVec(DDY))</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="preprocessor">#define SampleGrad_5(Tex, Sampler, Coords, DDX, DDY, Offset) textureGradOffset(Tex, _ToVec(Coords), _ToVec(DDX), _ToVec(DDY), Offset)</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> </div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> </div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> <span class="comment">// texelFetch performs a lookup of a single texel from texture coordinate P in the texture </span></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> <span class="comment">// bound to sampler. The array layer is specified in the last component of P for array forms. </span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="comment">// The lod parameter (if present) specifies the level-of-detail from which the texel will be fetched. </span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> <span class="comment">// The sample specifies which sample within the texel will be returned when reading from a multi-sample texure.</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="preprocessor">#define LoadTex1D_1(Tex, Location) texelFetch (Tex, _ToInt((Location).x), _ToInt((Location).y))</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <span class="preprocessor">#define LoadTex1D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToInt((Location).x), _ToInt((Location).y), int(Offset))</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="preprocessor">#define LoadTex1DArr_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xy), _ToInt((Location).z) )</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> <span class="preprocessor">#define LoadTex1DArr_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xy), _ToInt((Location).z), int(Offset))</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="preprocessor">#define LoadTex2D_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xy), _ToInt((Location).z))</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <span class="preprocessor">#define LoadTex2D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xy), _ToInt((Location).z), ivec2( (Offset).xy) )</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="preprocessor">#define LoadTex2DArr_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xyz), _ToInt((Location).w) )</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="preprocessor">#define LoadTex2DArr_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xyz), _ToInt((Location).w), ivec2( (Offset).xy))</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <span class="preprocessor">#define LoadTex3D_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xyz), _ToInt((Location).w))</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="preprocessor">#define LoadTex3D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xyz), _ToInt((Location).w), ivec3( (Offset).xyz))</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="preprocessor">#define LoadTex2DMS_2(Tex, Location, Sample) texelFetch(Tex, _ToIvec( (Location).xy), _ToInt(Sample))</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="preprocessor">#define LoadTex2DMS_3(Tex, Location, Sample, Offset)texelFetch(Tex, _ToIvec2( (Location).x + (Offset).x, (Location).y + (Offset).y), int(Sample) ) // No texelFetchOffset for texture2DMS</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> <span class="preprocessor">#define LoadTex2DMSArr_2(Tex, Location, Sample) texelFetch(Tex, _ToIvec( (Location).xyz), _ToInt(Sample))</span></div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> <span class="preprocessor">#define LoadTex2DMSArr_3(Tex, Location, Sample, Offset)texelFetch(Tex, _ToIvec3( (Location).x + (Offset).x, (Location).y + (Offset).y, (Location).z), int(Sample)) // No texelFetchOffset for texture2DMSArray</span></div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> </div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> <span class="comment">//https://www.opengl.org/sdk/docs/man/html/imageLoad.xhtml</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> <span class="preprocessor">#define LoadRWTex1D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).x) )</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> <span class="preprocessor">#define LoadRWTex1DArr_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xy) )</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> <span class="preprocessor">#define LoadRWTex2D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xy) )</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> <span class="preprocessor">#define LoadRWTex2DArr_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xyz) )</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> <span class="preprocessor">#define LoadRWTex3D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xyz) )</span></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> </div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> <span class="preprocessor">#define Gather_2(Tex, Sampler, Location) textureGather (Tex, _ToVec(Location))</span></div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> <span class="preprocessor">#define Gather_3(Tex, Sampler, Location, Offset)textureGatherOffset(Tex, _ToVec(Location), Offset)</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> </div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="preprocessor">#define GatherCmp_3(Tex, Sampler, Location, CompareVal) textureGather (Tex, _ToVec(Location), _ToFloat(CompareVal))</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="preprocessor">#define GatherCmp_4(Tex, Sampler, Location, CompareVal, Offset)textureGatherOffset(Tex, _ToVec(Location), _ToFloat(CompareVal), Offset)</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> </div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="comment">// Atomic operations</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="preprocessor">#define InterlockedAddSharedVar_2(dest, value) atomicAdd(dest, value)</span></div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <span class="preprocessor">#define InterlockedAddSharedVar_3(dest, value, orig_val) orig_val = atomicAdd(dest, value)</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> <span class="preprocessor">#define InterlockedAddImage_2(img, coords, value) imageAtomicAdd(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="preprocessor">#define InterlockedAddImage_3(img, coords, value, orig_val)orig_val = imageAtomicAdd(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> </div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span> <span class="preprocessor">#define InterlockedAndSharedVar_2(dest, value) atomicAnd(dest, value)</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> <span class="preprocessor">#define InterlockedAndSharedVar_3(dest, value, orig_val) orig_val = atomicAnd(dest, value)</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <span class="preprocessor">#define InterlockedAndImage_2(img, coords, value) imageAtomicAnd(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> <span class="preprocessor">#define InterlockedAndImage_3(img, coords, value, orig_val)orig_val = imageAtomicAnd(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> </div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> <span class="preprocessor">#define InterlockedMaxSharedVar_2(dest, value) atomicMax(dest, value)</span></div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> <span class="preprocessor">#define InterlockedMaxSharedVar_3(dest, value, orig_val) orig_val = atomicMax(dest, value)</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span> <span class="preprocessor">#define InterlockedMaxImage_2(img, coords, value) imageAtomicMax(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="preprocessor">#define InterlockedMaxImage_3(img, coords, value, orig_val)orig_val = imageAtomicMax(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="preprocessor">#define InterlockedMinSharedVar_2(dest, value) atomicMin(dest, value)</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="preprocessor">#define InterlockedMinSharedVar_3(dest, value, orig_val) orig_val = atomicMin(dest, value)</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span> <span class="preprocessor">#define InterlockedMinImage_2(img, coords, value) imageAtomicMin(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="preprocessor">#define InterlockedMinImage_3(img, coords, value, orig_val)orig_val = imageAtomicMin(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> <span class="preprocessor">#define InterlockedOrSharedVar_2(dest, value) atomicOr(dest, value)</span></div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="preprocessor">#define InterlockedOrSharedVar_3(dest, value, orig_val) orig_val = atomicOr(dest, value)</span></div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="preprocessor">#define InterlockedOrImage_2(img, coords, value) imageAtomicOr(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="preprocessor">#define InterlockedOrImage_3(img, coords, value, orig_val)orig_val = imageAtomicOr(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> </div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span> <span class="preprocessor">#define InterlockedXorSharedVar_2(dest, value) atomicXor(dest, value)</span></div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> <span class="preprocessor">#define InterlockedXorSharedVar_3(dest, value, orig_val) orig_val = atomicXor(dest, value)</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="preprocessor">#define InterlockedXorImage_2(img, coords, value) imageAtomicXor(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> <span class="preprocessor">#define InterlockedXorImage_3(img, coords, value, orig_val)orig_val = imageAtomicXor(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> <span class="comment">// There is actually no InterlockedExchange() with 2 arguments</span></div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> <span class="preprocessor">#define InterlockedExchangeSharedVar_2(dest, value) atomicExchange(dest, value)</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span> <span class="preprocessor">#define InterlockedExchangeSharedVar_3(dest, value, orig_val) orig_val = atomicExchange(dest, value)</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> <span class="preprocessor">#define InterlockedExchangeImage_2(img, coords, value) imageAtomicExchange(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> <span class="preprocessor">#define InterlockedExchangeImage_3(img, coords, value, orig_val)orig_val = imageAtomicExchange(img, _ToIvec(coords), value)</span></div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="comment">//uint imageAtomicCompSwap( image img, IVec P, nint compare, nint data);</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span> <span class="comment">//void InterlockedCompareExchange( in R dest, in T compare_value, in T value, out T original_value);</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="preprocessor">#define InterlockedCompareExchangeSharedVar_4(dest, cmp_val, value, orig_val) orig_val = atomicCompSwap(dest, cmp_val, value)</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> <span class="preprocessor">#define InterlockedCompareExchangeImage_4(img, coords, cmp_val, value, orig_val) orig_val = imageAtomicCompSwap(img, _ToIvec(coords), cmp_val, value)</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> </div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> <span class="preprocessor">#define InterlockedCompareStoreSharedVar_3(dest, cmp_val, value) atomicCompSwap(dest, cmp_val, value)</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="preprocessor">#define InterlockedCompareStoreImage_3(img, coords, cmp_val, value)imageAtomicCompSwap(img, _ToIvec(coords), cmp_val, value)</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> </div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="comment">// Swizzling macros</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="preprocessor">#define _SWIZZLE0</span></div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> <span class="preprocessor">#define _SWIZZLE1 .x</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> <span class="preprocessor">#define _SWIZZLE2 .xy</span></div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> <span class="preprocessor">#define _SWIZZLE3 .xyz</span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> <span class="preprocessor">#define _SWIZZLE4 .xyzw</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> </div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> <span class="comment">// Helper functions</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> </div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> float2 NormalizedDeviceXYToTexUV( float2 f2ProjSpaceXY )</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">return</span> float2(0.5,0.5) + float2(0.5,0.5) * f2ProjSpaceXY.xy;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> }</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> <span class="keywordtype">float</span> NormalizedDeviceZToDepth(<span class="keywordtype">float</span> fNDC_Z)</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keywordflow">return</span> fNDC_Z * 0.5 + 0.5; <span class="comment">// [-1, +1] -> [0, 1]</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> }</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> </div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> <span class="keywordtype">float</span> DepthToNormalizedDeviceZ(<span class="keywordtype">float</span> fDepth)</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> {</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordflow">return</span> fDepth * 2.0 - 1.0; <span class="comment">// [0, 1] -> [-1, +1]</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> }</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <span class="preprocessor">#define F3NDC_XYZ_TO_UVD_SCALE float3(0.5, 0.5, 0.5)</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> </div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> <span class="preprocessor">#define NDC_MIN_Z -1.0 // Minimal z in the normalized device space</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> </div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> <span class="preprocessor">#define MATRIX_ELEMENT(mat, row, col) mat[col][row]</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> </div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="comment">// ---------------------------------- Vertex shader ----------------------------------</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="preprocessor">#ifdef VERTEX_SHADER</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> </div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="preprocessor">#ifndef GL_ES</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> out gl_PerVertex</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> {</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  vec4 gl_Position;</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> };</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> </div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> <span class="preprocessor">#define _GET_GL_VERTEX_ID(VertexId)_TypeConvertStore(VertexId, gl_VertexID)</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="preprocessor">#define _GET_GL_INSTANCE_ID(InstId)_TypeConvertStore(InstId, gl_InstanceID)</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="preprocessor">#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)</span></div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> </div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> </div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> </div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <span class="comment">// --------------------------------- Fragment shader ---------------------------------</span></div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <span class="preprocessor">#ifdef FRAGMENT_SHADER</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> </div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="preprocessor">#define _GET_GL_FRAG_COORD(FragCoord)_ResizeVector(FragCoord, gl_FragCoord)</span></div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span> <span class="preprocessor">#define _SET_GL_FRAG_DEPTH(Depth)_TypeConvertStore(gl_FragDepth, Depth)</span></div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> </div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> </div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="comment">// --------------------------------- Geometry shader ---------------------------------</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="preprocessor">#ifdef GEOMETRY_SHADER</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="comment">// ARB_separate_shader_objects requires built-in block gl_PerVertex to be redeclared before accessing its members</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> <span class="comment">// declaring gl_PointSize and gl_ClipDistance causes compilation error on Android</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> in gl_PerVertex</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  vec4 gl_Position;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> } gl_in[];</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> out gl_PerVertex</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  vec4 gl_Position;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> };</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> </div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> <span class="preprocessor">#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="preprocessor">#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_in[i].gl_PrimitiveIDIn)</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="preprocessor">#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> <span class="preprocessor">#define _SET_GL_LAYER(Layer)_TypeConvertStore(gl_Layer,Layer)</span></div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> </div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="comment">// --------------------------- Tessellation control shader ---------------------------</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> <span class="preprocessor">#ifdef TESS_CONTROL_SHADER</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> in gl_PerVertex</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> {</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  vec4 gl_Position;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> } gl_in[gl_MaxPatchVertices];</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> </div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> out gl_PerVertex</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> {</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  vec4 gl_Position;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> } gl_out[];</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> </div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> <span class="preprocessor">#define _GET_GL_INVOCATION_ID(InvocId)_TypeConvertStore(InvocId, gl_InvocationID)</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="preprocessor">#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_PrimitiveID)</span></div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <span class="preprocessor">#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> </div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> <span class="preprocessor">#define _SET_GL_POSITION(Pos)gl_out[gl_InvocationID].gl_Position=_ExpandVector(Pos)</span></div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <span class="preprocessor">#define _SET_GL_TESS_LEVEL_OUTER(OuterLevel)for(int i=0; i < OuterLevel.length(); ++i)gl_TessLevelOuter[i] = OuterLevel[i]</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> <span class="keywordtype">void</span> _SetGLTessLevelInner(<span class="keywordtype">float</span> InnerLevel[2])</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> {</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  gl_TessLevelInner[0] = InnerLevel[0];</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  gl_TessLevelInner[1] = InnerLevel[1];</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> }</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="keywordtype">void</span> _SetGLTessLevelInner(<span class="keywordtype">float</span> InnerLevel)</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> {</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  gl_TessLevelInner[0] = InnerLevel;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> }</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> </div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> </div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> </div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="comment">// --------------------------- Tessellation evaluation shader ---------------------------</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> <span class="preprocessor">#ifdef TESS_EVALUATION_SHADER</span></div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> in gl_PerVertex</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> {</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  vec4 gl_Position;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> } gl_in[gl_MaxPatchVertices];</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> out gl_PerVertex</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> {</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  vec4 gl_Position;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <span class="comment">//float gl_PointSize;</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="comment">//float gl_ClipDistance[];</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> };</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> </div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="preprocessor">#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="preprocessor">#define _GET_GL_TESS_LEVEL_OUTER(OuterLevel)for(int i=0; i < OuterLevel.length(); ++i)OuterLevel[i] = gl_TessLevelOuter[i]</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="keywordtype">void</span> _GetGLTessLevelInner(out <span class="keywordtype">float</span> InnerLevel[2])</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> {</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  InnerLevel[0] = gl_TessLevelInner[0];</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  InnerLevel[1] = gl_TessLevelInner[1];</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> }</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <span class="keywordtype">void</span> _GetGLTessLevelInner(out <span class="keywordtype">float</span> InnerLevel)</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  InnerLevel = gl_TessLevelInner[0];</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> }</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> </div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> <span class="preprocessor">#define _GET_GL_TESS_COORD(TessCoord)_ResizeVector(TessCoord, gl_TessCoord)</span></div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="preprocessor">#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_PrimitiveID)</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="preprocessor">#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> </div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> <span class="comment">// ---------------------------------- Compute shader ----------------------------------</span></div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="preprocessor">#ifdef COMPUTE_SHADER</span></div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> </div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <span class="preprocessor">#define _GET_GL_GLOBAL_INVOCATION_ID(Type, InvocId)InvocId=Type(gl_GlobalInvocationID)</span></div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="preprocessor">#define _GET_GL_WORK_GROUP_ID(Type, GroupId)GroupId=Type(gl_WorkGroupID)</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> <span class="preprocessor">#define _GET_GL_LOCAL_INVOCATION_ID(Type, InvocId)InvocId=Type(gl_LocalInvocationID)</span></div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="preprocessor">#define _GET_GL_LOCAL_INVOCATION_INDEX(Type, InvocInd)InvocInd=Type(gl_LocalInvocationIndex)</span></div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> </div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> </div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="preprocessor">#endif // _GLSL_DEFINITIONS_</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_s_l_definitions__inc_8h_source.html b/doc/html/_g_l_s_l_definitions__inc_8h_source.html index bdfdc733..ced4dacf 100644 --- a/doc/html/_g_l_s_l_definitions__inc_8h_source.html +++ b/doc/html/_g_l_s_l_definitions__inc_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">GLSLDefinitions_inc.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="stringliteral">"/* Copyright 2015-2017 Egor Yusov\n"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="stringliteral">" * \n"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="stringliteral">" * Licensed under the Apache License, Version 2.0 (the \"License\");\n"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="stringliteral">" * you may not use this file except in compliance with the License.\n"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="stringliteral">" * You may obtain a copy of the License at\n"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="stringliteral">" * \n"</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="stringliteral">" * http://www.apache.org/licenses/LICENSE-2.0\n"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="stringliteral">" * \n"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="stringliteral">" * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="stringliteral">" * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="stringliteral">" * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.\n"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="stringliteral">" *\n"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="stringliteral">" * In no event and under no legal theory, whether in tort (including negligence), \n"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="stringliteral">" * contract, or otherwise, unless required by applicable law (such as deliberate \n"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="stringliteral">" * and grossly negligent acts) or agreed to in writing, shall any Contributor be\n"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="stringliteral">" * liable for any damages, including any direct, indirect, special, incidental, \n"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="stringliteral">" * or consequential damages of any character arising as a result of this License or \n"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="stringliteral">" * out of the use or inability to use the software (including but not limited to damages \n"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="stringliteral">" * for loss of goodwill, work stoppage, computer failure or malfunction, or any and \n"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="stringliteral">" * all other commercial damages or losses), even if such Contributor has been advised \n"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="stringliteral">" * of the possibility of such damages.\n"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="stringliteral">" */\n"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="stringliteral">"#ifndef _GLSL_DEFINITIONS_\n"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="stringliteral">"#define _GLSL_DEFINITIONS_\n"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="stringliteral">"#define GLSL\n"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="stringliteral">"#define float4 vec4\n"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="stringliteral">"#define float3 vec3\n"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="stringliteral">"#define float2 vec2\n"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="stringliteral">"#define int4 ivec4\n"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="stringliteral">"#define int3 ivec3\n"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="stringliteral">"#define int2 ivec2\n"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="stringliteral">"#define uint4 uvec4\n"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="stringliteral">"#define uint3 uvec3\n"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="stringliteral">"#define uint2 uvec2\n"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="stringliteral">"#define bool4 bvec4\n"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="stringliteral">"#define bool3 bvec3\n"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="stringliteral">"#define bool2 bvec2\n"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="stringliteral">"// OpenGL matrices in GLSL are always as column-major \n"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="stringliteral">"// (this is not related to how they are stored)\n"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="stringliteral">"#define float2x2 mat2x2\n"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="stringliteral">"#define float2x3 mat3x2\n"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="stringliteral">"#define float2x4 mat4x2\n"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="stringliteral">"#define float3x2 mat2x3\n"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="stringliteral">"#define float3x3 mat3x3\n"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="stringliteral">"#define float3x4 mat4x3\n"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="stringliteral">"#define float4x2 mat2x4\n"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="stringliteral">"#define float4x3 mat3x4\n"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="stringliteral">"#define float4x4 mat4x4\n"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="stringliteral">"#define matrix mat4x4\n"</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="stringliteral">"#define static\n"</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="stringliteral">"#define SamplerState int\n"</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="stringliteral">"#define SamplerComparisonState int\n"</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="stringliteral">"// https://www.opengl.org/wiki/Memory_Model#Incoherent_memory_access\n"</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="stringliteral">"// Shared variable access uses the rules for incoherent memory access. \n"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="stringliteral">"// This means that the user must perform certain synchronization in \n"</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="stringliteral">"// order to ensure that shared variables are visible.\n"</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="stringliteral">"// At the same time, shared variables are all implicitly declared coherent, \n"</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="stringliteral">"// so one don\'t need to (and can\'t) use that qualifier.\n"</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="stringliteral">"#define groupshared shared\n"</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="stringliteral">"#ifdef FRAGMENT_SHADER\n"</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="stringliteral">"# define ddx dFdx\n"</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="stringliteral">"# define ddy dFdy\n"</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="stringliteral">"#else\n"</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="stringliteral">"# define ddx(x) (x) // GLSL compiler fails when it sees derivatives \n"</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="stringliteral">"# define ddy(x) (x) // in any shader but fragment\n"</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="stringliteral">"#define ddx_coarse ddx\n"</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="stringliteral">"#define ddy_coarse ddy\n"</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="stringliteral">"#define ddx_fine ddx\n"</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="stringliteral">"#define ddy_fine ddy\n"</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="stringliteral">"#define mul(a, b) ((a)*(b))\n"</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="stringliteral">"#define frac fract\n"</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="stringliteral">"#define atan2 atan\n"</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="stringliteral">"#define rsqrt inversesqrt\n"</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="stringliteral">"#define fmod mod\n"</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="stringliteral">"#define lerp mix\n"</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="stringliteral">"#define dst distance\n"</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="stringliteral">"#define countbits bitCount\n"</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="stringliteral">"#define firstbithigh findMSB\n"</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="stringliteral">"#define firstbitlow findLSB\n"</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="stringliteral">"#define reversebits bitfieldReverse\n"</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="stringliteral">"float rcp( float x ){ return 1.0 / x; }\n"</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="stringliteral">"vec2 rcp( vec2 x ){ return vec2(1.0,1.0) / x; }\n"</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="stringliteral">"vec3 rcp( vec3 x ){ return vec3(1.0,1.0,1.0) / x; }\n"</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="stringliteral">"vec4 rcp( vec4 x ){ return vec4(1.0,1.0,1.0,1.0) / x; }\n"</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="stringliteral">"float saturate( float x ){ return clamp( x, 0.0, 1.0 ); }\n"</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="stringliteral">"vec2 saturate( vec2 x ){ return clamp( x, vec2(0.0, 0.0), vec2(1.0, 1.0) ); }\n"</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="stringliteral">"vec3 saturate( vec3 x ){ return clamp( x, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0) ); }\n"</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="stringliteral">"vec4 saturate( vec4 x ){ return clamp( x, vec4(0.0, 0.0, 0.0, 0.0), vec4(1.0, 1.0, 1.0, 1.0) ); }\n"</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="stringliteral">"void sincos( float x, out float s, out float c ){ s = sin( x ); c = cos( x ); }\n"</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="stringliteral">"void sincos( vec2 x, out vec2 s, out vec2 c ){ s = sin( x ); c = cos( x ); }\n"</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="stringliteral">"void sincos( vec3 x, out vec3 s, out vec3 c ){ s = sin( x ); c = cos( x ); }\n"</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="stringliteral">"void sincos( vec4 x, out vec4 s, out vec4 c ){ s = sin( x ); c = cos( x ); }\n"</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="stringliteral">"// Bit conversion operations\n"</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="stringliteral">"float asfloat( float x ){ return x; }\n"</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="stringliteral">"vec2 asfloat( vec2 x ){ return x; }\n"</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="stringliteral">"vec3 asfloat( vec3 x ){ return x; }\n"</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="stringliteral">"vec4 asfloat( vec4 x ){ return x; }\n"</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="stringliteral">"float asfloat( int x ){ return intBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="stringliteral">"vec2 asfloat( ivec2 x ){ return intBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="stringliteral">"vec3 asfloat( ivec3 x ){ return intBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="stringliteral">"vec4 asfloat( ivec4 x ){ return intBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="stringliteral">"float asfloat( uint x ){ return uintBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="stringliteral">"vec2 asfloat( uvec2 x ){ return uintBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="stringliteral">"vec3 asfloat( uvec3 x ){ return uintBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="stringliteral">"vec4 asfloat( uvec4 x ){ return uintBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="stringliteral">"int asint( int x ){ return x; }\n"</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="stringliteral">"ivec2 asint( ivec2 x ){ return x; }\n"</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="stringliteral">"ivec3 asint( ivec3 x ){ return x; }\n"</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="stringliteral">"ivec4 asint( ivec4 x ){ return x; }\n"</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="stringliteral">"int asint( uint x ){ return int(x); }\n"</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="stringliteral">"ivec2 asint( uvec2 x ){ return ivec2(x); }\n"</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="stringliteral">"ivec3 asint( uvec3 x ){ return ivec3(x); }\n"</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="stringliteral">"ivec4 asint( uvec4 x ){ return ivec4(x); }\n"</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="stringliteral">"int asint( float x ){ return floatBitsToInt(x); }\n"</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="stringliteral">"ivec2 asint( vec2 x ){ return floatBitsToInt(x); }\n"</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="stringliteral">"ivec3 asint( vec3 x ){ return floatBitsToInt(x); }\n"</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="stringliteral">"ivec4 asint( vec4 x ){ return floatBitsToInt(x); }\n"</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="stringliteral">"uint asuint( uint x ){ return x; }\n"</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="stringliteral">"uvec2 asuint( uvec2 x ){ return x; }\n"</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="stringliteral">"uvec3 asuint( uvec3 x ){ return x; }\n"</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="stringliteral">"uvec4 asuint( uvec4 x ){ return x; }\n"</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="stringliteral">"uint asuint( int x ){ return uint(x); }\n"</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="stringliteral">"uvec2 asuint( ivec2 x ){ return uvec2(x); }\n"</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="stringliteral">"uvec3 asuint( ivec3 x ){ return uvec3(x); }\n"</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="stringliteral">"uvec4 asuint( ivec4 x ){ return uvec4(x); }\n"</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="stringliteral">"uint asuint( float x ){ return floatBitsToUint(x); }\n"</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="stringliteral">"uvec2 asuint( vec2 x ){ return floatBitsToUint(x); }\n"</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="stringliteral">"uvec3 asuint( vec3 x ){ return floatBitsToUint(x); }\n"</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="stringliteral">"uvec4 asuint( vec4 x ){ return floatBitsToUint(x); }\n"</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="stringliteral">"float f16tof32( uint u1 )\n"</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="stringliteral">" return unpackHalf2x16( u1 ).x; \n"</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="stringliteral">"vec2 f16tof32( uvec2 u2 )\n"</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="stringliteral">" uint u2PackedHalf = (u2.x & 0x0ffffu) | ((u2.y & 0x0ffffu) << 16u);\n"</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="stringliteral">" return unpackHalf2x16( u2PackedHalf ); \n"</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="stringliteral">"vec3 f16tof32( uvec3 u3 )\n"</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="stringliteral">" return vec3( f16tof32( u3.xy ), f16tof32( u3.z ) );\n"</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="stringliteral">"vec4 f16tof32( uvec4 u4 )\n"</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="stringliteral">" return vec4( f16tof32( u4.xy ), f16tof32( u4.zw ) );\n"</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="stringliteral">"float f16tof32( int i1 ){ return f16tof32( uint ( i1 ) ); }\n"</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="stringliteral">"vec2 f16tof32( ivec2 i2 ){ return f16tof32( uvec2( i2 ) ); }\n"</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="stringliteral">"vec3 f16tof32( ivec3 i3 ){ return f16tof32( uvec3( i3 ) ); }\n"</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="stringliteral">"vec4 f16tof32( ivec4 i4 ){ return f16tof32( uvec4( i4 ) ); }\n"</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="stringliteral">"uint f32tof16( float f )\n"</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="stringliteral">" return packHalf2x16( vec2( f, 0.0 ) ) & 0x0ffffu; \n"</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="stringliteral">"uvec2 f32tof16( vec2 f2 )\n"</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="stringliteral">" uint u2PackedHalf = packHalf2x16( f2 );\n"</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="stringliteral">" return uvec2( u2PackedHalf & 0x0ffffu, u2PackedHalf >> 16u );\n"</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="stringliteral">"uvec3 f32tof16( vec3 f3 )\n"</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="stringliteral">" return uvec3( f32tof16( f3.xy ), f32tof16( f3.z ) );\n"</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="stringliteral">"uvec4 f32tof16( vec4 f4 )\n"</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="stringliteral">" return uvec4( f32tof16( f4.xy ), f32tof16( f4.zw ) );\n"</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="stringliteral">"#ifndef GL_ES // double is not supported on GLES\n"</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="stringliteral">"double asdouble(uint lowbits, uint highbits)\n"</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="stringliteral">" return packDouble2x32( uvec2( lowbits, highbits ) );\n"</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="stringliteral">"// Floating point functions\n"</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="stringliteral">"bool isfinite( float x )\n"</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="stringliteral">" return !isinf( x ) && !isnan( x );\n"</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="stringliteral">"bool2 isfinite( vec2 f2 )\n"</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="stringliteral">" return bool2( isfinite( f2.x ), isfinite( f2.y ) );\n"</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="stringliteral">"bool3 isfinite( vec3 f3 )\n"</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="stringliteral">" return bool3( isfinite( f3.xy ), isfinite( f3.z ) );\n"</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="stringliteral">"bool4 isfinite( vec4 f4 )\n"</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="stringliteral">" return bool4( isfinite( f4.xyz ), isfinite( f4.w ) );\n"</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="stringliteral">"#ifndef GL_ES\n"</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="stringliteral">" float noise( float x ){ return noise1( x ); }\n"</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="stringliteral">" vec2 noise( vec2 x ){ return noise2( x ); }\n"</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="stringliteral">" vec3 noise( vec3 x ){ return noise3( x ); }\n"</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="stringliteral">" vec4 noise( vec4 x ){ return noise4( x ); }\n"</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="stringliteral">"#else\n"</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="stringliteral">" float noise( float x ){ return 0.0; }\n"</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="stringliteral">" vec2 noise( vec2 x ){ return vec2(0.0, 0.0); }\n"</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="stringliteral">" vec3 noise( vec3 x ){ return vec3(0.0, 0.0, 0.0); }\n"</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="stringliteral">" vec4 noise( vec4 x ){ return vec4(0.0, 0.0, 0.0, 0.0); }\n"</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="stringliteral">"float log10( float x )\n"</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="stringliteral">" return log( x ) / log( 10.0 );\n"</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="stringliteral">"vec2 log10( vec2 x )\n"</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="stringliteral">" float _lg10 = log( 10.0 );\n"</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="stringliteral">" return log( x ) / vec2(_lg10, _lg10);\n"</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="stringliteral">"vec3 log10( vec3 x )\n"</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="stringliteral">" float _lg10 = log( 10.0 );\n"</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="stringliteral">" return log( x ) / vec3(_lg10, _lg10, _lg10);\n"</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="stringliteral">"vec4 log10( vec4 x )\n"</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="stringliteral">" float _lg10 = log( 10.0 );\n"</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="stringliteral">" return log( x ) / vec4(_lg10, _lg10, _lg10, _lg10);\n"</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="stringliteral">"#ifdef GL_ES\n"</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="stringliteral">"# define mad(a,b,c) ((a)*(b)+(c))\n"</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="stringliteral">"#else\n"</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="stringliteral">"# define mad fma\n"</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="stringliteral">"// Relational and logical operators\n"</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="stringliteral">"#define Less lessThan\n"</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="stringliteral">"#define LessEqual lessThanEqual\n"</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="stringliteral">"#define Greater greaterThan\n"</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="stringliteral">"#define GreaterEqual greaterThanEqual\n"</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="stringliteral">"#define Equal equal\n"</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="stringliteral">"#define NotEqual notEqual\n"</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="stringliteral">"#define Not not\n"</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="stringliteral">"bool4 And(bool4 L, bool4 R)\n"</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="stringliteral">" return bool4(L.x && R.x,\n"</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="stringliteral">" L.y && R.y,\n"</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="stringliteral">" L.z && R.z,\n"</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="stringliteral">" L.w && R.w);\n"</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="stringliteral">"bool3 And(bool3 L, bool3 R)\n"</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="stringliteral">" return bool3(L.x && R.x,\n"</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="stringliteral">" L.y && R.y,\n"</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="stringliteral">" L.z && R.z);\n"</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="stringliteral">"bool2 And(bool2 L, bool2 R)\n"</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="stringliteral">" return bool2(L.x && R.x,\n"</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="stringliteral">" L.y && R.y);\n"</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="stringliteral">"bool And(bool L, bool R)\n"</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="stringliteral">" return (L && R);\n"</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="stringliteral">"bool4 Or(bool4 L, bool4 R)\n"</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="stringliteral">" return bool4(L.x || R.x,\n"</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="stringliteral">" L.y || R.y,\n"</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="stringliteral">" L.z || R.z,\n"</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="stringliteral">" L.w || R.w);\n"</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="stringliteral">"bool3 Or(bool3 L, bool3 R)\n"</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="stringliteral">" return bool3(L.x || R.x,\n"</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="stringliteral">" L.y || R.y,\n"</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="stringliteral">" L.z || R.z);\n"</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="stringliteral">"bool2 Or(bool2 L, bool2 R)\n"</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="stringliteral">" return bool2(L.x || R.x,\n"</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="stringliteral">" L.y || R.y);\n"</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="stringliteral">"bool Or(bool L, bool R)\n"</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="stringliteral">" return (L || R);\n"</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="stringliteral">"float4 BoolToFloat( bool4 b4 )\n"</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="stringliteral">" return float4(b4.x ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="stringliteral">" b4.y ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="stringliteral">" b4.z ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="stringliteral">" b4.w ? 1.0 : 0.0);\n"</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="stringliteral">"float3 BoolToFloat( bool3 b3 )\n"</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="stringliteral">" return float3(b3.x ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="stringliteral">" b3.y ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="stringliteral">" b3.z ? 1.0 : 0.0);\n"</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="stringliteral">"float2 BoolToFloat( bool2 b2 )\n"</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="stringliteral">" return float2(b2.x ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="stringliteral">" b2.y ? 1.0 : 0.0);\n"</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="stringliteral">"float BoolToFloat( bool b )\n"</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="stringliteral">" return b ? 1.0 : 0.0;\n"</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="stringliteral">"// Synchronization functions\n"</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="stringliteral">"#ifdef COMPUTE_SHADER\n"</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="stringliteral">"// https://www.opengl.org/wiki/Memory_Model#Incoherent_memory_access\n"</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="stringliteral">"// MSDN: GroupMemoryBarrier() blocks execution of all threads \n"</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="stringliteral">"// in a group until all group SHARED accesses have been completed.\n"</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="stringliteral">"void GroupMemoryBarrier()\n"</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="stringliteral">" // OpenGL.org: groupMemoryBarrier() waits on the completion of all memory accesses \n"</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="stringliteral">" // performed by an invocation of a compute shader relative to the same access performed \n"</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="stringliteral">" // by other invocations in the same work group and then returns with no other effect.\n"</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="stringliteral">" // groupMemoryBarrier() acts like memoryBarrier(), ordering memory writes for all kinds \n"</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="stringliteral">" // of variables, but it only orders read/writes for the current work group.\n"</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="stringliteral">" groupMemoryBarrier();\n"</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierShared() waits on the completion of \n"</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="stringliteral">" // all memory accesses resulting from the use of SHARED variables\n"</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="stringliteral">" // and then returns with no other effect. \n"</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="stringliteral">" memoryBarrierShared();\n"</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="stringliteral">"// MSDN: GroupMemoryBarrierWithGroupSync() blocks execution of all \n"</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="stringliteral">"// threads in a group until all memory accesses have been completed \n"</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="stringliteral">"// and all threads in the group have reached this call.\n"</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="stringliteral">"void GroupMemoryBarrierWithGroupSync()\n"</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="stringliteral">" // Issue memory barrier first!\n"</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="stringliteral">" GroupMemoryBarrier();\n"</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="stringliteral">" barrier();\n"</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="stringliteral">"// MSDN: DeviceMemoryBarrier() blocks execution of all threads \n"</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="stringliteral">"// in a group until all device memory accesses have been completed.\n"</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="stringliteral">"void DeviceMemoryBarrier()\n"</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="stringliteral">" // Call all memory barriers except for shared memory\n"</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="stringliteral">" // Do we need to call groupMemoryBarrier() ????? \n"</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierBuffer() waits on the completion of \n"</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="stringliteral">" // all memory accesses resulting from the use of BUFFER variables \n"</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="stringliteral">" // and then returns with no other effect\n"</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="stringliteral">" memoryBarrierBuffer();\n"</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierImage() waits on the completion of all \n"</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="stringliteral">" // memory accesses resulting from the use of IMAGE variables and then \n"</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="stringliteral">" // returns with no other effect. \n"</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="stringliteral">" memoryBarrierImage();\n"</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierAtomicCounter() waits on the completion of \n"</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="stringliteral">" // all accesses resulting from the use of ATOMIC COUNTERS and then returns \n"</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="stringliteral">" // with no other effect. \n"</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="stringliteral">" memoryBarrierAtomicCounter();\n"</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="stringliteral">"// MSDN: DeviceMemoryBarrierWithGroupSync() blocks execution of \n"</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="stringliteral">"// all threads in a group until all device memory accesses have \n"</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="stringliteral">"// been completed and all threads in the group have reached this call.\n"</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="stringliteral">"void DeviceMemoryBarrierWithGroupSync()\n"</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="stringliteral">" DeviceMemoryBarrier();\n"</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="stringliteral">" barrier();\n"</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="stringliteral">"// MSDN: AllMemoryBarrier() blocks execution of all threads in a \n"</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="stringliteral">"// group until all memory accesses have been completed.\n"</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="stringliteral">"void AllMemoryBarrier()\n"</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="stringliteral">" // OpenGL.org: memoryBarrier() waits on the completion of ALL \n"</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="stringliteral">" // memory accesses resulting from the use of IMAGE variables or \n"</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="stringliteral">" // ATOMIC COUNTERS and then returns with no other effect.\n"</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="stringliteral">" memoryBarrier();\n"</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="stringliteral">" // NOTE: nothing is said about buffer memory and shared memory,\n"</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="stringliteral">" // so call memoryBarrierBuffer() and memoryBarrierShared() for safety\n"</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierBuffer() waits on the completion of \n"</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="stringliteral">" // all memory accesses resulting from the use of BUFFER variables \n"</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="stringliteral">" // and then returns with no other effect\n"</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="stringliteral">" memoryBarrierBuffer();\n"</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierShared() waits on the completion of \n"</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="stringliteral">" // all memory accesses resulting from the use of SHARED variables\n"</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="stringliteral">" // and then returns with no other effect. \n"</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="stringliteral">" memoryBarrierShared();\n"</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="stringliteral">" // Call all memory barrier functions. They should have no effect\n"</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="stringliteral">" // if everything is synchronized.\n"</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierImage() waits on the completion of all \n"</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="stringliteral">" // memory accesses resulting from the use of IMAGE variables and then \n"</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="stringliteral">" // returns with no other effect. \n"</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="stringliteral">" memoryBarrierImage();\n"</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierAtomicCounter() waits on the completion of \n"</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="stringliteral">" // all accesses resulting from the use of ATOMIC COUNTERS and then returns \n"</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="stringliteral">" // with no other effect. \n"</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="stringliteral">" memoryBarrierAtomicCounter();\n"</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="stringliteral">" // groupMemoryBarrier waits on the completion of all memory accesses performed \n"</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="stringliteral">" // by an invocation of a compute shader relative to the same access performed by \n"</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="stringliteral">" // other invocations in the same work group and then returns with no other effect.\n"</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="stringliteral">" groupMemoryBarrier();\n"</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="stringliteral">"// MSDN: AllMemoryBarrierWithGroupSync() blocks execution of all \n"</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="stringliteral">"// threads in a group until all memory accesses have been completed \n"</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="stringliteral">"// and all threads in the group have reached this call.\n"</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="stringliteral">"void AllMemoryBarrierWithGroupSync()\n"</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="stringliteral">" AllMemoryBarrier();\n"</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="stringliteral">" barrier();\n"</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="stringliteral">"#else\n"</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="stringliteral">"void AllMemoryBarrier(){}\n"</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="stringliteral">"void AllMemoryBarrierWithGroupSync(){}\n"</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="stringliteral">"void DeviceMemoryBarrier(){}\n"</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="stringliteral">"void DeviceMemoryBarrierWithGroupSync(){}\n"</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="stringliteral">"void GroupMemoryBarrier(){}\n"</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="stringliteral">"void GroupMemoryBarrierWithGroupSync(){}\n"</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="stringliteral">"// Type conversion functions\n"</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="stringliteral">"vec4 _ExpandVector( float x ){ return vec4( x, x, x, x ); }\n"</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="stringliteral">"vec4 _ExpandVector( vec2 f2 ){ return vec4( f2.x, f2.y, 0.0, 0.0 ); }\n"</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="stringliteral">"vec4 _ExpandVector( vec3 f3 ){ return vec4( f3.x, f3.y, f3.z, 0.0 ); }\n"</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="stringliteral">"vec4 _ExpandVector( vec4 f4 ){ return vec4( f4.x, f4.y, f4.z, f4.w ); }\n"</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="stringliteral">"ivec4 _ExpandVector( int x ){ return ivec4( x, x, x, x ); }\n"</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="stringliteral">"ivec4 _ExpandVector( ivec2 i2 ){ return ivec4( i2.x, i2.y, 0, 0 ); }\n"</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="stringliteral">"ivec4 _ExpandVector( ivec3 i3 ){ return ivec4( i3.x, i3.y, i3.z, 0 ); }\n"</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="stringliteral">"ivec4 _ExpandVector( ivec4 i4 ){ return ivec4( i4.x, i4.y, i4.z, i4.w ); }\n"</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="stringliteral">"uvec4 _ExpandVector( uint x ){ return uvec4( x, x, x, x ); }\n"</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="stringliteral">"uvec4 _ExpandVector( uvec2 u2 ){ return uvec4( u2.x, u2.y, 0u, 0u ); }\n"</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="stringliteral">"uvec4 _ExpandVector( uvec3 u3 ){ return uvec4( u3.x, u3.y, u3.z, 0u ); }\n"</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="stringliteral">"uvec4 _ExpandVector( uvec4 u4 ){ return uvec4( u4.x, u4.y, u4.z, u4.w ); }\n"</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="stringliteral">"bvec4 _ExpandVector( bool x ){ return bvec4( x, x, x, x ); }\n"</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="stringliteral">"bvec4 _ExpandVector( bvec2 b2 ){ return bvec4( b2.x, b2.y, false, false ); }\n"</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="stringliteral">"bvec4 _ExpandVector( bvec3 b3 ){ return bvec4( b3.x, b3.y, b3.z, false ); }\n"</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="stringliteral">"bvec4 _ExpandVector( bvec4 b4 ){ return bvec4( b4.x, b4.y, b4.z, b4.w ); }\n"</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="stringliteral">"void _ResizeVector(out vec4 outVec4, in vec4 inVec4){outVec4 = inVec4;}\n"</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="stringliteral">"void _ResizeVector(out vec3 outVec3, in vec4 inVec4){outVec3 = inVec4.xyz;}\n"</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="stringliteral">"void _ResizeVector(out vec2 outVec2, in vec4 inVec4){outVec2 = inVec4.xy;}\n"</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="stringliteral">"void _ResizeVector(out float outFlt, in vec4 inVec4){outFlt = inVec4.x;}\n"</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="stringliteral">"void _ResizeVector(out vec4 outVec4, in vec3 inVec3){outVec4 = vec4(inVec3, 0.0);}\n"</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="stringliteral">"void _ResizeVector(out vec3 outVec3, in vec3 inVec3){outVec3 = inVec3;}\n"</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="stringliteral">"void _ResizeVector(out vec2 outVec2, in vec3 inVec3){outVec2 = inVec3.xy;}\n"</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="stringliteral">"void _ResizeVector(out float outFlt, in vec3 inVec3){outFlt = inVec3.x;}\n"</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="stringliteral">"void _ResizeVector(out vec4 outVec4, in vec2 inVec2){outVec4 = vec4(inVec2, 0.0, 0.0);}\n"</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="stringliteral">"void _ResizeVector(out vec3 outVec3, in vec2 inVec2){outVec3 = vec3(inVec2, 0.0);}\n"</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="stringliteral">"void _ResizeVector(out vec2 outVec2, in vec2 inVec2){outVec2 = inVec2;}\n"</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="stringliteral">"void _ResizeVector(out float outFlt, in vec2 inVec2){outFlt = inVec2.x;}\n"</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="stringliteral">"void _ResizeVector(out vec4 outVec4, in float v){outVec4 = vec4(v, 0.0, 0.0, 0.0);}\n"</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="stringliteral">"void _ResizeVector(out vec3 outVec3, in float v){outVec3 = vec3(v, 0.0, 0.0);}\n"</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="stringliteral">"void _ResizeVector(out vec2 outVec2, in float v){outVec2 = vec2(v, 0.0);}\n"</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="stringliteral">"void _ResizeVector(out float outFlt, in float v){outFlt = v;}\n"</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="stringliteral">"void _TypeConvertStore( out float Dst, in int Src ){ Dst = float( Src ); }\n"</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="stringliteral">"void _TypeConvertStore( out float Dst, in uint Src ){ Dst = float( Src ); }\n"</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="stringliteral">"void _TypeConvertStore( out float Dst, in float Src ){ Dst = float( Src ); }\n"</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="stringliteral">"void _TypeConvertStore( out uint Dst, in int Src ){ Dst = uint( Src ); }\n"</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="stringliteral">"void _TypeConvertStore( out uint Dst, in uint Src ){ Dst = uint( Src ); }\n"</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="stringliteral">"void _TypeConvertStore( out uint Dst, in float Src ){ Dst = uint( Src ); }\n"</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="stringliteral">"void _TypeConvertStore( out int Dst, in int Src ){ Dst = int( Src ); }\n"</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="stringliteral">"void _TypeConvertStore( out int Dst, in uint Src ){ Dst = int( Src ); }\n"</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="stringliteral">"void _TypeConvertStore( out int Dst, in float Src ){ Dst = int( Src ); }\n"</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="stringliteral">"int _ToInt( int x ) { return int(x); }\n"</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="stringliteral">"int _ToInt( uint x ) { return int(x); }\n"</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="stringliteral">"int _ToInt( float x ){ return int(x); }\n"</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="stringliteral">"int _ToInt( bool x ) { return x ? 1 : 0; }\n"</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="stringliteral">"float _ToFloat( int x ) { return float(x); }\n"</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="stringliteral">"float _ToFloat( uint x ) { return float(x); }\n"</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="stringliteral">"float _ToFloat( float x ){ return float(x); }\n"</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="stringliteral">"float _ToFloat( bool x ) { return x ? 1.0 : 0.0;}\n"</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="stringliteral">"uint _ToUint( int x ) { return uint(x); }\n"</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> <span class="stringliteral">"uint _ToUint( uint x ) { return uint(x); }\n"</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="stringliteral">"uint _ToUint( float x ){ return uint(x); }\n"</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="stringliteral">"uint _ToUint( bool x ) { return x ? 1u : 0u; }\n"</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="stringliteral">"bool _ToBool( int x ) { return x != 0 ? true : false; }\n"</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="stringliteral">"bool _ToBool( uint x ) { return x != 0u ? true : false; }\n"</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="stringliteral">"bool _ToBool( float x ){ return x != 0.0 ? true : false; }\n"</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="stringliteral">"bool _ToBool( bool x ) { return x; }\n"</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="stringliteral">"#define _ToVec2(x,y) vec2(_ToFloat(x), _ToFloat(y))\n"</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <span class="stringliteral">"#define _ToVec3(x,y,z) vec3(_ToFloat(x), _ToFloat(y), _ToFloat(z))\n"</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="stringliteral">"#define _ToVec4(x,y,z,w) vec4(_ToFloat(x), _ToFloat(y), _ToFloat(z), _ToFloat(w))\n"</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> <span class="stringliteral">"#define _ToIvec2(x,y) ivec2(_ToInt(x), _ToInt(y))\n"</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="stringliteral">"#define _ToIvec3(x,y,z) ivec3(_ToInt(x), _ToInt(y), _ToInt(z))\n"</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> <span class="stringliteral">"#define _ToIvec4(x,y,z,w) ivec4(_ToInt(x), _ToInt(y), _ToInt(z), _ToInt(w))\n"</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="stringliteral">"#define _ToUvec2(x,y) uvec2(_ToUint(x), _ToUint(y))\n"</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="stringliteral">"#define _ToUvec3(x,y,z) uvec3(_ToUint(x), _ToUint(y), _ToUint(z))\n"</span></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <span class="stringliteral">"#define _ToUvec4(x,y,z,w) uvec4(_ToUint(x), _ToUint(y), _ToUint(z), _ToUint(w))\n"</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="stringliteral">"#define _ToBvec2(x,y) bvec2(_ToBool(x), _ToBool(y))\n"</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> <span class="stringliteral">"#define _ToBvec3(x,y,z) bvec3(_ToBool(x), _ToBool(y), _ToBool(z))\n"</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="stringliteral">"#define _ToBvec4(x,y,z,w) bvec4(_ToBool(x), _ToBool(y), _ToBool(z), _ToBool(w))\n"</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="stringliteral">"int _ToIvec( uint u1 ){ return _ToInt( u1 ); }\n"</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> <span class="stringliteral">"ivec2 _ToIvec( uvec2 u2 ){ return _ToIvec2( u2.x, u2.y ); }\n"</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> <span class="stringliteral">"ivec3 _ToIvec( uvec3 u3 ){ return _ToIvec3( u3.x, u3.y, u3.z ); }\n"</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="stringliteral">"ivec4 _ToIvec( uvec4 u4 ){ return _ToIvec4( u4.x, u4.y, u4.z, u4.w ); }\n"</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="stringliteral">"int _ToIvec( int i1 ){ return i1; }\n"</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <span class="stringliteral">"ivec2 _ToIvec( ivec2 i2 ){ return i2; }\n"</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="stringliteral">"ivec3 _ToIvec( ivec3 i3 ){ return i3; }\n"</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> <span class="stringliteral">"ivec4 _ToIvec( ivec4 i4 ){ return i4; }\n"</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="stringliteral">"int _ToIvec( float f1 ){ return _ToInt( f1 ); }\n"</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="stringliteral">"ivec2 _ToIvec( vec2 f2 ){ return _ToIvec2( f2.x, f2.y ); }\n"</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> <span class="stringliteral">"ivec3 _ToIvec( vec3 f3 ){ return _ToIvec3( f3.x, f3.y, f3.z ); }\n"</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> <span class="stringliteral">"ivec4 _ToIvec( vec4 f4 ){ return _ToIvec4( f4.x, f4.y, f4.z, f4.w ); }\n"</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="stringliteral">"float _ToVec( uint u1 ){ return _ToFloat(u1); }\n"</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="stringliteral">"vec2 _ToVec( uvec2 u2 ){ return _ToVec2( u2.x, u2.y ); }\n"</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="stringliteral">"vec3 _ToVec( uvec3 u3 ){ return _ToVec3( u3.x, u3.y, u3.z ); }\n"</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> <span class="stringliteral">"vec4 _ToVec( uvec4 u4 ){ return _ToVec4( u4.x, u4.y, u4.z, u4.w ); }\n"</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="stringliteral">"float _ToVec( int i1 ){ return _ToFloat(i1); }\n"</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="stringliteral">"vec2 _ToVec( ivec2 i2 ){ return _ToVec2( i2.x, i2.y ); }\n"</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> <span class="stringliteral">"vec3 _ToVec( ivec3 i3 ){ return _ToVec3( i3.x, i3.y, i3.z ); }\n"</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="stringliteral">"vec4 _ToVec( ivec4 i4 ){ return _ToVec4( i4.x, i4.y, i4.z, i4.w ); }\n"</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="stringliteral">"float _ToVec( float f1 ){ return f1; }\n"</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="stringliteral">"vec2 _ToVec( vec2 f2 ){ return f2; }\n"</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> <span class="stringliteral">"vec3 _ToVec( vec3 f3 ){ return f3; }\n"</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="stringliteral">"vec4 _ToVec( vec4 f4 ){ return f4; }\n"</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="stringliteral">"uint _ToUvec( uint u1 ){ return u1; }\n"</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="stringliteral">"uvec2 _ToUvec( uvec2 u2 ){ return u2; }\n"</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="stringliteral">"uvec3 _ToUvec( uvec3 u3 ){ return u3; }\n"</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="stringliteral">"uvec4 _ToUvec( uvec4 u4 ){ return u4; }\n"</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="stringliteral">"uint _ToUvec( int i1 ){ return _ToUint( i1 ); }\n"</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="stringliteral">"uvec2 _ToUvec( ivec2 i2 ){ return _ToUvec2( i2.x, i2.y ); }\n"</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="stringliteral">"uvec3 _ToUvec( ivec3 i3 ){ return _ToUvec3( i3.x, i3.y, i3.z ); }\n"</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="stringliteral">"uvec4 _ToUvec( ivec4 i4 ){ return _ToUvec4( i4.x, i4.y, i4.z, i4.w ); }\n"</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="stringliteral">"uint _ToUvec( float f1 ){ return _ToUint( f1 ); }\n"</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="stringliteral">"uvec2 _ToUvec( vec2 f2 ){ return _ToUvec2( f2.x, f2.y ); }\n"</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <span class="stringliteral">"uvec3 _ToUvec( vec3 f3 ){ return _ToUvec3( f3.x, f3.y, f3.z ); }\n"</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="stringliteral">"uvec4 _ToUvec( vec4 f4 ){ return _ToUvec4( f4.x, f4.y, f4.z, f4.w ); }\n"</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="stringliteral">"// TEXTURE FUNCTION STUB MACROS\n"</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="stringliteral">"// https://www.opengl.org/wiki/Sampler_(GLSL)\n"</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> <span class="stringliteral">"// Texture size queries\n"</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> <span class="stringliteral">"// https://www.opengl.org/sdk/docs/man/html/textureSize.xhtml\n"</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="stringliteral">"// textureSize returns the dimensions of level lod (if present) of the texture bound to sampler. \n"</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="stringliteral">"// The components in the return value are filled in, in order, with the width, height and depth \n"</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="stringliteral">"// of the texture. For the array forms, the last component of the return value is the number of \n"</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="stringliteral">"// layers in the texture array.\n"</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="stringliteral">"//#if !(defined(DESKTOP_GL) && __VERSION__ >= 430)\n"</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> <span class="stringliteral">"# define textureQueryLevels(x) 0 // Only supported on 4.3+\n"</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="stringliteral">"//#endif\n"</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="stringliteral">"#define GetTex1DDimensions_1(Sampler, Width)\\\n"</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="stringliteral">" _TypeConvertStore( Width, textureSize(Sampler, 0) );\\\n"</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="stringliteral">"#define GetTex1DDimensions_3(Sampler, MipLevel, Width, NumberOfMipLevels)\\\n"</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="stringliteral">" _TypeConvertStore( Width, textureSize(Sampler, _ToInt(MipLevel)) ); \\\n"</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="stringliteral">" _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) ); \\\n"</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="stringliteral">"#define GetTex1DArrDimensions_2(Sampler, Width, Elements)\\\n"</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="stringliteral">" ivec2 i2Size = textureSize(Sampler, 0); \\\n"</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x );\\\n"</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="stringliteral">" _TypeConvertStore( Elements, i2Size.y );\\\n"</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="stringliteral">"#define GetTex1DArrDimensions_4(Sampler, MipLevel, Width, Elements, NumberOfMipLevels)\\\n"</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="stringliteral">" ivec2 i2Size = textureSize(Sampler, _ToInt(MipLevel)); \\\n"</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="stringliteral">" _TypeConvertStore( Elements, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="stringliteral">" _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\\\n"</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="stringliteral">"#define GetTex2DDimensions_2(Sampler, Width, Height)\\\n"</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="stringliteral">" ivec2 i2Size = textureSize(Sampler, 0); \\\n"</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="stringliteral">" _TypeConvertStore( Height, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <span class="stringliteral">"#define GetTex2DDimensions_4(Sampler, MipLevel, Width, Height, NumberOfMipLevels)\\\n"</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="stringliteral">" ivec2 i2Size = textureSize(Sampler, _ToInt(MipLevel) ); \\\n"</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> <span class="stringliteral">" _TypeConvertStore( Height, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="stringliteral">" _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\\\n"</span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="stringliteral">"#define GetTex2DArrDimensions_3(Sampler, Width, Height, Elements)\\\n"</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="stringliteral">" ivec3 i3Size = textureSize(Sampler, 0); \\\n"</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x ); \\\n"</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y ); \\\n"</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="stringliteral">" _TypeConvertStore( Elements,i3Size.z ); \\\n"</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> <span class="stringliteral">"#define GetTex2DArrDimensions_5(Sampler, MipLevel, Width, Height, Elements, NumberOfMipLevels)\\\n"</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="stringliteral">" ivec3 i3Size = textureSize(Sampler, _ToInt(MipLevel)); \\\n"</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x ); \\\n"</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y ); \\\n"</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="stringliteral">" _TypeConvertStore( Elements, i3Size.z ); \\\n"</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> <span class="stringliteral">" _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\\\n"</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="stringliteral">"#define GetTex3DDimensions_3(Sampler, Width, Height, Depth)\\\n"</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="stringliteral">" ivec3 i3Size = textureSize(Sampler, 0); \\\n"</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x ); \\\n"</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y ); \\\n"</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="stringliteral">" _TypeConvertStore( Depth, i3Size.z ); \\\n"</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> <span class="stringliteral">"#define GetTex3DDimensions_5(Sampler, MipLevel, Width, Height, Depth, NumberOfMipLevels)\\\n"</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="stringliteral">" ivec3 i3Size = textureSize(Sampler, _ToInt(MipLevel)); \\\n"</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x ); \\\n"</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y ); \\\n"</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span> <span class="stringliteral">" _TypeConvertStore( Depth, i3Size.z ); \\\n"</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> <span class="stringliteral">" _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\\\n"</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="stringliteral">"#define GetTex2DMSDimensions_3(Sampler, Width, Height, NumberOfSamples)\\\n"</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> <span class="stringliteral">" ivec2 i2Size = textureSize(Sampler); \\\n"</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <span class="stringliteral">" _TypeConvertStore( Height, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="stringliteral">" _TypeConvertStore( NumberOfSamples, 0 );\\\n"</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="stringliteral">"#define GetTex2DMSArrDimensions_4(Sampler, Width, Height, Elements, NumberOfSamples)\\\n"</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> <span class="stringliteral">" ivec3 i3Size = textureSize(Sampler); \\\n"</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x );\\\n"</span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y );\\\n"</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="stringliteral">" _TypeConvertStore( Elements, i3Size.z );\\\n"</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span> <span class="stringliteral">" _TypeConvertStore( NumberOfSamples, 0 );\\\n"</span></div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> <span class="stringliteral">"// https://www.opengl.org/sdk/docs/man/html/imageSize.xhtml\n"</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="stringliteral">"// imageSize returns the dimensions of the image bound to image. The components in the \n"</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="stringliteral">"// return value are filled in, in order, with the width, height and depth of the image. \n"</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="stringliteral">"// For the array forms, the last component of the return value is the number of layers \n"</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="stringliteral">"// in the texture array.\n"</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="stringliteral">"#define GetRWTex1DDimensions_1(Tex, Width)\\\n"</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> <span class="stringliteral">" _TypeConvertStore( Width, imageSize(Tex) ); \\\n"</span></div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="stringliteral">"#define GetRWTex1DArrDimensions_2(Tex, Width, Elements)\\\n"</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="stringliteral">" ivec2 i2Size = imageSize(Tex); \\\n"</span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="stringliteral">" _TypeConvertStore( Elements, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="stringliteral">"#define GetRWTex2DDimensions_2(Tex, Width, Height)\\\n"</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> <span class="stringliteral">" ivec2 i2Size = imageSize(Tex); \\\n"</span></div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> <span class="stringliteral">" _TypeConvertStore( Height, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="stringliteral">"#define GetRWTex2DArrDimensions_3(Tex, Width, Height, Elements)\\\n"</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="stringliteral">" ivec3 i3Size = imageSize(Tex); \\\n"</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x );\\\n"</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y );\\\n"</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="stringliteral">" _TypeConvertStore( Elements, i3Size.z );\\\n"</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="stringliteral">"#define GetRWTex3DDimensions_3(Tex, Width, Height, Depth)\\\n"</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="stringliteral">" ivec3 i3Size = imageSize(Tex); \\\n"</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x ); \\\n"</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y ); \\\n"</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="stringliteral">" _TypeConvertStore( Depth, i3Size.z ); \\\n"</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="stringliteral">"// Texture sampling operations\n"</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="stringliteral">"// IMPORTANT NOTE ABOUT OFFSET\n"</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="stringliteral">"// Offset parameter to all texture sampling functions must be a constant expression.\n"</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="stringliteral">"// If it is not, the shader will be successfully compiled, HOWEVER the value of Offset \n"</span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="stringliteral">"// will silently be zero. \n"</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="stringliteral">"//\n"</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="stringliteral">"// A constant expression in GLSL is defined as follows:\n"</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="stringliteral">"// * A literal value.\n"</span></div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="stringliteral">"// * A const-qualified variable with an explicit initializer (so not a function parameter).\n"</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="stringliteral">"// * The result of the length() function of an array, but only if the array has an explicit size.\n"</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="stringliteral">"// * The result of most operators, so long as all the operands are themselves constant expressions. \n"</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span> <span class="stringliteral">"// The operators not on this list are any assignment operators (+= and so forth), and the comma operator.\n"</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="stringliteral">"// * The result of a constructor for a type, but only if all of the arguments to the constructor are \n"</span></div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="stringliteral">"// themselves constant expressions.\n"</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="stringliteral">"// * The return value of any built-in function, but only if all of the arguments to the function are \n"</span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="stringliteral">"// themselves constant expressions. Opaque Types are never constant expressions. Note that the \n"</span></div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="stringliteral">"// functions dFdx, dFdy, and fwidth will return 0, when used in a context that requires a constant \n"</span></div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="stringliteral">"// expression (such as a const variable initializer).\n"</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="stringliteral">"// \n"</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="stringliteral">"// The list above does not include return value of a function, even when the value is compile-time expression.\n"</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="stringliteral">"// As a result, we cannot use type conversion functions for Offset parameter.\n"</span></div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="stringliteral">"// In all texture sampling functions, the last component of Coords is used as Dsub and the array layer is specified \n"</span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> <span class="stringliteral">"// in the second to last component of Coords. (The second component of Coords is unused for 1D shadow lookups.)\n"</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="stringliteral">"// For cube array textures, Dsub is specified as a separate parameter\n"</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="stringliteral">"// mip\n"</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="stringliteral">"#define SampleCmpLevel0Tex1D_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, 0.0, CompareValue), 0.0)\n"</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> <span class="stringliteral">"#define SampleCmpLevel0Tex1DArr_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0)\n"</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="stringliteral">"#define SampleCmpLevel0Tex2D_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0)\n"</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="stringliteral">"#define SampleCmpLevel0Tex2DArr_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for sampler2DArrayShadow\n"</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="stringliteral">"#define SampleCmpLevel0TexCube_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for samplerCubeShadow\n"</span></div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> <span class="stringliteral">"#define SampleCmpLevel0TexCubeArr_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for samplerCubeArrayShadow\n"</span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="stringliteral">"// mip\n"</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="stringliteral">"#define SampleCmpLevel0Tex1D_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, 0.0, CompareValue), 0.0, int(Offset))\n"</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="stringliteral">"#define SampleCmpLevel0Tex1DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0, int(Offset))\n"</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="stringliteral">"#define SampleCmpLevel0Tex2D_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0, ivec2((Offset).xy))\n"</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="stringliteral">"#define SampleCmpLevel0Tex2DArr_4(Tex, Sampler, Coords, CompareValue, Offset) 0.0 // No textureLodOffset for sampler2DArrayShadow\n"</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> <span class="stringliteral">"// https://www.opengl.org/sdk/docs/man/html/texture.xhtml - note: there are many mistakes on the page\n"</span></div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="stringliteral">"#ifdef FRAGMENT_SHADER\n"</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="stringliteral">"# define Sample_2(Tex, Sampler, Coords) texture (Tex, _ToVec(Coords))\n"</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="stringliteral">"# define Sample_3(Tex, Sampler, Coords, Offset) textureOffset(Tex, _ToVec(Coords), Offset)\n"</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <span class="stringliteral">"# define SampleBias_3(Tex, Sampler, Coords, Bias) texture (Tex, _ToVec(Coords), _ToFloat(Bias))\n"</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> <span class="stringliteral">"# define SampleBias_4(Tex, Sampler, Coords, Bias, Offset) textureOffset(Tex, _ToVec(Coords), Offset, _ToFloat(Bias))\n"</span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> <span class="stringliteral">"# define SampleCmpTex1D_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, 0.0, CompareValue))\n"</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> <span class="stringliteral">"# define SampleCmpTex1DArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue))\n"</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> <span class="stringliteral">"# define SampleCmpTex2D_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue))\n"</span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="stringliteral">"# define SampleCmpTex2DArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue))\n"</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="stringliteral">"# define SampleCmpTexCube_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue))\n"</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> <span class="stringliteral">"# define SampleCmpTexCubeArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, (Coords).w), _ToFloat(CompareValue))\n"</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="stringliteral">"# define SampleCmpTex1D_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, 0.0, CompareValue), int(Offset))\n"</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="stringliteral">"# define SampleCmpTex1DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), int(Offset))\n"</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> <span class="stringliteral">"# define SampleCmpTex2D_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), ivec2((Offset).xy))\n"</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="stringliteral">"# define SampleCmpTex2DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue), ivec2((Offset).xy))\n"</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> <span class="stringliteral">"#else\n"</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <span class="stringliteral">"// Derivatives are only available in fragment shader. GLSL compiler fails when it\n"</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span> <span class="stringliteral">"// encounters texture() or textureOffset() instructions in other types of shaders. So\n"</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="stringliteral">"// to let the shader be compiled and to have something meaningful, replace such operations\n"</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="stringliteral">"// with textureLod() and textureLodOffset()\n"</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> <span class="stringliteral">"# define Sample_2(Tex, Sampler, Coords) textureLod (Tex, _ToVec(Coords), 0.0)\n"</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <span class="stringliteral">"# define Sample_3(Tex, Sampler, Coords, Offset) textureLodOffset(Tex, _ToVec(Coords), 0.0, Offset)\n"</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> <span class="stringliteral">"# define SampleBias_3(Tex, Sampler, Coords, Bias) textureLod (Tex, _ToVec(Coords), 0.0 + _ToFloat(Bias))\n"</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> <span class="stringliteral">"# define SampleBias_4(Tex, Sampler, Coords, Bias, Offset) textureLodOffset(Tex, _ToVec(Coords), 0.0 + _ToFloat(Bias), Offset)\n"</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> <span class="stringliteral">"# define SampleCmpTex1D_3 SampleCmpLevel0Tex1D_3\n"</span></div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <span class="stringliteral">"# define SampleCmpTex1DArr_3 SampleCmpLevel0Tex1DArr_3\n"</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="stringliteral">"# define SampleCmpTex2D_3 SampleCmpLevel0Tex2D_3\n"</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> <span class="stringliteral">"# define SampleCmpTex2DArr_3 SampleCmpLevel0Tex2DArr_3\n"</span></div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> <span class="stringliteral">"# define SampleCmpTexCube_3 SampleCmpLevel0TexCube_3\n"</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="stringliteral">"# define SampleCmpTexCubeArr_3 SampleCmpLevel0TexCubeArr_3\n"</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="stringliteral">"# define SampleCmpTex1D_4 SampleCmpLevel0Tex1D_4\n"</span></div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> <span class="stringliteral">"# define SampleCmpTex1DArr_4 SampleCmpLevel0Tex1DArr_4\n"</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> <span class="stringliteral">"# define SampleCmpTex2D_4 SampleCmpLevel0Tex2D_4\n"</span></div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="stringliteral">"# define SampleCmpTex2DArr_4 SampleCmpLevel0Tex2DArr_4\n"</span></div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> <span class="stringliteral">"// https://www.opengl.org/sdk/docs/man/html/textureLod.xhtml\n"</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="stringliteral">"#define SampleLevel_3(Tex, Sampler, Coords, Level) textureLod (Tex, _ToVec(Coords), _ToFloat(Level))\n"</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> <span class="stringliteral">"#define SampleLevel_4(Tex, Sampler, Coords, Level, Offset) textureLodOffset(Tex, _ToVec(Coords), _ToFloat(Level), Offset)\n"</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> <span class="stringliteral">"// https://www.opengl.org/sdk/docs/man/html/textureGrad.xhtml\n"</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> <span class="stringliteral">"#define SampleGrad_4(Tex, Sampler, Coords, DDX, DDY) textureGrad (Tex, _ToVec(Coords), _ToVec(DDX), _ToVec(DDY))\n"</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="stringliteral">"#define SampleGrad_5(Tex, Sampler, Coords, DDX, DDY, Offset) textureGradOffset(Tex, _ToVec(Coords), _ToVec(DDX), _ToVec(DDY), Offset)\n"</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> <span class="stringliteral">"// texelFetch performs a lookup of a single texel from texture coordinate P in the texture \n"</span></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> <span class="stringliteral">"// bound to sampler. The array layer is specified in the last component of P for array forms. \n"</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="stringliteral">"// The lod parameter (if present) specifies the level-of-detail from which the texel will be fetched. \n"</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> <span class="stringliteral">"// The sample specifies which sample within the texel will be returned when reading from a multi-sample texure.\n"</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="stringliteral">"#define LoadTex1D_1(Tex, Location) texelFetch (Tex, _ToInt((Location).x), _ToInt((Location).y))\n"</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <span class="stringliteral">"#define LoadTex1D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToInt((Location).x), _ToInt((Location).y), int(Offset))\n"</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="stringliteral">"#define LoadTex1DArr_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xy), _ToInt((Location).z) )\n"</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> <span class="stringliteral">"#define LoadTex1DArr_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xy), _ToInt((Location).z), int(Offset))\n"</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="stringliteral">"#define LoadTex2D_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xy), _ToInt((Location).z))\n"</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <span class="stringliteral">"#define LoadTex2D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xy), _ToInt((Location).z), ivec2( (Offset).xy) )\n"</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="stringliteral">"#define LoadTex2DArr_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xyz), _ToInt((Location).w) )\n"</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="stringliteral">"#define LoadTex2DArr_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xyz), _ToInt((Location).w), ivec2( (Offset).xy))\n"</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <span class="stringliteral">"#define LoadTex3D_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xyz), _ToInt((Location).w))\n"</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="stringliteral">"#define LoadTex3D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xyz), _ToInt((Location).w), ivec3( (Offset).xyz))\n"</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="stringliteral">"#define LoadTex2DMS_2(Tex, Location, Sample) texelFetch(Tex, _ToIvec( (Location).xy), _ToInt(Sample))\n"</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="stringliteral">"#define LoadTex2DMS_3(Tex, Location, Sample, Offset)texelFetch(Tex, _ToIvec2( (Location).x + (Offset).x, (Location).y + (Offset).y), int(Sample) ) // No texelFetchOffset for texture2DMS\n"</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> <span class="stringliteral">"#define LoadTex2DMSArr_2(Tex, Location, Sample) texelFetch(Tex, _ToIvec( (Location).xyz), _ToInt(Sample))\n"</span></div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> <span class="stringliteral">"#define LoadTex2DMSArr_3(Tex, Location, Sample, Offset)texelFetch(Tex, _ToIvec3( (Location).x + (Offset).x, (Location).y + (Offset).y, (Location).z), int(Sample)) // No texelFetchOffset for texture2DMSArray\n"</span></div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> <span class="stringliteral">"//https://www.opengl.org/sdk/docs/man/html/imageLoad.xhtml\n"</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> <span class="stringliteral">"#define LoadRWTex1D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).x) )\n"</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> <span class="stringliteral">"#define LoadRWTex1DArr_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xy) )\n"</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> <span class="stringliteral">"#define LoadRWTex2D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xy) )\n"</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> <span class="stringliteral">"#define LoadRWTex2DArr_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xyz) )\n"</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> <span class="stringliteral">"#define LoadRWTex3D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xyz) )\n"</span></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> <span class="stringliteral">"#define Gather_2(Tex, Sampler, Location) textureGather (Tex, _ToVec(Location))\n"</span></div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> <span class="stringliteral">"#define Gather_3(Tex, Sampler, Location, Offset)textureGatherOffset(Tex, _ToVec(Location), Offset)\n"</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="stringliteral">"#define GatherCmp_3(Tex, Sampler, Location, CompareVal) textureGather (Tex, _ToVec(Location), _ToFloat(CompareVal))\n"</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="stringliteral">"#define GatherCmp_4(Tex, Sampler, Location, CompareVal, Offset)textureGatherOffset(Tex, _ToVec(Location), _ToFloat(CompareVal), Offset)\n"</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="stringliteral">"// Atomic operations\n"</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="stringliteral">"#define InterlockedAddSharedVar_2(dest, value) atomicAdd(dest, value)\n"</span></div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <span class="stringliteral">"#define InterlockedAddSharedVar_3(dest, value, orig_val) orig_val = atomicAdd(dest, value)\n"</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> <span class="stringliteral">"#define InterlockedAddImage_2(img, coords, value) imageAtomicAdd(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="stringliteral">"#define InterlockedAddImage_3(img, coords, value, orig_val)orig_val = imageAtomicAdd(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span> <span class="stringliteral">"#define InterlockedAndSharedVar_2(dest, value) atomicAnd(dest, value)\n"</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> <span class="stringliteral">"#define InterlockedAndSharedVar_3(dest, value, orig_val) orig_val = atomicAnd(dest, value)\n"</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <span class="stringliteral">"#define InterlockedAndImage_2(img, coords, value) imageAtomicAnd(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> <span class="stringliteral">"#define InterlockedAndImage_3(img, coords, value, orig_val)orig_val = imageAtomicAnd(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> <span class="stringliteral">"#define InterlockedMaxSharedVar_2(dest, value) atomicMax(dest, value)\n"</span></div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> <span class="stringliteral">"#define InterlockedMaxSharedVar_3(dest, value, orig_val) orig_val = atomicMax(dest, value)\n"</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span> <span class="stringliteral">"#define InterlockedMaxImage_2(img, coords, value) imageAtomicMax(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="stringliteral">"#define InterlockedMaxImage_3(img, coords, value, orig_val)orig_val = imageAtomicMax(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="stringliteral">"#define InterlockedMinSharedVar_2(dest, value) atomicMin(dest, value)\n"</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="stringliteral">"#define InterlockedMinSharedVar_3(dest, value, orig_val) orig_val = atomicMin(dest, value)\n"</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span> <span class="stringliteral">"#define InterlockedMinImage_2(img, coords, value) imageAtomicMin(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="stringliteral">"#define InterlockedMinImage_3(img, coords, value, orig_val)orig_val = imageAtomicMin(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> <span class="stringliteral">"#define InterlockedOrSharedVar_2(dest, value) atomicOr(dest, value)\n"</span></div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="stringliteral">"#define InterlockedOrSharedVar_3(dest, value, orig_val) orig_val = atomicOr(dest, value)\n"</span></div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="stringliteral">"#define InterlockedOrImage_2(img, coords, value) imageAtomicOr(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="stringliteral">"#define InterlockedOrImage_3(img, coords, value, orig_val)orig_val = imageAtomicOr(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span> <span class="stringliteral">"#define InterlockedXorSharedVar_2(dest, value) atomicXor(dest, value)\n"</span></div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> <span class="stringliteral">"#define InterlockedXorSharedVar_3(dest, value, orig_val) orig_val = atomicXor(dest, value)\n"</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="stringliteral">"#define InterlockedXorImage_2(img, coords, value) imageAtomicXor(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> <span class="stringliteral">"#define InterlockedXorImage_3(img, coords, value, orig_val)orig_val = imageAtomicXor(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> <span class="stringliteral">"// There is actually no InterlockedExchange() with 2 arguments\n"</span></div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> <span class="stringliteral">"#define InterlockedExchangeSharedVar_2(dest, value) atomicExchange(dest, value)\n"</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span> <span class="stringliteral">"#define InterlockedExchangeSharedVar_3(dest, value, orig_val) orig_val = atomicExchange(dest, value)\n"</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> <span class="stringliteral">"#define InterlockedExchangeImage_2(img, coords, value) imageAtomicExchange(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> <span class="stringliteral">"#define InterlockedExchangeImage_3(img, coords, value, orig_val)orig_val = imageAtomicExchange(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="stringliteral">"//uint imageAtomicCompSwap( image img, IVec P, nint compare, nint data);\n"</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span> <span class="stringliteral">"//void InterlockedCompareExchange( in R dest, in T compare_value, in T value, out T original_value);\n"</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="stringliteral">"#define InterlockedCompareExchangeSharedVar_4(dest, cmp_val, value, orig_val) orig_val = atomicCompSwap(dest, cmp_val, value)\n"</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> <span class="stringliteral">"#define InterlockedCompareExchangeImage_4(img, coords, cmp_val, value, orig_val) orig_val = imageAtomicCompSwap(img, _ToIvec(coords), cmp_val, value)\n"</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> <span class="stringliteral">"#define InterlockedCompareStoreSharedVar_3(dest, cmp_val, value) atomicCompSwap(dest, cmp_val, value)\n"</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="stringliteral">"#define InterlockedCompareStoreImage_3(img, coords, cmp_val, value)imageAtomicCompSwap(img, _ToIvec(coords), cmp_val, value)\n"</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="stringliteral">"// Swizzling macros\n"</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="stringliteral">"#define _SWIZZLE0\n"</span></div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> <span class="stringliteral">"#define _SWIZZLE1 .x\n"</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> <span class="stringliteral">"#define _SWIZZLE2 .xy\n"</span></div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> <span class="stringliteral">"#define _SWIZZLE3 .xyz\n"</span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> <span class="stringliteral">"#define _SWIZZLE4 .xyzw\n"</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> <span class="stringliteral">"// Helper functions\n"</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> <span class="stringliteral">"float2 NormalizedDeviceXYToTexUV( float2 f2ProjSpaceXY )\n"</span></div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> <span class="stringliteral">" return float2(0.5,0.5) + float2(0.5,0.5) * f2ProjSpaceXY.xy;\n"</span></div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> <span class="stringliteral">"float NormalizedDeviceZToDepth(float fNDC_Z)\n"</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> <span class="stringliteral">" return fNDC_Z * 0.5 + 0.5; // [-1, +1] -> [0, 1]\n"</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> <span class="stringliteral">"float DepthToNormalizedDeviceZ(float fDepth)\n"</span></div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> <span class="stringliteral">" return fDepth * 2.0 - 1.0; // [0, 1] -> [-1, +1]\n"</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <span class="stringliteral">"#define F3NDC_XYZ_TO_UVD_SCALE float3(0.5, 0.5, 0.5)\n"</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> <span class="stringliteral">"#define NDC_MIN_Z -1.0 // Minimal z in the normalized device space\n"</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> <span class="stringliteral">"#define MATRIX_ELEMENT(mat, row, col) mat[col][row]\n"</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="stringliteral">"// ---------------------------------- Vertex shader ----------------------------------\n"</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="stringliteral">"#ifdef VERTEX_SHADER\n"</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="stringliteral">"#ifndef GL_ES\n"</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> <span class="stringliteral">"out gl_PerVertex\n"</span></div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="stringliteral">"};\n"</span></div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> <span class="stringliteral">"#define _GET_GL_VERTEX_ID(VertexId)_TypeConvertStore(VertexId, gl_VertexID)\n"</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="stringliteral">"#define _GET_GL_INSTANCE_ID(InstId)_TypeConvertStore(InstId, gl_InstanceID)\n"</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="stringliteral">"#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)\n"</span></div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <span class="stringliteral">"// --------------------------------- Fragment shader ---------------------------------\n"</span></div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <span class="stringliteral">"#ifdef FRAGMENT_SHADER\n"</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="stringliteral">"#define _GET_GL_FRAG_COORD(FragCoord)_ResizeVector(FragCoord, gl_FragCoord)\n"</span></div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span> <span class="stringliteral">"#define _SET_GL_FRAG_DEPTH(Depth)_TypeConvertStore(gl_FragDepth, Depth)\n"</span></div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="stringliteral">"// --------------------------------- Geometry shader ---------------------------------\n"</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="stringliteral">"#ifdef GEOMETRY_SHADER\n"</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="stringliteral">"// ARB_separate_shader_objects requires built-in block gl_PerVertex to be redeclared before accessing its members\n"</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> <span class="stringliteral">"// declaring gl_PointSize and gl_ClipDistance causes compilation error on Android\n"</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="stringliteral">"in gl_PerVertex\n"</span></div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="stringliteral">"} gl_in[];\n"</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="stringliteral">"out gl_PerVertex\n"</span></div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <span class="stringliteral">"};\n"</span></div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> <span class="stringliteral">"#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)\n"</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="stringliteral">"#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_in[i].gl_PrimitiveIDIn)\n"</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="stringliteral">"#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)\n"</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> <span class="stringliteral">"#define _SET_GL_LAYER(Layer)_TypeConvertStore(gl_Layer,Layer)\n"</span></div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="stringliteral">"// --------------------------- Tessellation control shader ---------------------------\n"</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> <span class="stringliteral">"#ifdef TESS_CONTROL_SHADER\n"</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <span class="stringliteral">"in gl_PerVertex\n"</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> <span class="stringliteral">"} gl_in[gl_MaxPatchVertices];\n"</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="stringliteral">"out gl_PerVertex\n"</span></div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> <span class="stringliteral">"} gl_out[];\n"</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> <span class="stringliteral">"#define _GET_GL_INVOCATION_ID(InvocId)_TypeConvertStore(InvocId, gl_InvocationID)\n"</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="stringliteral">"#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_PrimitiveID)\n"</span></div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <span class="stringliteral">"#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)\n"</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> <span class="stringliteral">"#define _SET_GL_POSITION(Pos)gl_out[gl_InvocationID].gl_Position=_ExpandVector(Pos)\n"</span></div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <span class="stringliteral">"#define _SET_GL_TESS_LEVEL_OUTER(OuterLevel)for(int i=0; i < OuterLevel.length(); ++i)gl_TessLevelOuter[i] = OuterLevel[i]\n"</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> <span class="stringliteral">"void _SetGLTessLevelInner(float InnerLevel[2])\n"</span></div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> <span class="stringliteral">" gl_TessLevelInner[0] = InnerLevel[0];\n"</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="stringliteral">" gl_TessLevelInner[1] = InnerLevel[1];\n"</span></div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="stringliteral">"void _SetGLTessLevelInner(float InnerLevel)\n"</span></div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="stringliteral">" gl_TessLevelInner[0] = InnerLevel;\n"</span></div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="stringliteral">"// --------------------------- Tessellation evaluation shader ---------------------------\n"</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> <span class="stringliteral">"#ifdef TESS_EVALUATION_SHADER\n"</span></div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> <span class="stringliteral">"in gl_PerVertex\n"</span></div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> <span class="stringliteral">"} gl_in[gl_MaxPatchVertices];\n"</span></div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> <span class="stringliteral">"out gl_PerVertex\n"</span></div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <span class="stringliteral">"};\n"</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="stringliteral">"#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)\n"</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="stringliteral">"#define _GET_GL_TESS_LEVEL_OUTER(OuterLevel)for(int i=0; i < OuterLevel.length(); ++i)OuterLevel[i] = gl_TessLevelOuter[i]\n"</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="stringliteral">"void _GetGLTessLevelInner(out float InnerLevel[2])\n"</span></div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> <span class="stringliteral">" InnerLevel[0] = gl_TessLevelInner[0];\n"</span></div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> <span class="stringliteral">" InnerLevel[1] = gl_TessLevelInner[1];\n"</span></div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <span class="stringliteral">"void _GetGLTessLevelInner(out float InnerLevel)\n"</span></div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="stringliteral">" InnerLevel = gl_TessLevelInner[0];\n"</span></div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> <span class="stringliteral">"#define _GET_GL_TESS_COORD(TessCoord)_ResizeVector(TessCoord, gl_TessCoord)\n"</span></div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="stringliteral">"#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_PrimitiveID)\n"</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="stringliteral">"#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)\n"</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> <span class="stringliteral">"// ---------------------------------- Compute shader ----------------------------------\n"</span></div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="stringliteral">"#ifdef COMPUTE_SHADER\n"</span></div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <span class="stringliteral">"#define _GET_GL_GLOBAL_INVOCATION_ID(Type, InvocId)InvocId=Type(gl_GlobalInvocationID)\n"</span></div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="stringliteral">"#define _GET_GL_WORK_GROUP_ID(Type, GroupId)GroupId=Type(gl_WorkGroupID)\n"</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> <span class="stringliteral">"#define _GET_GL_LOCAL_INVOCATION_ID(Type, InvocId)InvocId=Type(gl_LocalInvocationID)\n"</span></div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="stringliteral">"#define _GET_GL_LOCAL_INVOCATION_INDEX(Type, InvocInd)InvocInd=Type(gl_LocalInvocationIndex)\n"</span></div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="stringliteral">"#endif // _GLSL_DEFINITIONS_\n"</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="stringliteral">"/* Copyright 2015-2018 Egor Yusov\n"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="stringliteral">" * \n"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="stringliteral">" * Licensed under the Apache License, Version 2.0 (the \"License\");\n"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="stringliteral">" * you may not use this file except in compliance with the License.\n"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="stringliteral">" * You may obtain a copy of the License at\n"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="stringliteral">" * \n"</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="stringliteral">" * http://www.apache.org/licenses/LICENSE-2.0\n"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="stringliteral">" * \n"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="stringliteral">" * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="stringliteral">" * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="stringliteral">" * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.\n"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="stringliteral">" *\n"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="stringliteral">" * In no event and under no legal theory, whether in tort (including negligence), \n"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="stringliteral">" * contract, or otherwise, unless required by applicable law (such as deliberate \n"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="stringliteral">" * and grossly negligent acts) or agreed to in writing, shall any Contributor be\n"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="stringliteral">" * liable for any damages, including any direct, indirect, special, incidental, \n"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="stringliteral">" * or consequential damages of any character arising as a result of this License or \n"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="stringliteral">" * out of the use or inability to use the software (including but not limited to damages \n"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="stringliteral">" * for loss of goodwill, work stoppage, computer failure or malfunction, or any and \n"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="stringliteral">" * all other commercial damages or losses), even if such Contributor has been advised \n"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="stringliteral">" * of the possibility of such damages.\n"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="stringliteral">" */\n"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="stringliteral">"#ifndef _GLSL_DEFINITIONS_\n"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="stringliteral">"#define _GLSL_DEFINITIONS_\n"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="stringliteral">"#define GLSL\n"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="stringliteral">"#define float4 vec4\n"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="stringliteral">"#define float3 vec3\n"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="stringliteral">"#define float2 vec2\n"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="stringliteral">"#define int4 ivec4\n"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="stringliteral">"#define int3 ivec3\n"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="stringliteral">"#define int2 ivec2\n"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="stringliteral">"#define uint4 uvec4\n"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="stringliteral">"#define uint3 uvec3\n"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="stringliteral">"#define uint2 uvec2\n"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="stringliteral">"#define bool4 bvec4\n"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="stringliteral">"#define bool3 bvec3\n"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="stringliteral">"#define bool2 bvec2\n"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="stringliteral">"// OpenGL matrices in GLSL are always as column-major \n"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="stringliteral">"// (this is not related to how they are stored)\n"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="stringliteral">"#define float2x2 mat2x2\n"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="stringliteral">"#define float2x3 mat3x2\n"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="stringliteral">"#define float2x4 mat4x2\n"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="stringliteral">"#define float3x2 mat2x3\n"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="stringliteral">"#define float3x3 mat3x3\n"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="stringliteral">"#define float3x4 mat4x3\n"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="stringliteral">"#define float4x2 mat2x4\n"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="stringliteral">"#define float4x3 mat3x4\n"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="stringliteral">"#define float4x4 mat4x4\n"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="stringliteral">"#define matrix mat4x4\n"</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="stringliteral">"#define static\n"</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="stringliteral">"#define SamplerState int\n"</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="stringliteral">"#define SamplerComparisonState int\n"</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="stringliteral">"// https://www.opengl.org/wiki/Memory_Model#Incoherent_memory_access\n"</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="stringliteral">"// Shared variable access uses the rules for incoherent memory access. \n"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="stringliteral">"// This means that the user must perform certain synchronization in \n"</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="stringliteral">"// order to ensure that shared variables are visible.\n"</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="stringliteral">"// At the same time, shared variables are all implicitly declared coherent, \n"</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="stringliteral">"// so one don\'t need to (and can\'t) use that qualifier.\n"</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="stringliteral">"#define groupshared shared\n"</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="stringliteral">"#ifdef FRAGMENT_SHADER\n"</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="stringliteral">"# define ddx dFdx\n"</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="stringliteral">"# define ddy dFdy\n"</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="stringliteral">"#else\n"</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="stringliteral">"# define ddx(x) (x) // GLSL compiler fails when it sees derivatives \n"</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="stringliteral">"# define ddy(x) (x) // in any shader but fragment\n"</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="stringliteral">"#define ddx_coarse ddx\n"</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="stringliteral">"#define ddy_coarse ddy\n"</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="stringliteral">"#define ddx_fine ddx\n"</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="stringliteral">"#define ddy_fine ddy\n"</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="stringliteral">"#define mul(a, b) ((a)*(b))\n"</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="stringliteral">"#define frac fract\n"</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="stringliteral">"#define atan2 atan\n"</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="stringliteral">"#define rsqrt inversesqrt\n"</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="stringliteral">"#define fmod mod\n"</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="stringliteral">"#define lerp mix\n"</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="stringliteral">"#define dst distance\n"</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="stringliteral">"#define countbits bitCount\n"</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="stringliteral">"#define firstbithigh findMSB\n"</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="stringliteral">"#define firstbitlow findLSB\n"</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="stringliteral">"#define reversebits bitfieldReverse\n"</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="stringliteral">"float rcp( float x ){ return 1.0 / x; }\n"</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="stringliteral">"vec2 rcp( vec2 x ){ return vec2(1.0,1.0) / x; }\n"</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="stringliteral">"vec3 rcp( vec3 x ){ return vec3(1.0,1.0,1.0) / x; }\n"</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="stringliteral">"vec4 rcp( vec4 x ){ return vec4(1.0,1.0,1.0,1.0) / x; }\n"</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="stringliteral">"float saturate( float x ){ return clamp( x, 0.0, 1.0 ); }\n"</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="stringliteral">"vec2 saturate( vec2 x ){ return clamp( x, vec2(0.0, 0.0), vec2(1.0, 1.0) ); }\n"</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="stringliteral">"vec3 saturate( vec3 x ){ return clamp( x, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0) ); }\n"</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="stringliteral">"vec4 saturate( vec4 x ){ return clamp( x, vec4(0.0, 0.0, 0.0, 0.0), vec4(1.0, 1.0, 1.0, 1.0) ); }\n"</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="stringliteral">"void sincos( float x, out float s, out float c ){ s = sin( x ); c = cos( x ); }\n"</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="stringliteral">"void sincos( vec2 x, out vec2 s, out vec2 c ){ s = sin( x ); c = cos( x ); }\n"</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="stringliteral">"void sincos( vec3 x, out vec3 s, out vec3 c ){ s = sin( x ); c = cos( x ); }\n"</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="stringliteral">"void sincos( vec4 x, out vec4 s, out vec4 c ){ s = sin( x ); c = cos( x ); }\n"</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="stringliteral">"// Bit conversion operations\n"</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="stringliteral">"float asfloat( float x ){ return x; }\n"</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="stringliteral">"vec2 asfloat( vec2 x ){ return x; }\n"</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="stringliteral">"vec3 asfloat( vec3 x ){ return x; }\n"</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="stringliteral">"vec4 asfloat( vec4 x ){ return x; }\n"</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="stringliteral">"float asfloat( int x ){ return intBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="stringliteral">"vec2 asfloat( ivec2 x ){ return intBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="stringliteral">"vec3 asfloat( ivec3 x ){ return intBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="stringliteral">"vec4 asfloat( ivec4 x ){ return intBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="stringliteral">"float asfloat( uint x ){ return uintBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="stringliteral">"vec2 asfloat( uvec2 x ){ return uintBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="stringliteral">"vec3 asfloat( uvec3 x ){ return uintBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="stringliteral">"vec4 asfloat( uvec4 x ){ return uintBitsToFloat(x); }\n"</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="stringliteral">"int asint( int x ){ return x; }\n"</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="stringliteral">"ivec2 asint( ivec2 x ){ return x; }\n"</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="stringliteral">"ivec3 asint( ivec3 x ){ return x; }\n"</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="stringliteral">"ivec4 asint( ivec4 x ){ return x; }\n"</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="stringliteral">"int asint( uint x ){ return int(x); }\n"</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="stringliteral">"ivec2 asint( uvec2 x ){ return ivec2(x); }\n"</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="stringliteral">"ivec3 asint( uvec3 x ){ return ivec3(x); }\n"</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="stringliteral">"ivec4 asint( uvec4 x ){ return ivec4(x); }\n"</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="stringliteral">"int asint( float x ){ return floatBitsToInt(x); }\n"</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="stringliteral">"ivec2 asint( vec2 x ){ return floatBitsToInt(x); }\n"</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="stringliteral">"ivec3 asint( vec3 x ){ return floatBitsToInt(x); }\n"</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="stringliteral">"ivec4 asint( vec4 x ){ return floatBitsToInt(x); }\n"</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="stringliteral">"uint asuint( uint x ){ return x; }\n"</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="stringliteral">"uvec2 asuint( uvec2 x ){ return x; }\n"</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="stringliteral">"uvec3 asuint( uvec3 x ){ return x; }\n"</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="stringliteral">"uvec4 asuint( uvec4 x ){ return x; }\n"</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="stringliteral">"uint asuint( int x ){ return uint(x); }\n"</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="stringliteral">"uvec2 asuint( ivec2 x ){ return uvec2(x); }\n"</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="stringliteral">"uvec3 asuint( ivec3 x ){ return uvec3(x); }\n"</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="stringliteral">"uvec4 asuint( ivec4 x ){ return uvec4(x); }\n"</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="stringliteral">"uint asuint( float x ){ return floatBitsToUint(x); }\n"</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="stringliteral">"uvec2 asuint( vec2 x ){ return floatBitsToUint(x); }\n"</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="stringliteral">"uvec3 asuint( vec3 x ){ return floatBitsToUint(x); }\n"</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="stringliteral">"uvec4 asuint( vec4 x ){ return floatBitsToUint(x); }\n"</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="stringliteral">"float f16tof32( uint u1 )\n"</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="stringliteral">" return unpackHalf2x16( u1 ).x; \n"</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="stringliteral">"vec2 f16tof32( uvec2 u2 )\n"</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="stringliteral">" uint u2PackedHalf = (u2.x & 0x0ffffu) | ((u2.y & 0x0ffffu) << 16u);\n"</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="stringliteral">" return unpackHalf2x16( u2PackedHalf ); \n"</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="stringliteral">"vec3 f16tof32( uvec3 u3 )\n"</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="stringliteral">" return vec3( f16tof32( u3.xy ), f16tof32( u3.z ) );\n"</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="stringliteral">"vec4 f16tof32( uvec4 u4 )\n"</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="stringliteral">" return vec4( f16tof32( u4.xy ), f16tof32( u4.zw ) );\n"</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="stringliteral">"float f16tof32( int i1 ){ return f16tof32( uint ( i1 ) ); }\n"</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="stringliteral">"vec2 f16tof32( ivec2 i2 ){ return f16tof32( uvec2( i2 ) ); }\n"</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="stringliteral">"vec3 f16tof32( ivec3 i3 ){ return f16tof32( uvec3( i3 ) ); }\n"</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="stringliteral">"vec4 f16tof32( ivec4 i4 ){ return f16tof32( uvec4( i4 ) ); }\n"</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="stringliteral">"uint f32tof16( float f )\n"</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="stringliteral">" return packHalf2x16( vec2( f, 0.0 ) ) & 0x0ffffu; \n"</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="stringliteral">"uvec2 f32tof16( vec2 f2 )\n"</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="stringliteral">"{ \n"</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="stringliteral">" uint u2PackedHalf = packHalf2x16( f2 );\n"</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="stringliteral">" return uvec2( u2PackedHalf & 0x0ffffu, u2PackedHalf >> 16u );\n"</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="stringliteral">"uvec3 f32tof16( vec3 f3 )\n"</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="stringliteral">" return uvec3( f32tof16( f3.xy ), f32tof16( f3.z ) );\n"</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="stringliteral">"uvec4 f32tof16( vec4 f4 )\n"</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="stringliteral">" return uvec4( f32tof16( f4.xy ), f32tof16( f4.zw ) );\n"</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="stringliteral">"#ifndef GL_ES // double is not supported on GLES\n"</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="stringliteral">"double asdouble(uint lowbits, uint highbits)\n"</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="stringliteral">" return packDouble2x32( uvec2( lowbits, highbits ) );\n"</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="stringliteral">"// Floating point functions\n"</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="stringliteral">"bool isfinite( float x )\n"</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="stringliteral">" return !isinf( x ) && !isnan( x );\n"</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="stringliteral">"bool2 isfinite( vec2 f2 )\n"</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="stringliteral">" return bool2( isfinite( f2.x ), isfinite( f2.y ) );\n"</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="stringliteral">"bool3 isfinite( vec3 f3 )\n"</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="stringliteral">" return bool3( isfinite( f3.xy ), isfinite( f3.z ) );\n"</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="stringliteral">"bool4 isfinite( vec4 f4 )\n"</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="stringliteral">" return bool4( isfinite( f4.xyz ), isfinite( f4.w ) );\n"</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="stringliteral">"#ifndef GL_ES\n"</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="stringliteral">" float noise( float x ){ return noise1( x ); }\n"</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="stringliteral">" vec2 noise( vec2 x ){ return noise2( x ); }\n"</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="stringliteral">" vec3 noise( vec3 x ){ return noise3( x ); }\n"</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="stringliteral">" vec4 noise( vec4 x ){ return noise4( x ); }\n"</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="stringliteral">"#else\n"</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="stringliteral">" float noise( float x ){ return 0.0; }\n"</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="stringliteral">" vec2 noise( vec2 x ){ return vec2(0.0, 0.0); }\n"</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="stringliteral">" vec3 noise( vec3 x ){ return vec3(0.0, 0.0, 0.0); }\n"</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="stringliteral">" vec4 noise( vec4 x ){ return vec4(0.0, 0.0, 0.0, 0.0); }\n"</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="stringliteral">"float log10( float x )\n"</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="stringliteral">" return log( x ) / log( 10.0 );\n"</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="stringliteral">"vec2 log10( vec2 x )\n"</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="stringliteral">" float _lg10 = log( 10.0 );\n"</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="stringliteral">" return log( x ) / vec2(_lg10, _lg10);\n"</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="stringliteral">"vec3 log10( vec3 x )\n"</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="stringliteral">" float _lg10 = log( 10.0 );\n"</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="stringliteral">" return log( x ) / vec3(_lg10, _lg10, _lg10);\n"</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="stringliteral">"vec4 log10( vec4 x )\n"</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="stringliteral">" float _lg10 = log( 10.0 );\n"</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="stringliteral">" return log( x ) / vec4(_lg10, _lg10, _lg10, _lg10);\n"</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="stringliteral">"#ifdef GL_ES\n"</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="stringliteral">"# define mad(a,b,c) ((a)*(b)+(c))\n"</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="stringliteral">"#else\n"</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="stringliteral">"# define mad fma\n"</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="stringliteral">"// Relational and logical operators\n"</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="stringliteral">"#define Less lessThan\n"</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="stringliteral">"#define LessEqual lessThanEqual\n"</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="stringliteral">"#define Greater greaterThan\n"</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="stringliteral">"#define GreaterEqual greaterThanEqual\n"</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="stringliteral">"#define Equal equal\n"</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="stringliteral">"#define NotEqual notEqual\n"</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="stringliteral">"#define Not not\n"</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="stringliteral">"bool4 And(bool4 L, bool4 R)\n"</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="stringliteral">" return bool4(L.x && R.x,\n"</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="stringliteral">" L.y && R.y,\n"</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="stringliteral">" L.z && R.z,\n"</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="stringliteral">" L.w && R.w);\n"</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="stringliteral">"bool3 And(bool3 L, bool3 R)\n"</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="stringliteral">" return bool3(L.x && R.x,\n"</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="stringliteral">" L.y && R.y,\n"</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="stringliteral">" L.z && R.z);\n"</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="stringliteral">"bool2 And(bool2 L, bool2 R)\n"</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="stringliteral">" return bool2(L.x && R.x,\n"</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="stringliteral">" L.y && R.y);\n"</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="stringliteral">"bool And(bool L, bool R)\n"</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="stringliteral">" return (L && R);\n"</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="stringliteral">"bool4 Or(bool4 L, bool4 R)\n"</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="stringliteral">" return bool4(L.x || R.x,\n"</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="stringliteral">" L.y || R.y,\n"</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="stringliteral">" L.z || R.z,\n"</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="stringliteral">" L.w || R.w);\n"</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="stringliteral">"bool3 Or(bool3 L, bool3 R)\n"</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="stringliteral">" return bool3(L.x || R.x,\n"</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="stringliteral">" L.y || R.y,\n"</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="stringliteral">" L.z || R.z);\n"</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="stringliteral">"bool2 Or(bool2 L, bool2 R)\n"</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="stringliteral">" return bool2(L.x || R.x,\n"</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="stringliteral">" L.y || R.y);\n"</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="stringliteral">"bool Or(bool L, bool R)\n"</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="stringliteral">" return (L || R);\n"</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="stringliteral">"float4 BoolToFloat( bool4 b4 )\n"</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="stringliteral">" return float4(b4.x ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="stringliteral">" b4.y ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="stringliteral">" b4.z ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="stringliteral">" b4.w ? 1.0 : 0.0);\n"</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="stringliteral">"float3 BoolToFloat( bool3 b3 )\n"</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="stringliteral">" return float3(b3.x ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="stringliteral">" b3.y ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="stringliteral">" b3.z ? 1.0 : 0.0);\n"</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="stringliteral">"float2 BoolToFloat( bool2 b2 )\n"</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="stringliteral">" return float2(b2.x ? 1.0 : 0.0,\n"</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="stringliteral">" b2.y ? 1.0 : 0.0);\n"</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="stringliteral">"float BoolToFloat( bool b )\n"</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="stringliteral">" return b ? 1.0 : 0.0;\n"</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="stringliteral">"// Synchronization functions\n"</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="stringliteral">"#ifdef COMPUTE_SHADER\n"</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="stringliteral">"// https://www.opengl.org/wiki/Memory_Model#Incoherent_memory_access\n"</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="stringliteral">"// MSDN: GroupMemoryBarrier() blocks execution of all threads \n"</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="stringliteral">"// in a group until all group SHARED accesses have been completed.\n"</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="stringliteral">"void GroupMemoryBarrier()\n"</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="stringliteral">" // OpenGL.org: groupMemoryBarrier() waits on the completion of all memory accesses \n"</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="stringliteral">" // performed by an invocation of a compute shader relative to the same access performed \n"</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="stringliteral">" // by other invocations in the same work group and then returns with no other effect.\n"</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="stringliteral">" // groupMemoryBarrier() acts like memoryBarrier(), ordering memory writes for all kinds \n"</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="stringliteral">" // of variables, but it only orders read/writes for the current work group.\n"</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="stringliteral">" groupMemoryBarrier();\n"</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierShared() waits on the completion of \n"</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="stringliteral">" // all memory accesses resulting from the use of SHARED variables\n"</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="stringliteral">" // and then returns with no other effect. \n"</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="stringliteral">" memoryBarrierShared();\n"</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="stringliteral">"// MSDN: GroupMemoryBarrierWithGroupSync() blocks execution of all \n"</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="stringliteral">"// threads in a group until all memory accesses have been completed \n"</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="stringliteral">"// and all threads in the group have reached this call.\n"</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="stringliteral">"void GroupMemoryBarrierWithGroupSync()\n"</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="stringliteral">" // Issue memory barrier first!\n"</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="stringliteral">" GroupMemoryBarrier();\n"</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="stringliteral">" barrier();\n"</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="stringliteral">"// MSDN: DeviceMemoryBarrier() blocks execution of all threads \n"</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="stringliteral">"// in a group until all device memory accesses have been completed.\n"</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="stringliteral">"void DeviceMemoryBarrier()\n"</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="stringliteral">" // Call all memory barriers except for shared memory\n"</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="stringliteral">" // Do we need to call groupMemoryBarrier() ????? \n"</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierBuffer() waits on the completion of \n"</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="stringliteral">" // all memory accesses resulting from the use of BUFFER variables \n"</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="stringliteral">" // and then returns with no other effect\n"</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="stringliteral">" memoryBarrierBuffer();\n"</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierImage() waits on the completion of all \n"</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="stringliteral">" // memory accesses resulting from the use of IMAGE variables and then \n"</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="stringliteral">" // returns with no other effect. \n"</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="stringliteral">" memoryBarrierImage();\n"</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierAtomicCounter() waits on the completion of \n"</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="stringliteral">" // all accesses resulting from the use of ATOMIC COUNTERS and then returns \n"</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="stringliteral">" // with no other effect. \n"</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="stringliteral">" memoryBarrierAtomicCounter();\n"</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="stringliteral">"// MSDN: DeviceMemoryBarrierWithGroupSync() blocks execution of \n"</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="stringliteral">"// all threads in a group until all device memory accesses have \n"</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="stringliteral">"// been completed and all threads in the group have reached this call.\n"</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="stringliteral">"void DeviceMemoryBarrierWithGroupSync()\n"</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="stringliteral">" DeviceMemoryBarrier();\n"</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="stringliteral">" barrier();\n"</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="stringliteral">"// MSDN: AllMemoryBarrier() blocks execution of all threads in a \n"</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="stringliteral">"// group until all memory accesses have been completed.\n"</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="stringliteral">"void AllMemoryBarrier()\n"</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="stringliteral">" // OpenGL.org: memoryBarrier() waits on the completion of ALL \n"</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="stringliteral">" // memory accesses resulting from the use of IMAGE variables or \n"</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="stringliteral">" // ATOMIC COUNTERS and then returns with no other effect.\n"</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="stringliteral">" memoryBarrier();\n"</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="stringliteral">" // NOTE: nothing is said about buffer memory and shared memory,\n"</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="stringliteral">" // so call memoryBarrierBuffer() and memoryBarrierShared() for safety\n"</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierBuffer() waits on the completion of \n"</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="stringliteral">" // all memory accesses resulting from the use of BUFFER variables \n"</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="stringliteral">" // and then returns with no other effect\n"</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="stringliteral">" memoryBarrierBuffer();\n"</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierShared() waits on the completion of \n"</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="stringliteral">" // all memory accesses resulting from the use of SHARED variables\n"</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="stringliteral">" // and then returns with no other effect. \n"</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="stringliteral">" memoryBarrierShared();\n"</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="stringliteral">" // Call all memory barrier functions. They should have no effect\n"</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="stringliteral">" // if everything is synchronized.\n"</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierImage() waits on the completion of all \n"</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="stringliteral">" // memory accesses resulting from the use of IMAGE variables and then \n"</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="stringliteral">" // returns with no other effect. \n"</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="stringliteral">" memoryBarrierImage();\n"</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="stringliteral">" // OpenGL.org: memoryBarrierAtomicCounter() waits on the completion of \n"</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="stringliteral">" // all accesses resulting from the use of ATOMIC COUNTERS and then returns \n"</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="stringliteral">" // with no other effect. \n"</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="stringliteral">" memoryBarrierAtomicCounter();\n"</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="stringliteral">" // groupMemoryBarrier waits on the completion of all memory accesses performed \n"</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="stringliteral">" // by an invocation of a compute shader relative to the same access performed by \n"</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="stringliteral">" // other invocations in the same work group and then returns with no other effect.\n"</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="stringliteral">" groupMemoryBarrier();\n"</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="stringliteral">"// MSDN: AllMemoryBarrierWithGroupSync() blocks execution of all \n"</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="stringliteral">"// threads in a group until all memory accesses have been completed \n"</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="stringliteral">"// and all threads in the group have reached this call.\n"</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="stringliteral">"void AllMemoryBarrierWithGroupSync()\n"</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="stringliteral">" AllMemoryBarrier();\n"</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="stringliteral">" barrier();\n"</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="stringliteral">"#else\n"</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="stringliteral">"void AllMemoryBarrier(){}\n"</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="stringliteral">"void AllMemoryBarrierWithGroupSync(){}\n"</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="stringliteral">"void DeviceMemoryBarrier(){}\n"</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="stringliteral">"void DeviceMemoryBarrierWithGroupSync(){}\n"</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="stringliteral">"void GroupMemoryBarrier(){}\n"</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="stringliteral">"void GroupMemoryBarrierWithGroupSync(){}\n"</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="stringliteral">"// Type conversion functions\n"</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="stringliteral">"vec4 _ExpandVector( float x ){ return vec4( x, x, x, x ); }\n"</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="stringliteral">"vec4 _ExpandVector( vec2 f2 ){ return vec4( f2.x, f2.y, 0.0, 0.0 ); }\n"</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="stringliteral">"vec4 _ExpandVector( vec3 f3 ){ return vec4( f3.x, f3.y, f3.z, 0.0 ); }\n"</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="stringliteral">"vec4 _ExpandVector( vec4 f4 ){ return vec4( f4.x, f4.y, f4.z, f4.w ); }\n"</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="stringliteral">"ivec4 _ExpandVector( int x ){ return ivec4( x, x, x, x ); }\n"</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="stringliteral">"ivec4 _ExpandVector( ivec2 i2 ){ return ivec4( i2.x, i2.y, 0, 0 ); }\n"</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="stringliteral">"ivec4 _ExpandVector( ivec3 i3 ){ return ivec4( i3.x, i3.y, i3.z, 0 ); }\n"</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="stringliteral">"ivec4 _ExpandVector( ivec4 i4 ){ return ivec4( i4.x, i4.y, i4.z, i4.w ); }\n"</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="stringliteral">"uvec4 _ExpandVector( uint x ){ return uvec4( x, x, x, x ); }\n"</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="stringliteral">"uvec4 _ExpandVector( uvec2 u2 ){ return uvec4( u2.x, u2.y, 0u, 0u ); }\n"</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="stringliteral">"uvec4 _ExpandVector( uvec3 u3 ){ return uvec4( u3.x, u3.y, u3.z, 0u ); }\n"</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="stringliteral">"uvec4 _ExpandVector( uvec4 u4 ){ return uvec4( u4.x, u4.y, u4.z, u4.w ); }\n"</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="stringliteral">"bvec4 _ExpandVector( bool x ){ return bvec4( x, x, x, x ); }\n"</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="stringliteral">"bvec4 _ExpandVector( bvec2 b2 ){ return bvec4( b2.x, b2.y, false, false ); }\n"</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="stringliteral">"bvec4 _ExpandVector( bvec3 b3 ){ return bvec4( b3.x, b3.y, b3.z, false ); }\n"</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="stringliteral">"bvec4 _ExpandVector( bvec4 b4 ){ return bvec4( b4.x, b4.y, b4.z, b4.w ); }\n"</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="stringliteral">"void _ResizeVector(out vec4 outVec4, in vec4 inVec4){outVec4 = inVec4;}\n"</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="stringliteral">"void _ResizeVector(out vec3 outVec3, in vec4 inVec4){outVec3 = inVec4.xyz;}\n"</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="stringliteral">"void _ResizeVector(out vec2 outVec2, in vec4 inVec4){outVec2 = inVec4.xy;}\n"</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="stringliteral">"void _ResizeVector(out float outFlt, in vec4 inVec4){outFlt = inVec4.x;}\n"</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="stringliteral">"void _ResizeVector(out vec4 outVec4, in vec3 inVec3){outVec4 = vec4(inVec3, 0.0);}\n"</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="stringliteral">"void _ResizeVector(out vec3 outVec3, in vec3 inVec3){outVec3 = inVec3;}\n"</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="stringliteral">"void _ResizeVector(out vec2 outVec2, in vec3 inVec3){outVec2 = inVec3.xy;}\n"</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="stringliteral">"void _ResizeVector(out float outFlt, in vec3 inVec3){outFlt = inVec3.x;}\n"</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="stringliteral">"void _ResizeVector(out vec4 outVec4, in vec2 inVec2){outVec4 = vec4(inVec2, 0.0, 0.0);}\n"</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="stringliteral">"void _ResizeVector(out vec3 outVec3, in vec2 inVec2){outVec3 = vec3(inVec2, 0.0);}\n"</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="stringliteral">"void _ResizeVector(out vec2 outVec2, in vec2 inVec2){outVec2 = inVec2;}\n"</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="stringliteral">"void _ResizeVector(out float outFlt, in vec2 inVec2){outFlt = inVec2.x;}\n"</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="stringliteral">"void _ResizeVector(out vec4 outVec4, in float v){outVec4 = vec4(v, 0.0, 0.0, 0.0);}\n"</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="stringliteral">"void _ResizeVector(out vec3 outVec3, in float v){outVec3 = vec3(v, 0.0, 0.0);}\n"</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="stringliteral">"void _ResizeVector(out vec2 outVec2, in float v){outVec2 = vec2(v, 0.0);}\n"</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="stringliteral">"void _ResizeVector(out float outFlt, in float v){outFlt = v;}\n"</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="stringliteral">"void _TypeConvertStore( out float Dst, in int Src ){ Dst = float( Src ); }\n"</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="stringliteral">"void _TypeConvertStore( out float Dst, in uint Src ){ Dst = float( Src ); }\n"</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="stringliteral">"void _TypeConvertStore( out float Dst, in float Src ){ Dst = float( Src ); }\n"</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="stringliteral">"void _TypeConvertStore( out uint Dst, in int Src ){ Dst = uint( Src ); }\n"</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="stringliteral">"void _TypeConvertStore( out uint Dst, in uint Src ){ Dst = uint( Src ); }\n"</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="stringliteral">"void _TypeConvertStore( out uint Dst, in float Src ){ Dst = uint( Src ); }\n"</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="stringliteral">"void _TypeConvertStore( out int Dst, in int Src ){ Dst = int( Src ); }\n"</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="stringliteral">"void _TypeConvertStore( out int Dst, in uint Src ){ Dst = int( Src ); }\n"</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="stringliteral">"void _TypeConvertStore( out int Dst, in float Src ){ Dst = int( Src ); }\n"</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="stringliteral">"int _ToInt( int x ) { return int(x); }\n"</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="stringliteral">"int _ToInt( uint x ) { return int(x); }\n"</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="stringliteral">"int _ToInt( float x ){ return int(x); }\n"</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="stringliteral">"int _ToInt( bool x ) { return x ? 1 : 0; }\n"</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="stringliteral">"float _ToFloat( int x ) { return float(x); }\n"</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="stringliteral">"float _ToFloat( uint x ) { return float(x); }\n"</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="stringliteral">"float _ToFloat( float x ){ return float(x); }\n"</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="stringliteral">"float _ToFloat( bool x ) { return x ? 1.0 : 0.0;}\n"</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="stringliteral">"uint _ToUint( int x ) { return uint(x); }\n"</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> <span class="stringliteral">"uint _ToUint( uint x ) { return uint(x); }\n"</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="stringliteral">"uint _ToUint( float x ){ return uint(x); }\n"</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="stringliteral">"uint _ToUint( bool x ) { return x ? 1u : 0u; }\n"</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="stringliteral">"bool _ToBool( int x ) { return x != 0 ? true : false; }\n"</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="stringliteral">"bool _ToBool( uint x ) { return x != 0u ? true : false; }\n"</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="stringliteral">"bool _ToBool( float x ){ return x != 0.0 ? true : false; }\n"</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="stringliteral">"bool _ToBool( bool x ) { return x; }\n"</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="stringliteral">"#define _ToVec2(x,y) vec2(_ToFloat(x), _ToFloat(y))\n"</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <span class="stringliteral">"#define _ToVec3(x,y,z) vec3(_ToFloat(x), _ToFloat(y), _ToFloat(z))\n"</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="stringliteral">"#define _ToVec4(x,y,z,w) vec4(_ToFloat(x), _ToFloat(y), _ToFloat(z), _ToFloat(w))\n"</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> <span class="stringliteral">"#define _ToIvec2(x,y) ivec2(_ToInt(x), _ToInt(y))\n"</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="stringliteral">"#define _ToIvec3(x,y,z) ivec3(_ToInt(x), _ToInt(y), _ToInt(z))\n"</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> <span class="stringliteral">"#define _ToIvec4(x,y,z,w) ivec4(_ToInt(x), _ToInt(y), _ToInt(z), _ToInt(w))\n"</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="stringliteral">"#define _ToUvec2(x,y) uvec2(_ToUint(x), _ToUint(y))\n"</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="stringliteral">"#define _ToUvec3(x,y,z) uvec3(_ToUint(x), _ToUint(y), _ToUint(z))\n"</span></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <span class="stringliteral">"#define _ToUvec4(x,y,z,w) uvec4(_ToUint(x), _ToUint(y), _ToUint(z), _ToUint(w))\n"</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="stringliteral">"#define _ToBvec2(x,y) bvec2(_ToBool(x), _ToBool(y))\n"</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> <span class="stringliteral">"#define _ToBvec3(x,y,z) bvec3(_ToBool(x), _ToBool(y), _ToBool(z))\n"</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="stringliteral">"#define _ToBvec4(x,y,z,w) bvec4(_ToBool(x), _ToBool(y), _ToBool(z), _ToBool(w))\n"</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="stringliteral">"int _ToIvec( uint u1 ){ return _ToInt( u1 ); }\n"</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> <span class="stringliteral">"ivec2 _ToIvec( uvec2 u2 ){ return _ToIvec2( u2.x, u2.y ); }\n"</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> <span class="stringliteral">"ivec3 _ToIvec( uvec3 u3 ){ return _ToIvec3( u3.x, u3.y, u3.z ); }\n"</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="stringliteral">"ivec4 _ToIvec( uvec4 u4 ){ return _ToIvec4( u4.x, u4.y, u4.z, u4.w ); }\n"</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="stringliteral">"int _ToIvec( int i1 ){ return i1; }\n"</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <span class="stringliteral">"ivec2 _ToIvec( ivec2 i2 ){ return i2; }\n"</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="stringliteral">"ivec3 _ToIvec( ivec3 i3 ){ return i3; }\n"</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> <span class="stringliteral">"ivec4 _ToIvec( ivec4 i4 ){ return i4; }\n"</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="stringliteral">"int _ToIvec( float f1 ){ return _ToInt( f1 ); }\n"</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="stringliteral">"ivec2 _ToIvec( vec2 f2 ){ return _ToIvec2( f2.x, f2.y ); }\n"</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> <span class="stringliteral">"ivec3 _ToIvec( vec3 f3 ){ return _ToIvec3( f3.x, f3.y, f3.z ); }\n"</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> <span class="stringliteral">"ivec4 _ToIvec( vec4 f4 ){ return _ToIvec4( f4.x, f4.y, f4.z, f4.w ); }\n"</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="stringliteral">"float _ToVec( uint u1 ){ return _ToFloat(u1); }\n"</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="stringliteral">"vec2 _ToVec( uvec2 u2 ){ return _ToVec2( u2.x, u2.y ); }\n"</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="stringliteral">"vec3 _ToVec( uvec3 u3 ){ return _ToVec3( u3.x, u3.y, u3.z ); }\n"</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> <span class="stringliteral">"vec4 _ToVec( uvec4 u4 ){ return _ToVec4( u4.x, u4.y, u4.z, u4.w ); }\n"</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="stringliteral">"float _ToVec( int i1 ){ return _ToFloat(i1); }\n"</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="stringliteral">"vec2 _ToVec( ivec2 i2 ){ return _ToVec2( i2.x, i2.y ); }\n"</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> <span class="stringliteral">"vec3 _ToVec( ivec3 i3 ){ return _ToVec3( i3.x, i3.y, i3.z ); }\n"</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="stringliteral">"vec4 _ToVec( ivec4 i4 ){ return _ToVec4( i4.x, i4.y, i4.z, i4.w ); }\n"</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="stringliteral">"float _ToVec( float f1 ){ return f1; }\n"</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="stringliteral">"vec2 _ToVec( vec2 f2 ){ return f2; }\n"</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> <span class="stringliteral">"vec3 _ToVec( vec3 f3 ){ return f3; }\n"</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="stringliteral">"vec4 _ToVec( vec4 f4 ){ return f4; }\n"</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="stringliteral">"uint _ToUvec( uint u1 ){ return u1; }\n"</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="stringliteral">"uvec2 _ToUvec( uvec2 u2 ){ return u2; }\n"</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="stringliteral">"uvec3 _ToUvec( uvec3 u3 ){ return u3; }\n"</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="stringliteral">"uvec4 _ToUvec( uvec4 u4 ){ return u4; }\n"</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="stringliteral">"uint _ToUvec( int i1 ){ return _ToUint( i1 ); }\n"</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="stringliteral">"uvec2 _ToUvec( ivec2 i2 ){ return _ToUvec2( i2.x, i2.y ); }\n"</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="stringliteral">"uvec3 _ToUvec( ivec3 i3 ){ return _ToUvec3( i3.x, i3.y, i3.z ); }\n"</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="stringliteral">"uvec4 _ToUvec( ivec4 i4 ){ return _ToUvec4( i4.x, i4.y, i4.z, i4.w ); }\n"</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="stringliteral">"uint _ToUvec( float f1 ){ return _ToUint( f1 ); }\n"</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="stringliteral">"uvec2 _ToUvec( vec2 f2 ){ return _ToUvec2( f2.x, f2.y ); }\n"</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <span class="stringliteral">"uvec3 _ToUvec( vec3 f3 ){ return _ToUvec3( f3.x, f3.y, f3.z ); }\n"</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="stringliteral">"uvec4 _ToUvec( vec4 f4 ){ return _ToUvec4( f4.x, f4.y, f4.z, f4.w ); }\n"</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="stringliteral">"// TEXTURE FUNCTION STUB MACROS\n"</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="stringliteral">"// https://www.opengl.org/wiki/Sampler_(GLSL)\n"</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> <span class="stringliteral">"// Texture size queries\n"</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> <span class="stringliteral">"// https://www.opengl.org/sdk/docs/man/html/textureSize.xhtml\n"</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="stringliteral">"// textureSize returns the dimensions of level lod (if present) of the texture bound to sampler. \n"</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="stringliteral">"// The components in the return value are filled in, in order, with the width, height and depth \n"</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="stringliteral">"// of the texture. For the array forms, the last component of the return value is the number of \n"</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="stringliteral">"// layers in the texture array.\n"</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="stringliteral">"//#if !(defined(DESKTOP_GL) && __VERSION__ >= 430)\n"</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> <span class="stringliteral">"# define textureQueryLevels(x) 0 // Only supported on 4.3+\n"</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="stringliteral">"//#endif\n"</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="stringliteral">"#define GetTex1DDimensions_1(Sampler, Width)\\\n"</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="stringliteral">" _TypeConvertStore( Width, textureSize(Sampler, 0) );\\\n"</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="stringliteral">"#define GetTex1DDimensions_3(Sampler, MipLevel, Width, NumberOfMipLevels)\\\n"</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="stringliteral">" _TypeConvertStore( Width, textureSize(Sampler, _ToInt(MipLevel)) ); \\\n"</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="stringliteral">" _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) ); \\\n"</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="stringliteral">"#define GetTex1DArrDimensions_2(Sampler, Width, Elements)\\\n"</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="stringliteral">" ivec2 i2Size = textureSize(Sampler, 0); \\\n"</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x );\\\n"</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="stringliteral">" _TypeConvertStore( Elements, i2Size.y );\\\n"</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="stringliteral">"#define GetTex1DArrDimensions_4(Sampler, MipLevel, Width, Elements, NumberOfMipLevels)\\\n"</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="stringliteral">" ivec2 i2Size = textureSize(Sampler, _ToInt(MipLevel)); \\\n"</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="stringliteral">" _TypeConvertStore( Elements, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="stringliteral">" _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\\\n"</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="stringliteral">"#define GetTex2DDimensions_2(Sampler, Width, Height)\\\n"</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="stringliteral">" ivec2 i2Size = textureSize(Sampler, 0); \\\n"</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="stringliteral">" _TypeConvertStore( Height, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <span class="stringliteral">"#define GetTex2DDimensions_4(Sampler, MipLevel, Width, Height, NumberOfMipLevels)\\\n"</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="stringliteral">" ivec2 i2Size = textureSize(Sampler, _ToInt(MipLevel) ); \\\n"</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> <span class="stringliteral">" _TypeConvertStore( Height, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="stringliteral">" _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\\\n"</span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="stringliteral">"#define GetTex2DArrDimensions_3(Sampler, Width, Height, Elements)\\\n"</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="stringliteral">" ivec3 i3Size = textureSize(Sampler, 0); \\\n"</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x ); \\\n"</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y ); \\\n"</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="stringliteral">" _TypeConvertStore( Elements,i3Size.z ); \\\n"</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> <span class="stringliteral">"#define GetTex2DArrDimensions_5(Sampler, MipLevel, Width, Height, Elements, NumberOfMipLevels)\\\n"</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="stringliteral">" ivec3 i3Size = textureSize(Sampler, _ToInt(MipLevel)); \\\n"</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x ); \\\n"</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y ); \\\n"</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="stringliteral">" _TypeConvertStore( Elements, i3Size.z ); \\\n"</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> <span class="stringliteral">" _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\\\n"</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="stringliteral">"#define GetTex3DDimensions_3(Sampler, Width, Height, Depth)\\\n"</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="stringliteral">" ivec3 i3Size = textureSize(Sampler, 0); \\\n"</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x ); \\\n"</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y ); \\\n"</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="stringliteral">" _TypeConvertStore( Depth, i3Size.z ); \\\n"</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> <span class="stringliteral">"#define GetTex3DDimensions_5(Sampler, MipLevel, Width, Height, Depth, NumberOfMipLevels)\\\n"</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="stringliteral">" ivec3 i3Size = textureSize(Sampler, _ToInt(MipLevel)); \\\n"</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x ); \\\n"</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y ); \\\n"</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span> <span class="stringliteral">" _TypeConvertStore( Depth, i3Size.z ); \\\n"</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> <span class="stringliteral">" _TypeConvertStore( NumberOfMipLevels, textureQueryLevels(Sampler) );\\\n"</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="stringliteral">"#define GetTex2DMSDimensions_3(Sampler, Width, Height, NumberOfSamples)\\\n"</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> <span class="stringliteral">" ivec2 i2Size = textureSize(Sampler); \\\n"</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <span class="stringliteral">" _TypeConvertStore( Height, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="stringliteral">" _TypeConvertStore( NumberOfSamples, 0 );\\\n"</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="stringliteral">"#define GetTex2DMSArrDimensions_4(Sampler, Width, Height, Elements, NumberOfSamples)\\\n"</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> <span class="stringliteral">" ivec3 i3Size = textureSize(Sampler); \\\n"</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x );\\\n"</span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y );\\\n"</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="stringliteral">" _TypeConvertStore( Elements, i3Size.z );\\\n"</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span> <span class="stringliteral">" _TypeConvertStore( NumberOfSamples, 0 );\\\n"</span></div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> <span class="stringliteral">"// https://www.opengl.org/sdk/docs/man/html/imageSize.xhtml\n"</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="stringliteral">"// imageSize returns the dimensions of the image bound to image. The components in the \n"</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="stringliteral">"// return value are filled in, in order, with the width, height and depth of the image. \n"</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="stringliteral">"// For the array forms, the last component of the return value is the number of layers \n"</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="stringliteral">"// in the texture array.\n"</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="stringliteral">"#define GetRWTex1DDimensions_1(Tex, Width)\\\n"</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> <span class="stringliteral">" _TypeConvertStore( Width, imageSize(Tex) ); \\\n"</span></div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="stringliteral">"#define GetRWTex1DArrDimensions_2(Tex, Width, Elements)\\\n"</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="stringliteral">" ivec2 i2Size = imageSize(Tex); \\\n"</span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="stringliteral">" _TypeConvertStore( Elements, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="stringliteral">"#define GetRWTex2DDimensions_2(Tex, Width, Height)\\\n"</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> <span class="stringliteral">" ivec2 i2Size = imageSize(Tex); \\\n"</span></div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> <span class="stringliteral">" _TypeConvertStore( Width, i2Size.x ); \\\n"</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> <span class="stringliteral">" _TypeConvertStore( Height, i2Size.y ); \\\n"</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="stringliteral">"#define GetRWTex2DArrDimensions_3(Tex, Width, Height, Elements)\\\n"</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="stringliteral">" ivec3 i3Size = imageSize(Tex); \\\n"</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x );\\\n"</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y );\\\n"</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="stringliteral">" _TypeConvertStore( Elements, i3Size.z );\\\n"</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="stringliteral">"#define GetRWTex3DDimensions_3(Tex, Width, Height, Depth)\\\n"</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="stringliteral">"{ \\\n"</span></div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="stringliteral">" ivec3 i3Size = imageSize(Tex); \\\n"</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="stringliteral">" _TypeConvertStore( Width, i3Size.x ); \\\n"</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="stringliteral">" _TypeConvertStore( Height, i3Size.y ); \\\n"</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="stringliteral">" _TypeConvertStore( Depth, i3Size.z ); \\\n"</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="stringliteral">"// Texture sampling operations\n"</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="stringliteral">"// IMPORTANT NOTE ABOUT OFFSET\n"</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="stringliteral">"// Offset parameter to all texture sampling functions must be a constant expression.\n"</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="stringliteral">"// If it is not, the shader will be successfully compiled, HOWEVER the value of Offset \n"</span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="stringliteral">"// will silently be zero. \n"</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="stringliteral">"//\n"</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="stringliteral">"// A constant expression in GLSL is defined as follows:\n"</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="stringliteral">"// * A literal value.\n"</span></div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="stringliteral">"// * A const-qualified variable with an explicit initializer (so not a function parameter).\n"</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="stringliteral">"// * The result of the length() function of an array, but only if the array has an explicit size.\n"</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="stringliteral">"// * The result of most operators, so long as all the operands are themselves constant expressions. \n"</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span> <span class="stringliteral">"// The operators not on this list are any assignment operators (+= and so forth), and the comma operator.\n"</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="stringliteral">"// * The result of a constructor for a type, but only if all of the arguments to the constructor are \n"</span></div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="stringliteral">"// themselves constant expressions.\n"</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="stringliteral">"// * The return value of any built-in function, but only if all of the arguments to the function are \n"</span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="stringliteral">"// themselves constant expressions. Opaque Types are never constant expressions. Note that the \n"</span></div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="stringliteral">"// functions dFdx, dFdy, and fwidth will return 0, when used in a context that requires a constant \n"</span></div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="stringliteral">"// expression (such as a const variable initializer).\n"</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="stringliteral">"// \n"</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="stringliteral">"// The list above does not include return value of a function, even when the value is compile-time expression.\n"</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="stringliteral">"// As a result, we cannot use type conversion functions for Offset parameter.\n"</span></div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="stringliteral">"// In all texture sampling functions, the last component of Coords is used as Dsub and the array layer is specified \n"</span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> <span class="stringliteral">"// in the second to last component of Coords. (The second component of Coords is unused for 1D shadow lookups.)\n"</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="stringliteral">"// For cube array textures, Dsub is specified as a separate parameter\n"</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="stringliteral">"// mip\n"</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="stringliteral">"#define SampleCmpLevel0Tex1D_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, 0.0, CompareValue), 0.0)\n"</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> <span class="stringliteral">"#define SampleCmpLevel0Tex1DArr_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0)\n"</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="stringliteral">"#define SampleCmpLevel0Tex2D_3(Tex, Sampler, Coords, CompareValue) textureLod(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0)\n"</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="stringliteral">"#define SampleCmpLevel0Tex2DArr_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for sampler2DArrayShadow\n"</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="stringliteral">"#define SampleCmpLevel0TexCube_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for samplerCubeShadow\n"</span></div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> <span class="stringliteral">"#define SampleCmpLevel0TexCubeArr_3(Tex, Sampler, Coords, CompareValue) 0.0 // No textureLod for samplerCubeArrayShadow\n"</span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="stringliteral">"// mip\n"</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="stringliteral">"#define SampleCmpLevel0Tex1D_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, 0.0, CompareValue), 0.0, int(Offset))\n"</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="stringliteral">"#define SampleCmpLevel0Tex1DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0, int(Offset))\n"</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="stringliteral">"#define SampleCmpLevel0Tex2D_4(Tex, Sampler, Coords, CompareValue, Offset) textureLodOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), 0.0, ivec2((Offset).xy))\n"</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="stringliteral">"#define SampleCmpLevel0Tex2DArr_4(Tex, Sampler, Coords, CompareValue, Offset) 0.0 // No textureLodOffset for sampler2DArrayShadow\n"</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> <span class="stringliteral">"// https://www.opengl.org/sdk/docs/man/html/texture.xhtml - note: there are many mistakes on the page\n"</span></div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="stringliteral">"#ifdef FRAGMENT_SHADER\n"</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="stringliteral">"# define Sample_2(Tex, Sampler, Coords) texture (Tex, _ToVec(Coords))\n"</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="stringliteral">"# define Sample_3(Tex, Sampler, Coords, Offset) textureOffset(Tex, _ToVec(Coords), Offset)\n"</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <span class="stringliteral">"# define SampleBias_3(Tex, Sampler, Coords, Bias) texture (Tex, _ToVec(Coords), _ToFloat(Bias))\n"</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> <span class="stringliteral">"# define SampleBias_4(Tex, Sampler, Coords, Bias, Offset) textureOffset(Tex, _ToVec(Coords), Offset, _ToFloat(Bias))\n"</span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> <span class="stringliteral">"# define SampleCmpTex1D_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, 0.0, CompareValue))\n"</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> <span class="stringliteral">"# define SampleCmpTex1DArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue))\n"</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> <span class="stringliteral">"# define SampleCmpTex2D_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue))\n"</span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="stringliteral">"# define SampleCmpTex2DArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue))\n"</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="stringliteral">"# define SampleCmpTexCube_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue))\n"</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> <span class="stringliteral">"# define SampleCmpTexCubeArr_3(Tex, Sampler, Coords, CompareValue) texture(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, (Coords).w), _ToFloat(CompareValue))\n"</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="stringliteral">"# define SampleCmpTex1D_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, 0.0, CompareValue), int(Offset))\n"</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="stringliteral">"# define SampleCmpTex1DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), int(Offset))\n"</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> <span class="stringliteral">"# define SampleCmpTex2D_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec3((Coords).x, (Coords).y, CompareValue), ivec2((Offset).xy))\n"</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="stringliteral">"# define SampleCmpTex2DArr_4(Tex, Sampler, Coords, CompareValue, Offset) textureOffset(Tex, _ToVec4((Coords).x, (Coords).y, (Coords).z, CompareValue), ivec2((Offset).xy))\n"</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> <span class="stringliteral">"#else\n"</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <span class="stringliteral">"// Derivatives are only available in fragment shader. GLSL compiler fails when it\n"</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span> <span class="stringliteral">"// encounters texture() or textureOffset() instructions in other types of shaders. So\n"</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="stringliteral">"// to let the shader be compiled and to have something meaningful, replace such operations\n"</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="stringliteral">"// with textureLod() and textureLodOffset()\n"</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> <span class="stringliteral">"# define Sample_2(Tex, Sampler, Coords) textureLod (Tex, _ToVec(Coords), 0.0)\n"</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <span class="stringliteral">"# define Sample_3(Tex, Sampler, Coords, Offset) textureLodOffset(Tex, _ToVec(Coords), 0.0, Offset)\n"</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> <span class="stringliteral">"# define SampleBias_3(Tex, Sampler, Coords, Bias) textureLod (Tex, _ToVec(Coords), 0.0 + _ToFloat(Bias))\n"</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> <span class="stringliteral">"# define SampleBias_4(Tex, Sampler, Coords, Bias, Offset) textureLodOffset(Tex, _ToVec(Coords), 0.0 + _ToFloat(Bias), Offset)\n"</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> <span class="stringliteral">"# define SampleCmpTex1D_3 SampleCmpLevel0Tex1D_3\n"</span></div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <span class="stringliteral">"# define SampleCmpTex1DArr_3 SampleCmpLevel0Tex1DArr_3\n"</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="stringliteral">"# define SampleCmpTex2D_3 SampleCmpLevel0Tex2D_3\n"</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> <span class="stringliteral">"# define SampleCmpTex2DArr_3 SampleCmpLevel0Tex2DArr_3\n"</span></div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> <span class="stringliteral">"# define SampleCmpTexCube_3 SampleCmpLevel0TexCube_3\n"</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="stringliteral">"# define SampleCmpTexCubeArr_3 SampleCmpLevel0TexCubeArr_3\n"</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> <span class="stringliteral">" \n"</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="stringliteral">"# define SampleCmpTex1D_4 SampleCmpLevel0Tex1D_4\n"</span></div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> <span class="stringliteral">"# define SampleCmpTex1DArr_4 SampleCmpLevel0Tex1DArr_4\n"</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> <span class="stringliteral">"# define SampleCmpTex2D_4 SampleCmpLevel0Tex2D_4\n"</span></div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="stringliteral">"# define SampleCmpTex2DArr_4 SampleCmpLevel0Tex2DArr_4\n"</span></div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> <span class="stringliteral">"// https://www.opengl.org/sdk/docs/man/html/textureLod.xhtml\n"</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="stringliteral">"#define SampleLevel_3(Tex, Sampler, Coords, Level) textureLod (Tex, _ToVec(Coords), _ToFloat(Level))\n"</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> <span class="stringliteral">"#define SampleLevel_4(Tex, Sampler, Coords, Level, Offset) textureLodOffset(Tex, _ToVec(Coords), _ToFloat(Level), Offset)\n"</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> <span class="stringliteral">"// https://www.opengl.org/sdk/docs/man/html/textureGrad.xhtml\n"</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> <span class="stringliteral">"#define SampleGrad_4(Tex, Sampler, Coords, DDX, DDY) textureGrad (Tex, _ToVec(Coords), _ToVec(DDX), _ToVec(DDY))\n"</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="stringliteral">"#define SampleGrad_5(Tex, Sampler, Coords, DDX, DDY, Offset) textureGradOffset(Tex, _ToVec(Coords), _ToVec(DDX), _ToVec(DDY), Offset)\n"</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> <span class="stringliteral">"// texelFetch performs a lookup of a single texel from texture coordinate P in the texture \n"</span></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> <span class="stringliteral">"// bound to sampler. The array layer is specified in the last component of P for array forms. \n"</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="stringliteral">"// The lod parameter (if present) specifies the level-of-detail from which the texel will be fetched. \n"</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> <span class="stringliteral">"// The sample specifies which sample within the texel will be returned when reading from a multi-sample texure.\n"</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="stringliteral">"#define LoadTex1D_1(Tex, Location) texelFetch (Tex, _ToInt((Location).x), _ToInt((Location).y))\n"</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <span class="stringliteral">"#define LoadTex1D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToInt((Location).x), _ToInt((Location).y), int(Offset))\n"</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="stringliteral">"#define LoadTex1DArr_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xy), _ToInt((Location).z) )\n"</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> <span class="stringliteral">"#define LoadTex1DArr_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xy), _ToInt((Location).z), int(Offset))\n"</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="stringliteral">"#define LoadTex2D_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xy), _ToInt((Location).z))\n"</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <span class="stringliteral">"#define LoadTex2D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xy), _ToInt((Location).z), ivec2( (Offset).xy) )\n"</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="stringliteral">"#define LoadTex2DArr_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xyz), _ToInt((Location).w) )\n"</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="stringliteral">"#define LoadTex2DArr_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xyz), _ToInt((Location).w), ivec2( (Offset).xy))\n"</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <span class="stringliteral">"#define LoadTex3D_1(Tex, Location) texelFetch (Tex, _ToIvec( (Location).xyz), _ToInt((Location).w))\n"</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="stringliteral">"#define LoadTex3D_2(Tex, Location, Offset)texelFetchOffset(Tex, _ToIvec( (Location).xyz), _ToInt((Location).w), ivec3( (Offset).xyz))\n"</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="stringliteral">"#define LoadTex2DMS_2(Tex, Location, Sample) texelFetch(Tex, _ToIvec( (Location).xy), _ToInt(Sample))\n"</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="stringliteral">"#define LoadTex2DMS_3(Tex, Location, Sample, Offset)texelFetch(Tex, _ToIvec2( (Location).x + (Offset).x, (Location).y + (Offset).y), int(Sample) ) // No texelFetchOffset for texture2DMS\n"</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> <span class="stringliteral">"#define LoadTex2DMSArr_2(Tex, Location, Sample) texelFetch(Tex, _ToIvec( (Location).xyz), _ToInt(Sample))\n"</span></div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> <span class="stringliteral">"#define LoadTex2DMSArr_3(Tex, Location, Sample, Offset)texelFetch(Tex, _ToIvec3( (Location).x + (Offset).x, (Location).y + (Offset).y, (Location).z), int(Sample)) // No texelFetchOffset for texture2DMSArray\n"</span></div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> <span class="stringliteral">"//https://www.opengl.org/sdk/docs/man/html/imageLoad.xhtml\n"</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> <span class="stringliteral">"#define LoadRWTex1D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).x) )\n"</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> <span class="stringliteral">"#define LoadRWTex1DArr_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xy) )\n"</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> <span class="stringliteral">"#define LoadRWTex2D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xy) )\n"</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> <span class="stringliteral">"#define LoadRWTex2DArr_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xyz) )\n"</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> <span class="stringliteral">"#define LoadRWTex3D_1(Tex, Location) imageLoad(Tex, _ToIvec((Location).xyz) )\n"</span></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> <span class="stringliteral">"#define Gather_2(Tex, Sampler, Location) textureGather (Tex, _ToVec(Location))\n"</span></div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> <span class="stringliteral">"#define Gather_3(Tex, Sampler, Location, Offset)textureGatherOffset(Tex, _ToVec(Location), Offset)\n"</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="stringliteral">"#define GatherCmp_3(Tex, Sampler, Location, CompareVal) textureGather (Tex, _ToVec(Location), _ToFloat(CompareVal))\n"</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="stringliteral">"#define GatherCmp_4(Tex, Sampler, Location, CompareVal, Offset)textureGatherOffset(Tex, _ToVec(Location), _ToFloat(CompareVal), Offset)\n"</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="stringliteral">"// Atomic operations\n"</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="stringliteral">"#define InterlockedAddSharedVar_2(dest, value) atomicAdd(dest, value)\n"</span></div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <span class="stringliteral">"#define InterlockedAddSharedVar_3(dest, value, orig_val) orig_val = atomicAdd(dest, value)\n"</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> <span class="stringliteral">"#define InterlockedAddImage_2(img, coords, value) imageAtomicAdd(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="stringliteral">"#define InterlockedAddImage_3(img, coords, value, orig_val)orig_val = imageAtomicAdd(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span> <span class="stringliteral">"#define InterlockedAndSharedVar_2(dest, value) atomicAnd(dest, value)\n"</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> <span class="stringliteral">"#define InterlockedAndSharedVar_3(dest, value, orig_val) orig_val = atomicAnd(dest, value)\n"</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <span class="stringliteral">"#define InterlockedAndImage_2(img, coords, value) imageAtomicAnd(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> <span class="stringliteral">"#define InterlockedAndImage_3(img, coords, value, orig_val)orig_val = imageAtomicAnd(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> <span class="stringliteral">"#define InterlockedMaxSharedVar_2(dest, value) atomicMax(dest, value)\n"</span></div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> <span class="stringliteral">"#define InterlockedMaxSharedVar_3(dest, value, orig_val) orig_val = atomicMax(dest, value)\n"</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span> <span class="stringliteral">"#define InterlockedMaxImage_2(img, coords, value) imageAtomicMax(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="stringliteral">"#define InterlockedMaxImage_3(img, coords, value, orig_val)orig_val = imageAtomicMax(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="stringliteral">"#define InterlockedMinSharedVar_2(dest, value) atomicMin(dest, value)\n"</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="stringliteral">"#define InterlockedMinSharedVar_3(dest, value, orig_val) orig_val = atomicMin(dest, value)\n"</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span> <span class="stringliteral">"#define InterlockedMinImage_2(img, coords, value) imageAtomicMin(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="stringliteral">"#define InterlockedMinImage_3(img, coords, value, orig_val)orig_val = imageAtomicMin(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> <span class="stringliteral">"#define InterlockedOrSharedVar_2(dest, value) atomicOr(dest, value)\n"</span></div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="stringliteral">"#define InterlockedOrSharedVar_3(dest, value, orig_val) orig_val = atomicOr(dest, value)\n"</span></div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="stringliteral">"#define InterlockedOrImage_2(img, coords, value) imageAtomicOr(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="stringliteral">"#define InterlockedOrImage_3(img, coords, value, orig_val)orig_val = imageAtomicOr(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span> <span class="stringliteral">"#define InterlockedXorSharedVar_2(dest, value) atomicXor(dest, value)\n"</span></div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> <span class="stringliteral">"#define InterlockedXorSharedVar_3(dest, value, orig_val) orig_val = atomicXor(dest, value)\n"</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="stringliteral">"#define InterlockedXorImage_2(img, coords, value) imageAtomicXor(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> <span class="stringliteral">"#define InterlockedXorImage_3(img, coords, value, orig_val)orig_val = imageAtomicXor(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> <span class="stringliteral">"// There is actually no InterlockedExchange() with 2 arguments\n"</span></div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> <span class="stringliteral">"#define InterlockedExchangeSharedVar_2(dest, value) atomicExchange(dest, value)\n"</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span> <span class="stringliteral">"#define InterlockedExchangeSharedVar_3(dest, value, orig_val) orig_val = atomicExchange(dest, value)\n"</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> <span class="stringliteral">"#define InterlockedExchangeImage_2(img, coords, value) imageAtomicExchange(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> <span class="stringliteral">"#define InterlockedExchangeImage_3(img, coords, value, orig_val)orig_val = imageAtomicExchange(img, _ToIvec(coords), value)\n"</span></div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="stringliteral">"//uint imageAtomicCompSwap( image img, IVec P, nint compare, nint data);\n"</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span> <span class="stringliteral">"//void InterlockedCompareExchange( in R dest, in T compare_value, in T value, out T original_value);\n"</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="stringliteral">"#define InterlockedCompareExchangeSharedVar_4(dest, cmp_val, value, orig_val) orig_val = atomicCompSwap(dest, cmp_val, value)\n"</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> <span class="stringliteral">"#define InterlockedCompareExchangeImage_4(img, coords, cmp_val, value, orig_val) orig_val = imageAtomicCompSwap(img, _ToIvec(coords), cmp_val, value)\n"</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> <span class="stringliteral">"#define InterlockedCompareStoreSharedVar_3(dest, cmp_val, value) atomicCompSwap(dest, cmp_val, value)\n"</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="stringliteral">"#define InterlockedCompareStoreImage_3(img, coords, cmp_val, value)imageAtomicCompSwap(img, _ToIvec(coords), cmp_val, value)\n"</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="stringliteral">"// Swizzling macros\n"</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="stringliteral">"#define _SWIZZLE0\n"</span></div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> <span class="stringliteral">"#define _SWIZZLE1 .x\n"</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> <span class="stringliteral">"#define _SWIZZLE2 .xy\n"</span></div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> <span class="stringliteral">"#define _SWIZZLE3 .xyz\n"</span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> <span class="stringliteral">"#define _SWIZZLE4 .xyzw\n"</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> <span class="stringliteral">"// Helper functions\n"</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> <span class="stringliteral">"float2 NormalizedDeviceXYToTexUV( float2 f2ProjSpaceXY )\n"</span></div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> <span class="stringliteral">" return float2(0.5,0.5) + float2(0.5,0.5) * f2ProjSpaceXY.xy;\n"</span></div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> <span class="stringliteral">"float NormalizedDeviceZToDepth(float fNDC_Z)\n"</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> <span class="stringliteral">" return fNDC_Z * 0.5 + 0.5; // [-1, +1] -> [0, 1]\n"</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> <span class="stringliteral">"float DepthToNormalizedDeviceZ(float fDepth)\n"</span></div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> <span class="stringliteral">" return fDepth * 2.0 - 1.0; // [0, 1] -> [-1, +1]\n"</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <span class="stringliteral">"#define F3NDC_XYZ_TO_UVD_SCALE float3(0.5, 0.5, 0.5)\n"</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> <span class="stringliteral">"#define NDC_MIN_Z -1.0 // Minimal z in the normalized device space\n"</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> <span class="stringliteral">"#define MATRIX_ELEMENT(mat, row, col) mat[col][row]\n"</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="stringliteral">"// ---------------------------------- Vertex shader ----------------------------------\n"</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="stringliteral">"#ifdef VERTEX_SHADER\n"</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="stringliteral">"#ifndef GL_ES\n"</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> <span class="stringliteral">"out gl_PerVertex\n"</span></div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="stringliteral">"};\n"</span></div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> <span class="stringliteral">"#define _GET_GL_VERTEX_ID(VertexId)_TypeConvertStore(VertexId, gl_VertexID)\n"</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="stringliteral">"#define _GET_GL_INSTANCE_ID(InstId)_TypeConvertStore(InstId, gl_InstanceID)\n"</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="stringliteral">"#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)\n"</span></div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <span class="stringliteral">"// --------------------------------- Fragment shader ---------------------------------\n"</span></div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <span class="stringliteral">"#ifdef FRAGMENT_SHADER\n"</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="stringliteral">"#define _GET_GL_FRAG_COORD(FragCoord)_ResizeVector(FragCoord, gl_FragCoord)\n"</span></div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span> <span class="stringliteral">"#define _SET_GL_FRAG_DEPTH(Depth)_TypeConvertStore(gl_FragDepth, Depth)\n"</span></div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="stringliteral">"// --------------------------------- Geometry shader ---------------------------------\n"</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="stringliteral">"#ifdef GEOMETRY_SHADER\n"</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="stringliteral">"// ARB_separate_shader_objects requires built-in block gl_PerVertex to be redeclared before accessing its members\n"</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> <span class="stringliteral">"// declaring gl_PointSize and gl_ClipDistance causes compilation error on Android\n"</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="stringliteral">"in gl_PerVertex\n"</span></div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="stringliteral">"} gl_in[];\n"</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="stringliteral">"out gl_PerVertex\n"</span></div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <span class="stringliteral">"};\n"</span></div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> <span class="stringliteral">"#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)\n"</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="stringliteral">"#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_in[i].gl_PrimitiveIDIn)\n"</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="stringliteral">"#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)\n"</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> <span class="stringliteral">"#define _SET_GL_LAYER(Layer)_TypeConvertStore(gl_Layer,Layer)\n"</span></div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="stringliteral">"// --------------------------- Tessellation control shader ---------------------------\n"</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> <span class="stringliteral">"#ifdef TESS_CONTROL_SHADER\n"</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <span class="stringliteral">"in gl_PerVertex\n"</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> <span class="stringliteral">"} gl_in[gl_MaxPatchVertices];\n"</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="stringliteral">"out gl_PerVertex\n"</span></div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> <span class="stringliteral">"} gl_out[];\n"</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> <span class="stringliteral">"#define _GET_GL_INVOCATION_ID(InvocId)_TypeConvertStore(InvocId, gl_InvocationID)\n"</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="stringliteral">"#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_PrimitiveID)\n"</span></div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <span class="stringliteral">"#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)\n"</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> <span class="stringliteral">"#define _SET_GL_POSITION(Pos)gl_out[gl_InvocationID].gl_Position=_ExpandVector(Pos)\n"</span></div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <span class="stringliteral">"#define _SET_GL_TESS_LEVEL_OUTER(OuterLevel)for(int i=0; i < OuterLevel.length(); ++i)gl_TessLevelOuter[i] = OuterLevel[i]\n"</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> <span class="stringliteral">"void _SetGLTessLevelInner(float InnerLevel[2])\n"</span></div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> <span class="stringliteral">" gl_TessLevelInner[0] = InnerLevel[0];\n"</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="stringliteral">" gl_TessLevelInner[1] = InnerLevel[1];\n"</span></div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="stringliteral">"void _SetGLTessLevelInner(float InnerLevel)\n"</span></div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="stringliteral">" gl_TessLevelInner[0] = InnerLevel;\n"</span></div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="stringliteral">"// --------------------------- Tessellation evaluation shader ---------------------------\n"</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> <span class="stringliteral">"#ifdef TESS_EVALUATION_SHADER\n"</span></div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> <span class="stringliteral">"in gl_PerVertex\n"</span></div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> <span class="stringliteral">"} gl_in[gl_MaxPatchVertices];\n"</span></div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> <span class="stringliteral">"out gl_PerVertex\n"</span></div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> <span class="stringliteral">" vec4 gl_Position;\n"</span></div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> <span class="stringliteral">" //float gl_PointSize;\n"</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <span class="stringliteral">" //float gl_ClipDistance[];\n"</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <span class="stringliteral">"};\n"</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="stringliteral">"#define _GET_GL_POSITION(Pos)_ResizeVector(Pos, gl_in[i].gl_Position)\n"</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="stringliteral">"#define _GET_GL_TESS_LEVEL_OUTER(OuterLevel)for(int i=0; i < OuterLevel.length(); ++i)OuterLevel[i] = gl_TessLevelOuter[i]\n"</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="stringliteral">"void _GetGLTessLevelInner(out float InnerLevel[2])\n"</span></div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> <span class="stringliteral">" InnerLevel[0] = gl_TessLevelInner[0];\n"</span></div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> <span class="stringliteral">" InnerLevel[1] = gl_TessLevelInner[1];\n"</span></div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <span class="stringliteral">"void _GetGLTessLevelInner(out float InnerLevel)\n"</span></div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="stringliteral">" InnerLevel = gl_TessLevelInner[0];\n"</span></div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> <span class="stringliteral">"}\n"</span></div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> <span class="stringliteral">"#define _GET_GL_TESS_COORD(TessCoord)_ResizeVector(TessCoord, gl_TessCoord)\n"</span></div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="stringliteral">"#define _GET_GL_PRIMITIVE_ID(PrimId)_TypeConvertStore(PrimId, gl_PrimitiveID)\n"</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="stringliteral">"#define _SET_GL_POSITION(Pos)gl_Position=_ExpandVector(Pos)\n"</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> <span class="stringliteral">"// ---------------------------------- Compute shader ----------------------------------\n"</span></div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="stringliteral">"#ifdef COMPUTE_SHADER\n"</span></div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <span class="stringliteral">"#define _GET_GL_GLOBAL_INVOCATION_ID(Type, InvocId)InvocId=Type(gl_GlobalInvocationID)\n"</span></div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="stringliteral">"#define _GET_GL_WORK_GROUP_ID(Type, GroupId)GroupId=Type(gl_WorkGroupID)\n"</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> <span class="stringliteral">"#define _GET_GL_LOCAL_INVOCATION_ID(Type, InvocId)InvocId=Type(gl_LocalInvocationID)\n"</span></div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="stringliteral">"#define _GET_GL_LOCAL_INVOCATION_INDEX(Type, InvocInd)InvocInd=Type(gl_LocalInvocationIndex)\n"</span></div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="stringliteral">"#endif\n"</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> <span class="stringliteral">"\n"</span></div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="stringliteral">"#endif // _GLSL_DEFINITIONS_\n"</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_stubs_8h_source.html b/doc/html/_g_l_stubs_8h_source.html index 35c1b66a..7ff0c948 100644 --- a/doc/html/_g_l_stubs_8h_source.html +++ b/doc/html/_g_l_stubs_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">GLStubs.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Define unsupported formats for OpenGL ES</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#ifndef GL_RGBA16</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor"># define GL_RGBA16 0x805B</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifndef GL_RGBA16_SNORM</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor"># define GL_RGBA16_SNORM 0x8F9B</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#ifndef GL_RG16</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"># define GL_RG16 0x822C</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#ifndef GL_RG16_SNORM</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"># define GL_RG16_SNORM 0x8F99</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#ifndef GL_R16</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"># define GL_R16 0x822A</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#ifndef GL_R16_SNORM</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"># define GL_R16_SNORM 0x8F98</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGB_S3TC_DXT1_EXT</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"># define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SRGB_S3TC_DXT1_EXT</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"># define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGBA_S3TC_DXT3_EXT</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"># define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"># define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGBA_S3TC_DXT5_EXT</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"># define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"># define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RED_RGTC1</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"># define GL_COMPRESSED_RED_RGTC1 0x8DBB</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SIGNED_RED_RGTC1</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"># define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RG_RGTC2</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"># define GL_COMPRESSED_RG_RGTC2 0x8DBD</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SIGNED_RG_RGTC2</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor"># define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor"># define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor"># define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGBA_BPTC_UNORM</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor"># define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor"># define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#ifndef GL_UNSIGNED_SHORT_5_6_5_REV</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor"># define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_10_10_10_2</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor"># define GL_UNSIGNED_INT_10_10_10_2 0x8036</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#ifndef GL_UNSIGNED_SHORT_5_6_5_REV</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor"># define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#ifndef GL_UNSIGNED_SHORT_1_5_5_5_REV</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor"># define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// Define unsupported shaders</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#ifndef GL_GEOMETRY_SHADER</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor"># define GL_GEOMETRY_SHADER 0x8DD9</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#ifndef GL_TESS_CONTROL_SHADER</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor"># define GL_TESS_CONTROL_SHADER 0x8E88</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#ifndef GL_TESS_EVALUATION_SHADER</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor"># define GL_TESS_EVALUATION_SHADER 0x8E87</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="comment">// Define unsupported texture filtering modes</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#ifndef GL_CLAMP_TO_BORDER</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor"># define GL_CLAMP_TO_BORDER 0</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#ifndef GL_MIRROR_CLAMP_TO_EDGE</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor"># define GL_MIRROR_CLAMP_TO_EDGE 0</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// Define unsupported bind points</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#ifndef GL_DRAW_INDIRECT_BUFFER</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor"># define GL_DRAW_INDIRECT_BUFFER 0x8F3F</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor">#ifndef GL_DISPATCH_INDIRECT_BUFFER</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor"># define GL_DISPATCH_INDIRECT_BUFFER 0x90EE</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#ifndef GL_TEXTURE_1D_ARRAY</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor"># define GL_TEXTURE_1D_ARRAY 0x8C18</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#ifndef GL_TEXTURE_BINDING_1D_ARRAY</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor"># define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#ifndef GL_TEXTURE_1D</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor"># define GL_TEXTURE_1D 0x0DE0</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#ifndef GL_TEXTURE_BINDING_1D</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor"># define GL_TEXTURE_BINDING_1D 0x8068</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#ifndef GL_TEXTURE_2D_MULTISAMPLE</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"># define GL_TEXTURE_2D_MULTISAMPLE 0x9100</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#ifndef GL_TEXTURE_BINDING_2D_MULTISAMPLE</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor"># define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#ifndef GL_TEXTURE_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor"># define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#ifndef GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor"># define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#ifndef GL_TEXTURE_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor"># define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor">#ifndef GL_TEXTURE_BINDING_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor"># define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="preprocessor">#ifndef GL_TEXTURE_BUFFER</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor"># define GL_TEXTURE_BUFFER 0x8C2A</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="comment">// Define unsupported pipeline bind flags</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor">#ifndef GL_VERTEX_SHADER_BIT</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="preprocessor"># define GL_VERTEX_SHADER_BIT 0x00000001</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#ifndef GL_FRAGMENT_SHADER_BIT</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor"># define GL_FRAGMENT_SHADER_BIT 0x00000002</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor">#ifndef GL_GEOMETRY_SHADER_BIT</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor"># define GL_GEOMETRY_SHADER_BIT 0x00000004</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="preprocessor">#ifndef GL_TESS_CONTROL_SHADER_BIT</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor"># define GL_TESS_CONTROL_SHADER_BIT 0x00000008</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor">#ifndef GL_TESS_EVALUATION_SHADER_BIT</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor"># define GL_TESS_EVALUATION_SHADER_BIT 0x00000010</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor">#ifndef GL_COMPUTE_SHADER_BIT</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor"># define GL_COMPUTE_SHADER_BIT 0x00000020</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="comment">// Define unsupported sampler attributes</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="preprocessor">#ifndef GL_TEXTURE_LOD_BIAS</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor"># define GL_TEXTURE_LOD_BIAS 0</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor">#ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor"># define GL_TEXTURE_MAX_ANISOTROPY_EXT 0</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor">#ifndef GL_TEXTURE_BORDER_COLOR</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="preprocessor"># define GL_TEXTURE_BORDER_COLOR 0</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment">// Other unsupported attributes</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="preprocessor">#ifndef GL_PROGRAM_SEPARABLE</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor"># define GL_PROGRAM_SEPARABLE 0x8258</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment">// Define unsupported uniform data types</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor">#ifndef GL_SAMPLER_1D</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor"> #define GL_SAMPLER_1D 0x8B5D</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor">#ifndef GL_SAMPLER_1D_SHADOW</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor"> #define GL_SAMPLER_1D_SHADOW 0x8B61</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="preprocessor">#ifndef GL_SAMPLER_1D_ARRAY </span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="preprocessor"> #define GL_SAMPLER_1D_ARRAY 0x8DC0</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor">#ifndef GL_SAMPLER_1D_ARRAY_SHADOW</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor"> #define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_1D</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="preprocessor"> #define GL_INT_SAMPLER_1D 0x8DC9</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_1D_ARRAY</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="preprocessor"> #define GL_INT_SAMPLER_1D_ARRAY 0x8DCE</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_1D</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_1D_ARRAY</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor">#ifndef GL_SAMPLER_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor"> #define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor">#ifndef GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor"> #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="preprocessor"> #define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor">#ifndef GL_SAMPLER_BUFFER</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor"> #define GL_SAMPLER_BUFFER 0x8DC2</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_BUFFER</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="preprocessor"> #define GL_INT_SAMPLER_BUFFER 0x8DD0</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_BUFFER</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor">#ifndef GL_SAMPLER_2D_MULTISAMPLE</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor"> #define GL_SAMPLER_2D_MULTISAMPLE 0x9108</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_2D_MULTISAMPLE </span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor"> #define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor">#ifndef GL_SAMPLER_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor"> #define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor"> #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor">#ifndef GL_IMAGE_1D</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="preprocessor"> #define GL_IMAGE_1D 0x904C</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="preprocessor">#ifndef GL_IMAGE_2D</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="preprocessor"> #define GL_IMAGE_2D 0x904D</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="preprocessor">#ifndef GL_IMAGE_3D</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="preprocessor"> #define GL_IMAGE_3D 0x904E</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="preprocessor">#ifndef GL_IMAGE_2D_RECT</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor"> #define GL_IMAGE_2D_RECT 0x904F</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="preprocessor">#ifndef GL_IMAGE_CUBE</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor"> #define GL_IMAGE_CUBE 0x9050</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor">#ifndef GL_IMAGE_BUFFER</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor"> #define GL_IMAGE_BUFFER 0x9051</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor">#ifndef GL_IMAGE_1D_ARRAY</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor"> #define GL_IMAGE_1D_ARRAY 0x9052</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="preprocessor">#ifndef GL_IMAGE_2D_ARRAY</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="preprocessor"> #define GL_IMAGE_2D_ARRAY 0x9053</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="preprocessor">#ifndef GL_IMAGE_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="preprocessor"> #define GL_IMAGE_CUBE_MAP_ARRAY 0x9054</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="preprocessor">#ifndef GL_IMAGE_2D_MULTISAMPLE</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="preprocessor"> #define GL_IMAGE_2D_MULTISAMPLE 0x9055</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor">#ifndef GL_IMAGE_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="preprocessor"> #define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_1D</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="preprocessor"> #define GL_INT_IMAGE_1D 0x9057</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_2D</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="preprocessor"> #define GL_INT_IMAGE_2D 0x9058</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_3D</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor"> #define GL_INT_IMAGE_3D 0x9059</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_2D_RECT</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="preprocessor"> #define GL_INT_IMAGE_2D_RECT 0x905A</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_CUBE</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="preprocessor"> #define GL_INT_IMAGE_CUBE 0x905B</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_BUFFER</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor"> #define GL_INT_IMAGE_BUFFER 0x905C</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_1D_ARRAY</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="preprocessor"> #define GL_INT_IMAGE_1D_ARRAY 0x905D</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_2D_ARRAY</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="preprocessor"> #define GL_INT_IMAGE_2D_ARRAY 0x905E</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="preprocessor"> #define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_2D_MULTISAMPLE</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="preprocessor"> #define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="preprocessor"> #define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_1D</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_1D 0x9062</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_2D</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_2D 0x9063</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_3D</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_3D 0x9064</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_2D_RECT</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_CUBE</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_BUFFER</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_1D_ARRAY</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_2D_ARRAY</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="comment">// Compute shader stubs</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="preprocessor">#ifndef GL_READ_ONLY</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="preprocessor"># define GL_READ_ONLY 0x88B8</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="preprocessor">#ifndef GL_WRITE_ONLY</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="preprocessor"># define GL_WRITE_ONLY 0x88B9</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="preprocessor">#ifndef GL_READ_WRITE</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="preprocessor"># define GL_READ_WRITE 0x88BA</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="preprocessor">#ifndef GL_COMPUTE_SHADER</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="preprocessor"># define GL_COMPUTE_SHADER 0x91B9</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="preprocessor">#ifndef GL_ES_VERSION_3_1</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="preprocessor">#define LOAD_GL_BIND_IMAGE_TEXTURE</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="keyword">extern</span> PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="preprocessor">#define LOAD_GL_DISPATCH_COMPUTE</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="keyword">extern</span> PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="preprocessor">#define LOAD_GL_MEMORY_BARRIER </span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="keyword">extern</span> PFNGLMEMORYBARRIERPROC glMemoryBarrier;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="preprocessor">#endif // GL_ES_VERSION_3_1</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor">#ifndef GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="preprocessor"># define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor">#ifndef GL_ELEMENT_ARRAY_BARRIER_BIT</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="preprocessor"># define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="preprocessor">#ifndef GL_UNIFORM_BARRIER_BIT</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="preprocessor"># define GL_UNIFORM_BARRIER_BIT 0x00000004</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="preprocessor">#ifndef GL_TEXTURE_FETCH_BARRIER_BIT</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="preprocessor"># define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor">#ifndef GL_SHADER_IMAGE_ACCESS_BARRIER_BIT</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="preprocessor"># define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="preprocessor">#ifndef GL_COMMAND_BARRIER_BIT</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor"># define GL_COMMAND_BARRIER_BIT 0x00000040</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor">#ifndef GL_PIXEL_BUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="preprocessor"># define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="preprocessor">#ifndef GL_TEXTURE_UPDATE_BARRIER_BIT</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="preprocessor"># define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="preprocessor">#ifndef GL_BUFFER_UPDATE_BARRIER_BIT</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="preprocessor"># define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="preprocessor">#ifndef GL_FRAMEBUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="preprocessor"># define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="preprocessor">#ifndef GL_TRANSFORM_FEEDBACK_BARRIER_BIT</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="preprocessor"># define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="preprocessor">#ifndef GL_ATOMIC_COUNTER_BARRIER_BIT</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="preprocessor"># define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BARRIER_BIT</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="preprocessor">#ifndef GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="preprocessor"># define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="preprocessor">#ifndef GL_QUERY_BUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="preprocessor"># define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="preprocessor">#ifndef GL_ALL_BARRIER_BITS</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="preprocessor"># define GL_ALL_BARRIER_BITS 0xFFFFFFFF</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> </div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="comment">//--------------------------- Texture queries -----------------------------</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="preprocessor">#ifndef GL_TEXTURE_WIDTH</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="preprocessor"># define GL_TEXTURE_WIDTH 0x1000</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="preprocessor">#ifndef GL_TEXTURE_HEIGHT</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="preprocessor"># define GL_TEXTURE_HEIGHT 0x1001</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="preprocessor">#ifndef GL_TEXTURE_DEPTH</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="preprocessor"># define GL_TEXTURE_DEPTH 0x8071</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="preprocessor">#ifndef GL_TEXTURE_INTERNAL_FORMAT</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <span class="preprocessor"># define GL_TEXTURE_INTERNAL_FORMAT 0x1003</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="comment">//------------------------ Program interface query ------------------------</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> <span class="preprocessor">#ifndef GL_UNIFORM</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> <span class="preprocessor"># define GL_UNIFORM 0x92E1</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <span class="preprocessor">#ifndef GL_UNIFORM_BLOCK</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> <span class="preprocessor"># define GL_UNIFORM_BLOCK 0x92E2</span></div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="preprocessor">#ifndef GL_PROGRAM_INPUT</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="preprocessor"># define GL_PROGRAM_INPUT 0x92E3</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> <span class="preprocessor">#ifndef GL_PROGRAM_OUTPUT</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> <span class="preprocessor"># define GL_PROGRAM_OUTPUT 0x92E4</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="preprocessor">#ifndef GL_BUFFER_VARIABLE</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <span class="preprocessor"># define GL_BUFFER_VARIABLE 0x92E5</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> </div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BLOCK</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BLOCK 0x92E6</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> <span class="preprocessor">#ifndef GL_IS_PER_PATCH</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> <span class="preprocessor"># define GL_IS_PER_PATCH 0x92E7</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> </div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="preprocessor">#ifndef GL_VERTEX_SUBROUTINE</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="preprocessor"># define GL_VERTEX_SUBROUTINE 0x92E8</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="preprocessor">#ifndef GL_TESS_CONTROL_SUBROUTINE</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="preprocessor"># define GL_TESS_CONTROL_SUBROUTINE 0x92E9</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="preprocessor">#ifndef GL_TESS_EVALUATION_SUBROUTINE</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="preprocessor"># define GL_TESS_EVALUATION_SUBROUTINE 0x92EA</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="preprocessor">#ifndef GL_GEOMETRY_SUBROUTINE</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> <span class="preprocessor"># define GL_GEOMETRY_SUBROUTINE 0x92EB</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> </div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="preprocessor">#ifndef GL_FRAGMENT_SUBROUTINE</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="preprocessor"># define GL_FRAGMENT_SUBROUTINE 0x92EC</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="preprocessor">#ifndef GL_COMPUTE_SUBROUTINE</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="preprocessor"># define GL_COMPUTE_SUBROUTINE 0x92ED</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> </div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="preprocessor">#ifndef GL_VERTEX_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="preprocessor"># define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> </div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="preprocessor">#ifndef GL_TESS_CONTROL_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="preprocessor"># define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="preprocessor">#ifndef GL_TESS_EVALUATION_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="preprocessor"># define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> <span class="preprocessor">#ifndef GL_GEOMETRY_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="preprocessor"># define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> </div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="preprocessor">#ifndef GL_FRAGMENT_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="preprocessor"># define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="preprocessor">#ifndef GL_COMPUTE_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <span class="preprocessor"># define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="preprocessor">#ifndef GL_TRANSFORM_FEEDBACK_VARYING</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="preprocessor"># define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="preprocessor">#ifndef GL_ACTIVE_RESOURCES</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="preprocessor"># define GL_ACTIVE_RESOURCES 0x92F5</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="preprocessor">#ifndef GL_MAX_NAME_LENGTH</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="preprocessor"># define GL_MAX_NAME_LENGTH 0x92F6</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> </div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="preprocessor">#ifndef GL_MAX_NUM_ACTIVE_VARIABLES</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="preprocessor"># define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> </div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="preprocessor">#ifndef GL_MAX_NUM_COMPATIBLE_SUBROUTINES</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="preprocessor"># define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> </div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="preprocessor">#ifndef GL_NAME_LENGTH</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor"># define GL_NAME_LENGTH 0x92F9</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="preprocessor">#ifndef GL_TYPE</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="preprocessor"># define GL_TYPE 0x92FA</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="preprocessor">#ifndef GL_ARRAY_SIZE</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <span class="preprocessor"># define GL_ARRAY_SIZE 0x92FB</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="preprocessor">#ifndef GL_OFFSET</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="preprocessor"># define GL_OFFSET 0x92FC</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> </div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="preprocessor">#ifndef GL_BLOCK_INDEX</span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="preprocessor"># define GL_BLOCK_INDEX 0x92FD</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> </div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="preprocessor">#ifndef GL_ARRAY_STRIDE</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="preprocessor"># define GL_ARRAY_STRIDE 0x92FE</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> </div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="preprocessor">#ifndef GL_MATRIX_STRIDE</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="preprocessor"># define GL_MATRIX_STRIDE 0x92FF</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> </div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="preprocessor">#ifndef GL_IS_ROW_MAJOR</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="preprocessor"># define GL_IS_ROW_MAJOR 0x9300</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> </div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="preprocessor">#ifndef GL_ATOMIC_COUNTER_BUFFER_INDEX</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> <span class="preprocessor"># define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="preprocessor">#ifndef GL_BUFFER_BINDING</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="preprocessor"># define GL_BUFFER_BINDING 0x9302</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> </div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> <span class="preprocessor">#ifndef GL_BUFFER_DATA_SIZE</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="preprocessor"># define GL_BUFFER_DATA_SIZE 0x9303</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> </div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> <span class="preprocessor">#ifndef GL_NUM_ACTIVE_VARIABLES</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="preprocessor"># define GL_NUM_ACTIVE_VARIABLES 0x9304</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> </div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="preprocessor">#ifndef GL_ACTIVE_VARIABLES</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span> <span class="preprocessor"># define GL_ACTIVE_VARIABLES 0x9305</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_VERTEX_SHADER</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="preprocessor"># define GL_REFERENCED_BY_VERTEX_SHADER 0x9306</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> </div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_TESS_CONTROL_SHADER</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <span class="preprocessor"># define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_TESS_EVALUATION_SHADER</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="preprocessor"># define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_GEOMETRY_SHADER</span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="preprocessor"># define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span> </div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_FRAGMENT_SHADER</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span> <span class="preprocessor"># define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_COMPUTE_SHADER</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="preprocessor"># define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="preprocessor">#ifndef GL_TOP_LEVEL_ARRAY_SIZE</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="preprocessor"># define GL_TOP_LEVEL_ARRAY_SIZE 0x930C</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> </div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> <span class="preprocessor">#ifndef GL_TOP_LEVEL_ARRAY_STRIDE</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="preprocessor"># define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> </div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="preprocessor">#ifndef GL_LOCATION</span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> <span class="preprocessor"># define GL_LOCATION 0x930E</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> </div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="preprocessor">#ifndef GL_LOCATION_INDEX</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="preprocessor"># define GL_LOCATION_INDEX 0x930F</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> </div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> </div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> </div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="comment">// --------------------- Shader storage buffer -----------------------</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="preprocessor">#ifndef GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <span class="preprocessor"># define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> </div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BUFFER</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BUFFER 0x90D2</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BUFFER_BINDING</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3</span></div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BUFFER_START</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BUFFER_START 0x90D4</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BUFFER_SIZE</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> </div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="preprocessor">#ifndef GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="preprocessor"># define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="preprocessor">#ifndef GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="preprocessor"># define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> </div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="preprocessor">#ifndef GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="preprocessor"># define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span> </div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="preprocessor">#ifndef GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="preprocessor"># define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> </div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="preprocessor">#ifndef GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="preprocessor"># define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span> </div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="preprocessor">#ifndef GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="preprocessor"># define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> </div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="preprocessor">#ifndef GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="preprocessor"># define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> </div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="preprocessor">#ifndef GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="preprocessor"># define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> </div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="preprocessor">#ifndef GL_MAX_SHADER_STORAGE_BLOCK_SIZE</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="preprocessor"># define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> </div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> </div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="comment">// Polygon mode</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> <span class="preprocessor">#ifndef GL_POINT</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="preprocessor"># define GL_POINT 0x1B00</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="preprocessor">#endif </span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  </div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> <span class="preprocessor">#ifndef GL_LINE </span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> <span class="preprocessor"># define GL_LINE 0x1B01</span></div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> <span class="preprocessor">#endif </span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  </div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> <span class="preprocessor">#ifndef GL_FILL </span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="preprocessor"># define GL_FILL 0x1B02</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="preprocessor">#ifndef GL_DEPTH_CLAMP</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="preprocessor"># define GL_DEPTH_CLAMP 0</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> <span class="comment">// Blend functions</span></div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> <span class="preprocessor">#ifndef GL_SRC1_COLOR</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> <span class="preprocessor"># define GL_SRC1_COLOR 0x88F9</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span> </div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="preprocessor">#ifndef GL_ONE_MINUS_SRC1_COLOR</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="preprocessor"># define GL_ONE_MINUS_SRC1_COLOR 0x88FA</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> </div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <span class="preprocessor">#ifndef GL_SOURCE1_ALPHA</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> <span class="preprocessor"># define GL_SOURCE1_ALPHA 0x8589</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> <span class="preprocessor">#ifndef GL_SRC1_ALPHA</span></div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <span class="preprocessor"># define GL_SRC1_ALPHA GL_SOURCE1_ALPHA</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> </div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> <span class="preprocessor">#ifndef GL_ONE_MINUS_SRC1_ALPHA</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="preprocessor"># define GL_ONE_MINUS_SRC1_ALPHA 0x88FB</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> <span class="comment">/* ---------------------- GL_ARB_internalformat_query2 --------------------- */</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> </div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="preprocessor">#ifndef GL_INTERNALFORMAT_SUPPORTED</span></div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> <span class="preprocessor"># define GL_INTERNALFORMAT_SUPPORTED 0x826F</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> </div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> <span class="comment">// --------------------- Framebuffer SRGB -----------------------</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="preprocessor">#ifndef GL_FRAMEBUFFER_SRGB</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> <span class="preprocessor"># define GL_FRAMEBUFFER_SRGB 0x8DB9</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> </div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> <span class="comment">// -------------------- Incomplete FBO error codes ---------------</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="preprocessor">#ifndef GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> <span class="preprocessor"># define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> </div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> <span class="preprocessor">#ifndef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="preprocessor"># define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="preprocessor">#ifndef GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <span class="preprocessor"># define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="comment">/* ---------------------- ARB_tessellation_shader --------------------- */</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <span class="preprocessor">#ifndef GL_PATCHES</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="preprocessor"># define GL_PATCHES 0xE</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span> </div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="preprocessor">#ifndef GL_PATCH_VERTICES</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="preprocessor"># define GL_PATCH_VERTICES 0x8E72</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> </div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> </div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> <span class="comment">// Define unsupported GL function stubs</span></div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> <span class="keywordtype">void</span> UnsupportedGLFunctionStub( <span class="keyword">const</span> T &Name )</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> {</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  LOG_ERROR_MESSAGE( Name, <span class="stringliteral">"() is not supported in this API!\n"</span> );</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> }</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> </div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> <span class="preprocessor">#define glDrawElementsInstancedBaseVertexBaseInstance(...) UnsupportedGLFunctionStub("glDrawElementsInstancedBaseVertexBaseInstance")</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> <span class="preprocessor">#define glDrawElementsInstancedBaseVertex(...) UnsupportedGLFunctionStub("glDrawElementsInstancedBaseVertex")</span></div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> <span class="preprocessor">#define glDrawElementsInstancedBaseInstance(...) UnsupportedGLFunctionStub("glDrawElementsInstancedBaseInstance")</span></div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> <span class="preprocessor">#define glDrawArraysInstancedBaseInstance(...) UnsupportedGLFunctionStub("glDrawArraysInstancedBaseInstance")</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="preprocessor">#define glDrawElementsBaseVertex(...) UnsupportedGLFunctionStub("glDrawElementsBaseVertex")</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="preprocessor">#define glTextureView(...) UnsupportedGLFunctionStub("glTextureView")</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="preprocessor">#define glTexStorage1D(...) UnsupportedGLFunctionStub("glTexStorage1D")</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="preprocessor">#define glTexSubImage1D(...) UnsupportedGLFunctionStub("glTexSubImage1D")</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="preprocessor">#define glTexStorage3DMultisample(...) UnsupportedGLFunctionStub("glTexStorage3DMultisample")</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <span class="preprocessor">#ifndef GL_ES_VERSION_3_1</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> </div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="preprocessor"> #define LOAD_GEN_PROGRAM_PIPELINES</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); </div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="keyword">extern</span> PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> </div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <span class="preprocessor"> #define LOAD_GL_DELETE_PROGRAM_PIPELINES</span></div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, <span class="keyword">const</span> GLuint* pipelines);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keyword">extern</span> PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> </div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> <span class="preprocessor"> #define LOAD_GL_BIND_PROGRAM_PIPELINE</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keyword">extern</span> PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="preprocessor"> #define LOAD_DRAW_ELEMENTS_INDIRECT</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, <span class="keyword">const</span> GLvoid *indirect);</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keyword">extern</span> PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> </div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> <span class="preprocessor"> #define LOAD_DRAW_ARRAYS_INDIRECT</span></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDRAWARRAYSINDIRECTPROC)( GLenum mode, <span class="keyword">const</span> GLvoid *indirect );</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="keyword">extern</span> PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> </div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="preprocessor"> #define LOAD_DISPATCH_COMPUTE_INDIRECT</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keyword">extern</span> PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="preprocessor"> #define LOAD_GL_USE_PROGRAM_STAGES</span></div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="keyword">extern</span> PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> </div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> <span class="preprocessor"> #define LOAD_GL_TEX_STORAGE_2D_MULTISAMPLE</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keyword">extern</span> PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <span class="preprocessor"> #define LOAD_GL_PROGRAM_UNIFORM_1I</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x);</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keyword">extern</span> PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> </div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> <span class="preprocessor"> #define LOAD_GL_GET_PROGRAM_INTERFACEIV</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint* params);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keyword">extern</span> PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> </div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> <span class="preprocessor"> #define LOAD_GL_GET_PROGRAM_RESOURCE_NAME</span></div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keyword">extern</span> PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> </div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> <span class="preprocessor"> #define LOAD_GL_GET_PROGRAM_RESOURCEIV</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, <span class="keyword">const</span> GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keyword">extern</span> PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> </div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> <span class="preprocessor"> #define LOAD_GET_TEX_LEVEL_PARAMETER_IV</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keyword">extern</span> PFNGLGETTEXLEVELPARAMETERIVPROC glGetTexLevelParameteriv;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> </div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> <span class="preprocessor">#endif //GL_ES_VERSION_3_1</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> </div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> <span class="preprocessor">#define LOAD_GL_TEX_BUFFER</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLTEXBUFFERPROC) (GLenum, GLenum, GLuint);</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> <span class="keyword">extern</span> PFNGLTEXBUFFERPROC glTexBuffer;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> </div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> <span class="preprocessor">#define LOAD_GL_VIEWPORT_INDEXEDF</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> <span class="keyword">extern</span> PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> <span class="preprocessor">#define LOAD_GL_SCISSOR_INDEXED</span></div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <span class="keyword">extern</span> PFNGLSCISSORINDEXEDPROC glScissorIndexed;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <span class="preprocessor">#define LOAD_GL_POLYGON_MODE</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLPOLYGONMODE) (GLenum face, GLenum mode);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> <span class="keyword">extern</span> PFNGLPOLYGONMODE glPolygonMode;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> </div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> <span class="preprocessor">#define LOAD_GL_ENABLEI</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLENABLEIPROC) (GLenum, GLuint);</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="keyword">extern</span> PFNGLENABLEIPROC glEnablei;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> <span class="preprocessor">#define LOAD_GL_BLEND_FUNC_SEPARATEI</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> <span class="keyword">extern</span> PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> </div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="preprocessor">#define LOAD_GL_BLEND_EQUATION_SEPARATEI</span></div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="keyword">extern</span> PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> </div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> <span class="preprocessor">#define LOAD_GL_DISABLEI</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDISABLEIPROC) (GLenum, GLuint);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="keyword">extern</span> PFNGLDISABLEIPROC glDisablei;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> </div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="preprocessor">#define LOAD_GL_COLOR_MASKI</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLCOLORMASKIPROC) (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> <span class="keyword">extern</span> PFNGLCOLORMASKIPROC glColorMaski;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> </div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <span class="preprocessor">#define LOAD_GL_PATCH_PARAMTER_I</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="keyword">extern</span> PFNGLPATCHPARAMETERIPROC glPatchParameteri;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span> </div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> <span class="preprocessor">#define LOAD_GL_FRAMEBUFFER_TEXTURE</span></div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum, GLenum, GLuint, GLint);</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="keyword">extern</span> PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="preprocessor">#define LOAD_GL_FRAMEBUFFER_TEXTURE_1D</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="keyword">extern</span> PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> <span class="preprocessor">#define LOAD_GL_FRAMEBUFFER_TEXTURE_3D</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> <span class="keyword">extern</span> PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="preprocessor">#define LOAD_GL_COPY_IMAGE_SUB_DATA</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="keyword">extern</span> PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="keywordtype">void</span> LoadGLFunctions();</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Define unsupported formats for OpenGL ES</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#ifndef GL_RGBA16</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor"># define GL_RGBA16 0x805B</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifndef GL_RGBA16_SNORM</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor"># define GL_RGBA16_SNORM 0x8F9B</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#ifndef GL_RG16</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"># define GL_RG16 0x822C</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#ifndef GL_RG16_SNORM</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"># define GL_RG16_SNORM 0x8F99</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#ifndef GL_R16</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"># define GL_R16 0x822A</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#ifndef GL_R16_SNORM</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"># define GL_R16_SNORM 0x8F98</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGB_S3TC_DXT1_EXT</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"># define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SRGB_S3TC_DXT1_EXT</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"># define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGBA_S3TC_DXT3_EXT</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"># define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"># define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGBA_S3TC_DXT5_EXT</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"># define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"># define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RED_RGTC1</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"># define GL_COMPRESSED_RED_RGTC1 0x8DBB</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SIGNED_RED_RGTC1</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"># define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RG_RGTC2</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"># define GL_COMPRESSED_RG_RGTC2 0x8DBD</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SIGNED_RG_RGTC2</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor"># define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor"># define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor"># define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#ifndef GL_COMPRESSED_RGBA_BPTC_UNORM</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor"># define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#ifndef GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor"># define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#ifndef GL_UNSIGNED_SHORT_5_6_5_REV</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor"># define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_10_10_10_2</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor"># define GL_UNSIGNED_INT_10_10_10_2 0x8036</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#ifndef GL_UNSIGNED_SHORT_5_6_5_REV</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor"># define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#ifndef GL_UNSIGNED_SHORT_1_5_5_5_REV</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor"># define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// Define unsupported shaders</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#ifndef GL_GEOMETRY_SHADER</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor"># define GL_GEOMETRY_SHADER 0x8DD9</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#ifndef GL_TESS_CONTROL_SHADER</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor"># define GL_TESS_CONTROL_SHADER 0x8E88</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#ifndef GL_TESS_EVALUATION_SHADER</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor"># define GL_TESS_EVALUATION_SHADER 0x8E87</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="comment">// Define unsupported texture filtering modes</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#ifndef GL_CLAMP_TO_BORDER</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor"># define GL_CLAMP_TO_BORDER 0</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#ifndef GL_MIRROR_CLAMP_TO_EDGE</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor"># define GL_MIRROR_CLAMP_TO_EDGE 0</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// Define unsupported bind points</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#ifndef GL_DRAW_INDIRECT_BUFFER</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor"># define GL_DRAW_INDIRECT_BUFFER 0x8F3F</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor">#ifndef GL_DISPATCH_INDIRECT_BUFFER</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor"># define GL_DISPATCH_INDIRECT_BUFFER 0x90EE</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#ifndef GL_TEXTURE_1D_ARRAY</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor"># define GL_TEXTURE_1D_ARRAY 0x8C18</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#ifndef GL_TEXTURE_BINDING_1D_ARRAY</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor"># define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#ifndef GL_TEXTURE_1D</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor"># define GL_TEXTURE_1D 0x0DE0</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#ifndef GL_TEXTURE_BINDING_1D</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor"># define GL_TEXTURE_BINDING_1D 0x8068</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#ifndef GL_TEXTURE_2D_MULTISAMPLE</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"># define GL_TEXTURE_2D_MULTISAMPLE 0x9100</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#ifndef GL_TEXTURE_BINDING_2D_MULTISAMPLE</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor"># define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#ifndef GL_TEXTURE_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor"># define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#ifndef GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor"># define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#ifndef GL_TEXTURE_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor"># define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor">#ifndef GL_TEXTURE_BINDING_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor"># define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="preprocessor">#ifndef GL_TEXTURE_BUFFER</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor"># define GL_TEXTURE_BUFFER 0x8C2A</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="comment">// Define unsupported pipeline bind flags</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor">#ifndef GL_VERTEX_SHADER_BIT</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="preprocessor"># define GL_VERTEX_SHADER_BIT 0x00000001</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#ifndef GL_FRAGMENT_SHADER_BIT</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor"># define GL_FRAGMENT_SHADER_BIT 0x00000002</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor">#ifndef GL_GEOMETRY_SHADER_BIT</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor"># define GL_GEOMETRY_SHADER_BIT 0x00000004</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="preprocessor">#ifndef GL_TESS_CONTROL_SHADER_BIT</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor"># define GL_TESS_CONTROL_SHADER_BIT 0x00000008</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor">#ifndef GL_TESS_EVALUATION_SHADER_BIT</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor"># define GL_TESS_EVALUATION_SHADER_BIT 0x00000010</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor">#ifndef GL_COMPUTE_SHADER_BIT</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor"># define GL_COMPUTE_SHADER_BIT 0x00000020</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="comment">// Define unsupported sampler attributes</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="preprocessor">#ifndef GL_TEXTURE_LOD_BIAS</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor"># define GL_TEXTURE_LOD_BIAS 0</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor">#ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor"># define GL_TEXTURE_MAX_ANISOTROPY_EXT 0</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor">#ifndef GL_TEXTURE_BORDER_COLOR</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="preprocessor"># define GL_TEXTURE_BORDER_COLOR 0</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment">// Other unsupported attributes</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="preprocessor">#ifndef GL_PROGRAM_SEPARABLE</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor"># define GL_PROGRAM_SEPARABLE 0x8258</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment">// Define unsupported uniform data types</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor">#ifndef GL_SAMPLER_1D</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor"> #define GL_SAMPLER_1D 0x8B5D</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor">#ifndef GL_SAMPLER_1D_SHADOW</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor"> #define GL_SAMPLER_1D_SHADOW 0x8B61</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="preprocessor">#ifndef GL_SAMPLER_1D_ARRAY </span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="preprocessor"> #define GL_SAMPLER_1D_ARRAY 0x8DC0</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor">#ifndef GL_SAMPLER_1D_ARRAY_SHADOW</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor"> #define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_1D</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="preprocessor"> #define GL_INT_SAMPLER_1D 0x8DC9</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_1D_ARRAY</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="preprocessor"> #define GL_INT_SAMPLER_1D_ARRAY 0x8DCE</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_1D</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_1D_ARRAY</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor">#ifndef GL_SAMPLER_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor"> #define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor">#ifndef GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor"> #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="preprocessor"> #define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor">#ifndef GL_SAMPLER_BUFFER</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor"> #define GL_SAMPLER_BUFFER 0x8DC2</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_BUFFER</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="preprocessor"> #define GL_INT_SAMPLER_BUFFER 0x8DD0</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_BUFFER</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor">#ifndef GL_SAMPLER_2D_MULTISAMPLE</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor"> #define GL_SAMPLER_2D_MULTISAMPLE 0x9108</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_2D_MULTISAMPLE </span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor"> #define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor">#ifndef GL_SAMPLER_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor"> #define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="preprocessor">#ifndef GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor"> #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor">#ifndef GL_IMAGE_1D</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="preprocessor"> #define GL_IMAGE_1D 0x904C</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="preprocessor">#ifndef GL_IMAGE_2D</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="preprocessor"> #define GL_IMAGE_2D 0x904D</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="preprocessor">#ifndef GL_IMAGE_3D</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="preprocessor"> #define GL_IMAGE_3D 0x904E</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="preprocessor">#ifndef GL_IMAGE_2D_RECT</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor"> #define GL_IMAGE_2D_RECT 0x904F</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="preprocessor">#ifndef GL_IMAGE_CUBE</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor"> #define GL_IMAGE_CUBE 0x9050</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor">#ifndef GL_IMAGE_BUFFER</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor"> #define GL_IMAGE_BUFFER 0x9051</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor">#ifndef GL_IMAGE_1D_ARRAY</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor"> #define GL_IMAGE_1D_ARRAY 0x9052</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="preprocessor">#ifndef GL_IMAGE_2D_ARRAY</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="preprocessor"> #define GL_IMAGE_2D_ARRAY 0x9053</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="preprocessor">#ifndef GL_IMAGE_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="preprocessor"> #define GL_IMAGE_CUBE_MAP_ARRAY 0x9054</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="preprocessor">#ifndef GL_IMAGE_2D_MULTISAMPLE</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="preprocessor"> #define GL_IMAGE_2D_MULTISAMPLE 0x9055</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor">#ifndef GL_IMAGE_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="preprocessor"> #define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_1D</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="preprocessor"> #define GL_INT_IMAGE_1D 0x9057</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_2D</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="preprocessor"> #define GL_INT_IMAGE_2D 0x9058</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_3D</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor"> #define GL_INT_IMAGE_3D 0x9059</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_2D_RECT</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="preprocessor"> #define GL_INT_IMAGE_2D_RECT 0x905A</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_CUBE</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="preprocessor"> #define GL_INT_IMAGE_CUBE 0x905B</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_BUFFER</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor"> #define GL_INT_IMAGE_BUFFER 0x905C</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_1D_ARRAY</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="preprocessor"> #define GL_INT_IMAGE_1D_ARRAY 0x905D</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_2D_ARRAY</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="preprocessor"> #define GL_INT_IMAGE_2D_ARRAY 0x905E</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="preprocessor"> #define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_2D_MULTISAMPLE</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="preprocessor"> #define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="preprocessor">#ifndef GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="preprocessor"> #define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_1D</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_1D 0x9062</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_2D</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_2D 0x9063</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_3D</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_3D 0x9064</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_2D_RECT</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_CUBE</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_BUFFER</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_1D_ARRAY</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_2D_ARRAY</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor">#ifndef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="preprocessor"> #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="comment">// Compute shader stubs</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="preprocessor">#ifndef GL_READ_ONLY</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="preprocessor"># define GL_READ_ONLY 0x88B8</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="preprocessor">#ifndef GL_WRITE_ONLY</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="preprocessor"># define GL_WRITE_ONLY 0x88B9</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="preprocessor">#ifndef GL_READ_WRITE</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="preprocessor"># define GL_READ_WRITE 0x88BA</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="preprocessor">#ifndef GL_COMPUTE_SHADER</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="preprocessor"># define GL_COMPUTE_SHADER 0x91B9</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="preprocessor">#ifndef GL_ES_VERSION_3_1</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="preprocessor">#define LOAD_GL_BIND_IMAGE_TEXTURE</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="keyword">extern</span> PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="preprocessor">#define LOAD_GL_DISPATCH_COMPUTE</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="keyword">extern</span> PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="preprocessor">#define LOAD_GL_MEMORY_BARRIER </span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="keyword">extern</span> PFNGLMEMORYBARRIERPROC glMemoryBarrier;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="preprocessor">#endif // GL_ES_VERSION_3_1</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor">#ifndef GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="preprocessor"># define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor">#ifndef GL_ELEMENT_ARRAY_BARRIER_BIT</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="preprocessor"># define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="preprocessor">#ifndef GL_UNIFORM_BARRIER_BIT</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="preprocessor"># define GL_UNIFORM_BARRIER_BIT 0x00000004</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="preprocessor">#ifndef GL_TEXTURE_FETCH_BARRIER_BIT</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="preprocessor"># define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor">#ifndef GL_SHADER_IMAGE_ACCESS_BARRIER_BIT</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="preprocessor"># define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="preprocessor">#ifndef GL_COMMAND_BARRIER_BIT</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor"># define GL_COMMAND_BARRIER_BIT 0x00000040</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor">#ifndef GL_PIXEL_BUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="preprocessor"># define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="preprocessor">#ifndef GL_TEXTURE_UPDATE_BARRIER_BIT</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="preprocessor"># define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="preprocessor">#ifndef GL_BUFFER_UPDATE_BARRIER_BIT</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="preprocessor"># define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="preprocessor">#ifndef GL_FRAMEBUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="preprocessor"># define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="preprocessor">#ifndef GL_TRANSFORM_FEEDBACK_BARRIER_BIT</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="preprocessor"># define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="preprocessor">#ifndef GL_ATOMIC_COUNTER_BARRIER_BIT</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="preprocessor"># define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BARRIER_BIT</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="preprocessor">#ifndef GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="preprocessor"># define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="preprocessor">#ifndef GL_QUERY_BUFFER_BARRIER_BIT</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="preprocessor"># define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="preprocessor">#ifndef GL_ALL_BARRIER_BITS</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="preprocessor"># define GL_ALL_BARRIER_BITS 0xFFFFFFFF</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> </div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="comment">//--------------------------- Texture queries -----------------------------</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="preprocessor">#ifndef GL_TEXTURE_WIDTH</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="preprocessor"># define GL_TEXTURE_WIDTH 0x1000</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="preprocessor">#ifndef GL_TEXTURE_HEIGHT</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="preprocessor"># define GL_TEXTURE_HEIGHT 0x1001</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="preprocessor">#ifndef GL_TEXTURE_DEPTH</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="preprocessor"># define GL_TEXTURE_DEPTH 0x8071</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="preprocessor">#ifndef GL_TEXTURE_INTERNAL_FORMAT</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <span class="preprocessor"># define GL_TEXTURE_INTERNAL_FORMAT 0x1003</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="comment">//------------------------ Program interface query ------------------------</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> <span class="preprocessor">#ifndef GL_UNIFORM</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span> <span class="preprocessor"># define GL_UNIFORM 0x92E1</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <span class="preprocessor">#ifndef GL_UNIFORM_BLOCK</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> <span class="preprocessor"># define GL_UNIFORM_BLOCK 0x92E2</span></div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="preprocessor">#ifndef GL_PROGRAM_INPUT</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="preprocessor"># define GL_PROGRAM_INPUT 0x92E3</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> <span class="preprocessor">#ifndef GL_PROGRAM_OUTPUT</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> <span class="preprocessor"># define GL_PROGRAM_OUTPUT 0x92E4</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="preprocessor">#ifndef GL_BUFFER_VARIABLE</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <span class="preprocessor"># define GL_BUFFER_VARIABLE 0x92E5</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> </div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BLOCK</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BLOCK 0x92E6</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> <span class="preprocessor">#ifndef GL_IS_PER_PATCH</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> <span class="preprocessor"># define GL_IS_PER_PATCH 0x92E7</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> </div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="preprocessor">#ifndef GL_VERTEX_SUBROUTINE</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="preprocessor"># define GL_VERTEX_SUBROUTINE 0x92E8</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="preprocessor">#ifndef GL_TESS_CONTROL_SUBROUTINE</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="preprocessor"># define GL_TESS_CONTROL_SUBROUTINE 0x92E9</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="preprocessor">#ifndef GL_TESS_EVALUATION_SUBROUTINE</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="preprocessor"># define GL_TESS_EVALUATION_SUBROUTINE 0x92EA</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="preprocessor">#ifndef GL_GEOMETRY_SUBROUTINE</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> <span class="preprocessor"># define GL_GEOMETRY_SUBROUTINE 0x92EB</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> </div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="preprocessor">#ifndef GL_FRAGMENT_SUBROUTINE</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="preprocessor"># define GL_FRAGMENT_SUBROUTINE 0x92EC</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="preprocessor">#ifndef GL_COMPUTE_SUBROUTINE</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="preprocessor"># define GL_COMPUTE_SUBROUTINE 0x92ED</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> </div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="preprocessor">#ifndef GL_VERTEX_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="preprocessor"># define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> </div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="preprocessor">#ifndef GL_TESS_CONTROL_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="preprocessor"># define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="preprocessor">#ifndef GL_TESS_EVALUATION_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="preprocessor"># define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> <span class="preprocessor">#ifndef GL_GEOMETRY_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="preprocessor"># define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> </div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="preprocessor">#ifndef GL_FRAGMENT_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="preprocessor"># define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="preprocessor">#ifndef GL_COMPUTE_SUBROUTINE_UNIFORM</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <span class="preprocessor"># define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="preprocessor">#ifndef GL_TRANSFORM_FEEDBACK_VARYING</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="preprocessor"># define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="preprocessor">#ifndef GL_ACTIVE_RESOURCES</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="preprocessor"># define GL_ACTIVE_RESOURCES 0x92F5</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="preprocessor">#ifndef GL_MAX_NAME_LENGTH</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="preprocessor"># define GL_MAX_NAME_LENGTH 0x92F6</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> </div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="preprocessor">#ifndef GL_MAX_NUM_ACTIVE_VARIABLES</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="preprocessor"># define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> </div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="preprocessor">#ifndef GL_MAX_NUM_COMPATIBLE_SUBROUTINES</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="preprocessor"># define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> </div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="preprocessor">#ifndef GL_NAME_LENGTH</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor"># define GL_NAME_LENGTH 0x92F9</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="preprocessor">#ifndef GL_TYPE</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="preprocessor"># define GL_TYPE 0x92FA</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="preprocessor">#ifndef GL_ARRAY_SIZE</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <span class="preprocessor"># define GL_ARRAY_SIZE 0x92FB</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="preprocessor">#ifndef GL_OFFSET</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="preprocessor"># define GL_OFFSET 0x92FC</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> </div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="preprocessor">#ifndef GL_BLOCK_INDEX</span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="preprocessor"># define GL_BLOCK_INDEX 0x92FD</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> </div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="preprocessor">#ifndef GL_ARRAY_STRIDE</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="preprocessor"># define GL_ARRAY_STRIDE 0x92FE</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> </div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="preprocessor">#ifndef GL_MATRIX_STRIDE</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="preprocessor"># define GL_MATRIX_STRIDE 0x92FF</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span> </div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="preprocessor">#ifndef GL_IS_ROW_MAJOR</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="preprocessor"># define GL_IS_ROW_MAJOR 0x9300</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> </div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="preprocessor">#ifndef GL_ATOMIC_COUNTER_BUFFER_INDEX</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> <span class="preprocessor"># define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="preprocessor">#ifndef GL_BUFFER_BINDING</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="preprocessor"># define GL_BUFFER_BINDING 0x9302</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> </div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> <span class="preprocessor">#ifndef GL_BUFFER_DATA_SIZE</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="preprocessor"># define GL_BUFFER_DATA_SIZE 0x9303</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> </div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> <span class="preprocessor">#ifndef GL_NUM_ACTIVE_VARIABLES</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="preprocessor"># define GL_NUM_ACTIVE_VARIABLES 0x9304</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> </div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="preprocessor">#ifndef GL_ACTIVE_VARIABLES</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span> <span class="preprocessor"># define GL_ACTIVE_VARIABLES 0x9305</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_VERTEX_SHADER</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="preprocessor"># define GL_REFERENCED_BY_VERTEX_SHADER 0x9306</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> </div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_TESS_CONTROL_SHADER</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <span class="preprocessor"># define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_TESS_EVALUATION_SHADER</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="preprocessor"># define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_GEOMETRY_SHADER</span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="preprocessor"># define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span> </div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_FRAGMENT_SHADER</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span> <span class="preprocessor"># define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="preprocessor">#ifndef GL_REFERENCED_BY_COMPUTE_SHADER</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="preprocessor"># define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> </div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="preprocessor">#ifndef GL_TOP_LEVEL_ARRAY_SIZE</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="preprocessor"># define GL_TOP_LEVEL_ARRAY_SIZE 0x930C</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> </div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> <span class="preprocessor">#ifndef GL_TOP_LEVEL_ARRAY_STRIDE</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="preprocessor"># define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> </div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="preprocessor">#ifndef GL_LOCATION</span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> <span class="preprocessor"># define GL_LOCATION 0x930E</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> </div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="preprocessor">#ifndef GL_LOCATION_INDEX</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="preprocessor"># define GL_LOCATION_INDEX 0x930F</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> </div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> </div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> </div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="comment">// --------------------- Shader storage buffer -----------------------</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="preprocessor">#ifndef GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <span class="preprocessor"># define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> </div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BUFFER</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BUFFER 0x90D2</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BUFFER_BINDING</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3</span></div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BUFFER_START</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BUFFER_START 0x90D4</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BUFFER_SIZE</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> </div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="preprocessor">#ifndef GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="preprocessor"># define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="preprocessor">#ifndef GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="preprocessor"># define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> </div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="preprocessor">#ifndef GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="preprocessor"># define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span> </div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="preprocessor">#ifndef GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="preprocessor"># define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> </div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="preprocessor">#ifndef GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="preprocessor"># define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span> </div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="preprocessor">#ifndef GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="preprocessor"># define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> </div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="preprocessor">#ifndef GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="preprocessor"># define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> </div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="preprocessor">#ifndef GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="preprocessor"># define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> </div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="preprocessor">#ifndef GL_MAX_SHADER_STORAGE_BLOCK_SIZE</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="preprocessor"># define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> </div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="preprocessor">#ifndef GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="preprocessor"># define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> </div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="comment">// Polygon mode</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> <span class="preprocessor">#ifndef GL_POINT</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="preprocessor"># define GL_POINT 0x1B00</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="preprocessor">#endif </span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  </div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> <span class="preprocessor">#ifndef GL_LINE </span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> <span class="preprocessor"># define GL_LINE 0x1B01</span></div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> <span class="preprocessor">#endif </span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  </div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> <span class="preprocessor">#ifndef GL_FILL </span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="preprocessor"># define GL_FILL 0x1B02</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="preprocessor">#ifndef GL_DEPTH_CLAMP</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="preprocessor"># define GL_DEPTH_CLAMP 0</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> <span class="comment">// Blend functions</span></div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span> <span class="preprocessor">#ifndef GL_SRC1_COLOR</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> <span class="preprocessor"># define GL_SRC1_COLOR 0x88F9</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span> </div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="preprocessor">#ifndef GL_ONE_MINUS_SRC1_COLOR</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="preprocessor"># define GL_ONE_MINUS_SRC1_COLOR 0x88FA</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> </div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <span class="preprocessor">#ifndef GL_SOURCE1_ALPHA</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> <span class="preprocessor"># define GL_SOURCE1_ALPHA 0x8589</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> <span class="preprocessor">#ifndef GL_SRC1_ALPHA</span></div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <span class="preprocessor"># define GL_SRC1_ALPHA GL_SOURCE1_ALPHA</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> </div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> <span class="preprocessor">#ifndef GL_ONE_MINUS_SRC1_ALPHA</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="preprocessor"># define GL_ONE_MINUS_SRC1_ALPHA 0x88FB</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> <span class="comment">/* ---------------------- GL_ARB_internalformat_query2 --------------------- */</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> </div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="preprocessor">#ifndef GL_INTERNALFORMAT_SUPPORTED</span></div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> <span class="preprocessor"># define GL_INTERNALFORMAT_SUPPORTED 0x826F</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> </div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> <span class="comment">// --------------------- Framebuffer SRGB -----------------------</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="preprocessor">#ifndef GL_FRAMEBUFFER_SRGB</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> <span class="preprocessor"># define GL_FRAMEBUFFER_SRGB 0x8DB9</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> </div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> <span class="comment">// -------------------- Incomplete FBO error codes ---------------</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="preprocessor">#ifndef GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> <span class="preprocessor"># define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> </div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> <span class="preprocessor">#ifndef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="preprocessor"># define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="preprocessor">#ifndef GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <span class="preprocessor"># define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="comment">/* ---------------------- ARB_tessellation_shader --------------------- */</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <span class="preprocessor">#ifndef GL_PATCHES</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="preprocessor"># define GL_PATCHES 0xE</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span> </div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="preprocessor">#ifndef GL_PATCH_VERTICES</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="preprocessor"># define GL_PATCH_VERTICES 0x8E72</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> </div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> </div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> <span class="comment">// Define unsupported GL function stubs</span></div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> <span class="keywordtype">void</span> UnsupportedGLFunctionStub( <span class="keyword">const</span> T &Name )</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> {</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  LOG_ERROR_MESSAGE( Name, <span class="stringliteral">"() is not supported in this API!\n"</span> );</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> }</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> </div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> <span class="preprocessor">#define glDrawElementsInstancedBaseVertexBaseInstance(...) UnsupportedGLFunctionStub("glDrawElementsInstancedBaseVertexBaseInstance")</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> <span class="preprocessor">#define glDrawElementsInstancedBaseVertex(...) UnsupportedGLFunctionStub("glDrawElementsInstancedBaseVertex")</span></div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> <span class="preprocessor">#define glDrawElementsInstancedBaseInstance(...) UnsupportedGLFunctionStub("glDrawElementsInstancedBaseInstance")</span></div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> <span class="preprocessor">#define glDrawArraysInstancedBaseInstance(...) UnsupportedGLFunctionStub("glDrawArraysInstancedBaseInstance")</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="preprocessor">#define glDrawElementsBaseVertex(...) UnsupportedGLFunctionStub("glDrawElementsBaseVertex")</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="preprocessor">#define glTextureView(...) UnsupportedGLFunctionStub("glTextureView")</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="preprocessor">#define glTexStorage1D(...) UnsupportedGLFunctionStub("glTexStorage1D")</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="preprocessor">#define glTexSubImage1D(...) UnsupportedGLFunctionStub("glTexSubImage1D")</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="preprocessor">#define glTexStorage3DMultisample(...) UnsupportedGLFunctionStub("glTexStorage3DMultisample")</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <span class="preprocessor">#ifndef GL_ES_VERSION_3_1</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> </div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="preprocessor"> #define LOAD_GEN_PROGRAM_PIPELINES</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint* pipelines); </div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="keyword">extern</span> PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> </div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <span class="preprocessor"> #define LOAD_GL_DELETE_PROGRAM_PIPELINES</span></div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, <span class="keyword">const</span> GLuint* pipelines);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keyword">extern</span> PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> </div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> <span class="preprocessor"> #define LOAD_GL_BIND_PROGRAM_PIPELINE</span></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keyword">extern</span> PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="preprocessor"> #define LOAD_DRAW_ELEMENTS_INDIRECT</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, <span class="keyword">const</span> GLvoid *indirect);</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keyword">extern</span> PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> </div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> <span class="preprocessor"> #define LOAD_DRAW_ARRAYS_INDIRECT</span></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDRAWARRAYSINDIRECTPROC)( GLenum mode, <span class="keyword">const</span> GLvoid *indirect );</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="keyword">extern</span> PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> </div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="preprocessor"> #define LOAD_DISPATCH_COMPUTE_INDIRECT</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keyword">extern</span> PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="preprocessor"> #define LOAD_GL_USE_PROGRAM_STAGES</span></div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="keyword">extern</span> PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> </div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> <span class="preprocessor"> #define LOAD_GL_TEX_STORAGE_2D_MULTISAMPLE</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keyword">extern</span> PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <span class="preprocessor"> #define LOAD_GL_PROGRAM_UNIFORM_1I</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint x);</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keyword">extern</span> PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> </div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> <span class="preprocessor"> #define LOAD_GL_GET_PROGRAM_INTERFACEIV</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint* params);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keyword">extern</span> PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> </div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> <span class="preprocessor"> #define LOAD_GL_GET_PROGRAM_RESOURCE_NAME</span></div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar *name);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keyword">extern</span> PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> </div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> <span class="preprocessor"> #define LOAD_GL_GET_PROGRAM_RESOURCEIV</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, <span class="keyword">const</span> GLenum* props, GLsizei bufSize, GLsizei *length, GLint *params);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keyword">extern</span> PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> </div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> <span class="preprocessor"> #define LOAD_GET_TEX_LEVEL_PARAMETER_IV</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keyword">extern</span> PFNGLGETTEXLEVELPARAMETERIVPROC glGetTexLevelParameteriv;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> </div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> <span class="preprocessor">#endif //GL_ES_VERSION_3_1</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> </div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> <span class="preprocessor">#define LOAD_GL_TEX_BUFFER</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLTEXBUFFERPROC) (GLenum, GLenum, GLuint);</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> <span class="keyword">extern</span> PFNGLTEXBUFFERPROC glTexBuffer;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> </div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> <span class="preprocessor">#define LOAD_GL_VIEWPORT_INDEXEDF</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> <span class="keyword">extern</span> PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> <span class="preprocessor">#define LOAD_GL_SCISSOR_INDEXED</span></div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <span class="keyword">extern</span> PFNGLSCISSORINDEXEDPROC glScissorIndexed;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <span class="preprocessor">#define LOAD_GL_POLYGON_MODE</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLPOLYGONMODE) (GLenum face, GLenum mode);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> <span class="keyword">extern</span> PFNGLPOLYGONMODE glPolygonMode;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> </div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> <span class="preprocessor">#define LOAD_GL_ENABLEI</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLENABLEIPROC) (GLenum, GLuint);</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="keyword">extern</span> PFNGLENABLEIPROC glEnablei;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> <span class="preprocessor">#define LOAD_GL_BLEND_FUNC_SEPARATEI</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> <span class="keyword">extern</span> PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> </div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="preprocessor">#define LOAD_GL_BLEND_EQUATION_SEPARATEI</span></div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="keyword">extern</span> PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> </div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> <span class="preprocessor">#define LOAD_GL_DISABLEI</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLDISABLEIPROC) (GLenum, GLuint);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="keyword">extern</span> PFNGLDISABLEIPROC glDisablei;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> </div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="preprocessor">#define LOAD_GL_COLOR_MASKI</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLCOLORMASKIPROC) (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> <span class="keyword">extern</span> PFNGLCOLORMASKIPROC glColorMaski;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> </div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <span class="preprocessor">#define LOAD_GL_PATCH_PARAMTER_I</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="keyword">extern</span> PFNGLPATCHPARAMETERIPROC glPatchParameteri;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span> </div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> <span class="preprocessor">#define LOAD_GL_FRAMEBUFFER_TEXTURE</span></div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum, GLenum, GLuint, GLint);</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="keyword">extern</span> PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="preprocessor">#define LOAD_GL_FRAMEBUFFER_TEXTURE_1D</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="keyword">extern</span> PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> <span class="preprocessor">#define LOAD_GL_FRAMEBUFFER_TEXTURE_3D</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> <span class="keyword">extern</span> PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="preprocessor">#define LOAD_GL_COPY_IMAGE_SUB_DATA</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="keyword">typedef</span> void (GL_APIENTRY* PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="keyword">extern</span> PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="keywordtype">void</span> LoadGLFunctions();</div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_g_l_type_conversions_8h_source.html b/doc/html/_g_l_type_conversions_8h_source.html index e2b41fe2..7e001c59 100644 --- a/doc/html/_g_l_type_conversions_8h_source.html +++ b/doc/html/_g_l_type_conversions_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">GLTypeConversions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">static</span> <span class="keyword">const</span> GLenum PrimTopologyToGLTopologyMap[] = </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  0, <span class="comment">//PRIMITIVE_TOPOLOGY_UNDEFINED = 0</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  GL_TRIANGLES, <span class="comment">//PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  GL_TRIANGLE_STRIP, <span class="comment">//PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  GL_POINTS, <span class="comment">//PRIMITIVE_TOPOLOGY_POINT_LIST</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  GL_LINES <span class="comment">//PRIMITIVE_TOPOLOGY_LINE_LIST</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">inline</span> GLenum PrimitiveTopologyToGLTopology(<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> PrimTopology)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  VERIFY_EXPR(PrimTopology < _countof(PrimTopologyToGLTopologyMap));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">auto</span> GLTopology = PrimTopologyToGLTopologyMap[PrimTopology];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">switch</span>(PrimTopology)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a>: VERIFY_EXPR(GLTopology == 0); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ae92cbcbf18a66dbe4463436512255d71">PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</a>: VERIFY_EXPR(GLTopology == GL_TRIANGLES); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7be4708b91dbb1e86bc0e83bf4f7c3d6">PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP</a>: VERIFY_EXPR(GLTopology == GL_TRIANGLE_STRIP); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">PRIMITIVE_TOPOLOGY_POINT_LIST</a>: VERIFY_EXPR(GLTopology == GL_POINTS); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a9cc861405d74774fa3e1dfea46af38f5">PRIMITIVE_TOPOLOGY_LINE_LIST</a>: VERIFY_EXPR(GLTopology == GL_LINES); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unexpected primitive topology"</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> GLTopology;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">static</span> <span class="keyword">const</span> GLenum TypeToGLTypeMap[] = </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  0, <span class="comment">//VT_UNDEFINED = 0</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GL_BYTE, <span class="comment">//VT_INT8</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GL_SHORT, <span class="comment">//VT_INT16</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  GL_INT, <span class="comment">//VT_INT32</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  GL_UNSIGNED_BYTE, <span class="comment">//VT_UINT8</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  GL_UNSIGNED_SHORT, <span class="comment">//VT_UINT16</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  GL_UNSIGNED_INT, <span class="comment">//VT_UINT32</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  0, <span class="comment">//VT_FLOAT16</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  GL_FLOAT <span class="comment">//VT_FLOAT32</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> };</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">inline</span> GLenum TypeToGLType(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> Value)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  VERIFY_EXPR(Value < _countof(TypeToGLTypeMap));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">auto</span> GLType = TypeToGLTypeMap[Value];</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">switch</span>(Value)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa69a8f2c4802cb3dad00664337211e3d5">VT_INT8</a>: VERIFY_EXPR(GLType == GL_BYTE); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa3de9144a26c37fb6f00e6ab31019011a">VT_INT16</a>: VERIFY_EXPR(GLType == GL_SHORT); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aadce96830d631236f889b6131d8f93927">VT_INT32</a>: VERIFY_EXPR(GLType == GL_INT); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aae4d8703975c37ec65b37a255db3d573f">VT_UINT8</a>: VERIFY_EXPR(GLType == GL_UNSIGNED_BYTE); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa0e15f9d0c65df848ae20a42d67b78ee2">VT_UINT16</a>: VERIFY_EXPR(GLType == GL_UNSIGNED_SHORT); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa8d8ad1b30a33c40ba392d626909e200e">VT_UINT32</a>: VERIFY_EXPR(GLType == GL_UNSIGNED_INT); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a>: VERIFY_EXPR(GLType == GL_FLOAT); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unexpected value type"</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> GLType;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">inline</span> GLenum UsageToGLUsage(<a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> Usage)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// http://www.informit.com/articles/article.aspx?p=2033340&seqNum=2</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">switch</span>(Usage)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746aad6764a09ac229be9768507bf46c9747">USAGE_STATIC</a>: <span class="keywordflow">return</span> GL_STATIC_DRAW;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>: <span class="keywordflow">return</span> GL_DYNAMIC_DRAW;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>: <span class="keywordflow">return</span> GL_STREAM_DRAW;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>: <span class="keywordflow">return</span> GL_DYNAMIC_READ;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknow usage"</span> ); <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> FilterTypeToGLFilterType(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> Filter, GLenum &GLFilter, Bool &bIsAnisotropic, Bool &bIsComparison)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">switch</span>(Filter)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a93daeed05a3dd2c9b924c7c2717eb5d5">FILTER_TYPE_UNKNOWN</a>:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  UNEXPECTED( <span class="stringliteral">"Unspecified filter type"</span> ); </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  bIsComparison = <span class="keyword">false</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  GLFilter = GL_NEAREST;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  bIsComparison = <span class="keyword">false</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  GLFilter = GL_NEAREST;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  bIsComparison = <span class="keyword">false</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  GLFilter = GL_LINEAR;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>:</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  bIsAnisotropic = <span class="keyword">true</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  bIsComparison = <span class="keyword">false</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  GLFilter = GL_LINEAR;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a>:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  bIsComparison = <span class="keyword">true</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  GLFilter = GL_NEAREST;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a>:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  bIsComparison = <span class="keyword">true</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  GLFilter = GL_LINEAR;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97">FILTER_TYPE_COMPARISON_ANISOTROPIC</a>:</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  bIsAnisotropic = <span class="keyword">true</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  bIsComparison = <span class="keyword">true</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  GLFilter = GL_LINEAR;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  bIsComparison = <span class="keyword">false</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  UNEXPECTED( <span class="stringliteral">"Unknown filter type"</span> ); </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  GLFilter = GL_NEAREST;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> GLenum TexFormatToGLInternalTexFormat(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat, Uint32 BindFlags = 0);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> GLInternalTexFormatToTexFormat(GLenum GlFormat);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> GLenum CorrectGLTexFormat(GLenum GLTexFormat, Uint32 BindFlags);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keyword">inline</span> GLenum TexAddressModeToGLAddressMode(<a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> Mode)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">switch</span>(Mode)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1ae4eb70142178447e2c072c2d66d5c002">TEXTURE_ADDRESS_UNKNOWN</a>: UNEXPECTED( <span class="stringliteral">"Texture address mode is not specified"</span> ); <span class="keywordflow">return</span> GL_CLAMP_TO_EDGE;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>: <span class="keywordflow">return</span> GL_REPEAT;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a>: <span class="keywordflow">return</span> GL_MIRRORED_REPEAT;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>: <span class="keywordflow">return</span> GL_CLAMP_TO_EDGE;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a3f55d99e8bb9fbd60ad58ad42f7754cd">TEXTURE_ADDRESS_BORDER</a>: <span class="keywordflow">return</span> GL_CLAMP_TO_BORDER;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1afadca32bf8a0f145bc506aa8583712c2">TEXTURE_ADDRESS_MIRROR_ONCE</a>: <span class="keywordflow">return</span> GL_MIRROR_CLAMP_TO_EDGE; <span class="comment">// only available with OpenGL 4.4</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// This mode seems to be different from D3D11_TEXTURE_ADDRESS_MIRROR_ONCE</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// The texture coord is clamped to the [-1, 1] range, but mirrors the </span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// negative direction with the positive. Basically, it acts as</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// GL_CLAMP_TO_EDGE except that it takes the absolute value of the texture </span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// coordinates before clamping.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknown texture address mode"</span> ); <span class="keywordflow">return</span> GL_CLAMP_TO_EDGE;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keyword">inline</span> GLenum CompareFuncToGLCompareFunc(<a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">switch</span>(Func)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5">COMPARISON_FUNC_UNKNOWN</a>: UNEXPECTED( <span class="stringliteral">"Comparison function is not specified"</span> ); <span class="keywordflow">return</span> GL_ALWAYS;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb">COMPARISON_FUNC_NEVER</a>: <span class="keywordflow">return</span> GL_NEVER;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a411164cf3b8a7ce0e4d3792b4bfe3e63">COMPARISON_FUNC_LESS</a>: <span class="keywordflow">return</span> GL_LESS;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad33573ebed971ae2e788c0c2119433c8">COMPARISON_FUNC_EQUAL</a>: <span class="keywordflow">return</span> GL_EQUAL;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11">COMPARISON_FUNC_LESS_EQUAL</a>: <span class="keywordflow">return</span> GL_LEQUAL;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ae3ab0763823fc67730b719b4acafeea2">COMPARISON_FUNC_GREATER</a>: <span class="keywordflow">return</span> GL_GREATER;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3abf16cedb7ad37988bab6e7a80e11f263">COMPARISON_FUNC_NOT_EQUAL</a>: <span class="keywordflow">return</span> GL_NOTEQUAL;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad35e669229761e23a8b6d7b1dff8d6a3">COMPARISON_FUNC_GREATER_EQUAL</a>: <span class="keywordflow">return</span> GL_GEQUAL;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11">COMPARISON_FUNC_ALWAYS</a>: <span class="keywordflow">return</span> GL_ALWAYS;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknown comparison func"</span> ); <span class="keywordflow">return</span> GL_ALWAYS;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="keyword">struct </span>NativePixelAttribs</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  GLenum PixelFormat;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  GLenum DataType;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  Bool IsCompressed;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">explicit</span> NativePixelAttribs(GLenum _PixelFormat = 0, GLenum _DataType = 0, Bool _IsCompressed = False) :</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  PixelFormat(_PixelFormat),</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  DataType(_DataType),</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  IsCompressed(_IsCompressed)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {}</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> };</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keyword">inline</span> Uint32 GetNumPixelFormatComponents(GLenum Format)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">switch</span>(Format)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> GL_RGBA:</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">case</span> GL_RGBA_INTEGER:</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">case</span> GL_RGB:</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">case</span> GL_RGB_INTEGER:</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> 3;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">case</span> GL_RG:</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">case</span> GL_RG_INTEGER:</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">case</span> GL_RED:</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">case</span> GL_RED_INTEGER:</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">case</span> GL_DEPTH_COMPONENT:</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">case</span> GL_DEPTH_STENCIL:</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknonw pixel format"</span> ); <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  };</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="keyword">inline</span> Uint32 GetPixelTypeSize(GLenum Type)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">switch</span>(Type)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">case</span> GL_FLOAT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLfloat);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT_10_10_10_2: </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT_2_10_10_10_REV:</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT_10F_11F_11F_REV:</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT_24_8:</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT_5_9_9_9_REV:</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLuint);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">case</span> GL_INT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLint);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">case</span> GL_HALF_FLOAT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLhalf);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">case</span> GL_UNSIGNED_SHORT_5_6_5:</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">case</span> GL_UNSIGNED_SHORT_5_6_5_REV:</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">case</span> GL_UNSIGNED_SHORT_5_5_5_1:</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">case</span> GL_UNSIGNED_SHORT_1_5_5_5_REV:</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">case</span> GL_UNSIGNED_SHORT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLushort);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">case</span> GL_SHORT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLshort);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">case</span> GL_UNSIGNED_BYTE: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLubyte);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">case</span> GL_BYTE: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLbyte);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">case</span> GL_FLOAT_32_UNSIGNED_INT_24_8_REV:<span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLfloat) + <span class="keyword">sizeof</span>(GLuint);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknonw pixel type"</span> ); <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> NativePixelAttribs GetNativePixelTransferAttribs(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> GLenum AccessFlags2GLAccess( Uint32 UAVAccessFlags );</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> GLenum TypeToGLTexFormat( <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> ValType, Uint32 NumComponents, Bool bIsNormalized );</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> GLenum StencilOp2GlStencilOp( <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilOp );</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> GLenum BlendFactor2GLBlend( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> bf );</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> GLenum BlendOperation2GLBlendOp( <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">BLEND_OPERATION</a> BlendOp );</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</div><div class="ttc" id="namespace_diligent_html_ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869"><div class="ttname"><a href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">Diligent::PRIMITIVE_TOPOLOGY_POINT_LIST</a></div><div class="ttdoc">Interpret the vertex data as a list of points. D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_POINTLIST. OpenGL counterpart: GL_POINTS. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:71</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">static</span> <span class="keyword">const</span> GLenum PrimTopologyToGLTopologyMap[] = </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  0, <span class="comment">//PRIMITIVE_TOPOLOGY_UNDEFINED = 0</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  GL_TRIANGLES, <span class="comment">//PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  GL_TRIANGLE_STRIP, <span class="comment">//PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  GL_POINTS, <span class="comment">//PRIMITIVE_TOPOLOGY_POINT_LIST</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  GL_LINES <span class="comment">//PRIMITIVE_TOPOLOGY_LINE_LIST</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">inline</span> GLenum PrimitiveTopologyToGLTopology(<a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5">PRIMITIVE_TOPOLOGY</a> PrimTopology)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  VERIFY_EXPR(PrimTopology < _countof(PrimTopologyToGLTopologyMap));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">auto</span> GLTopology = PrimTopologyToGLTopologyMap[PrimTopology];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">switch</span>(PrimTopology)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ad267d66962cb5db91791b795890a4543">PRIMITIVE_TOPOLOGY_UNDEFINED</a>: VERIFY_EXPR(GLTopology == 0); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ae92cbcbf18a66dbe4463436512255d71">PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</a>: VERIFY_EXPR(GLTopology == GL_TRIANGLES); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a7be4708b91dbb1e86bc0e83bf4f7c3d6">PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP</a>: VERIFY_EXPR(GLTopology == GL_TRIANGLE_STRIP); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">PRIMITIVE_TOPOLOGY_POINT_LIST</a>: VERIFY_EXPR(GLTopology == GL_POINTS); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a9cc861405d74774fa3e1dfea46af38f5">PRIMITIVE_TOPOLOGY_LINE_LIST</a>: VERIFY_EXPR(GLTopology == GL_LINES); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unexpected primitive topology"</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> GLTopology;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">static</span> <span class="keyword">const</span> GLenum TypeToGLTypeMap[] = </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  0, <span class="comment">//VT_UNDEFINED = 0</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GL_BYTE, <span class="comment">//VT_INT8</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GL_SHORT, <span class="comment">//VT_INT16</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  GL_INT, <span class="comment">//VT_INT32</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  GL_UNSIGNED_BYTE, <span class="comment">//VT_UINT8</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  GL_UNSIGNED_SHORT, <span class="comment">//VT_UINT16</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  GL_UNSIGNED_INT, <span class="comment">//VT_UINT32</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  0, <span class="comment">//VT_FLOAT16</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  GL_FLOAT <span class="comment">//VT_FLOAT32</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> };</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">inline</span> GLenum TypeToGLType(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> Value)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  VERIFY_EXPR(Value < _countof(TypeToGLTypeMap));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">auto</span> GLType = TypeToGLTypeMap[Value];</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">switch</span>(Value)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa69a8f2c4802cb3dad00664337211e3d5">VT_INT8</a>: VERIFY_EXPR(GLType == GL_BYTE); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa3de9144a26c37fb6f00e6ab31019011a">VT_INT16</a>: VERIFY_EXPR(GLType == GL_SHORT); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aadce96830d631236f889b6131d8f93927">VT_INT32</a>: VERIFY_EXPR(GLType == GL_INT); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aae4d8703975c37ec65b37a255db3d573f">VT_UINT8</a>: VERIFY_EXPR(GLType == GL_UNSIGNED_BYTE); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa0e15f9d0c65df848ae20a42d67b78ee2">VT_UINT16</a>: VERIFY_EXPR(GLType == GL_UNSIGNED_SHORT); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa8d8ad1b30a33c40ba392d626909e200e">VT_UINT32</a>: VERIFY_EXPR(GLType == GL_UNSIGNED_INT); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a>: VERIFY_EXPR(GLType == GL_FLOAT); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unexpected value type"</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> GLType;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">inline</span> GLenum UsageToGLUsage(<a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> Usage)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// http://www.informit.com/articles/article.aspx?p=2033340&seqNum=2</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">switch</span>(Usage)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746aad6764a09ac229be9768507bf46c9747">USAGE_STATIC</a>: <span class="keywordflow">return</span> GL_STATIC_DRAW;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>: <span class="keywordflow">return</span> GL_DYNAMIC_DRAW;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>: <span class="keywordflow">return</span> GL_STREAM_DRAW;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a>: <span class="keywordflow">return</span> GL_DYNAMIC_READ;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknow usage"</span> ); <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> FilterTypeToGLFilterType(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> Filter, GLenum &GLFilter, Bool &bIsAnisotropic, Bool &bIsComparison)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">switch</span>(Filter)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a93daeed05a3dd2c9b924c7c2717eb5d5">FILTER_TYPE_UNKNOWN</a>:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  UNEXPECTED( <span class="stringliteral">"Unspecified filter type"</span> ); </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  bIsComparison = <span class="keyword">false</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  GLFilter = GL_NEAREST;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  bIsComparison = <span class="keyword">false</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  GLFilter = GL_NEAREST;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  bIsComparison = <span class="keyword">false</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  GLFilter = GL_LINEAR;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>:</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  bIsAnisotropic = <span class="keyword">true</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  bIsComparison = <span class="keyword">false</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  GLFilter = GL_LINEAR;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a>:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  bIsComparison = <span class="keyword">true</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  GLFilter = GL_NEAREST;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a>:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  bIsComparison = <span class="keyword">true</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  GLFilter = GL_LINEAR;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97">FILTER_TYPE_COMPARISON_ANISOTROPIC</a>:</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  bIsAnisotropic = <span class="keyword">true</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  bIsComparison = <span class="keyword">true</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  GLFilter = GL_LINEAR;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  bIsAnisotropic = <span class="keyword">false</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  bIsComparison = <span class="keyword">false</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  UNEXPECTED( <span class="stringliteral">"Unknown filter type"</span> ); </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  GLFilter = GL_NEAREST;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> GLenum TexFormatToGLInternalTexFormat(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat, Uint32 BindFlags = 0);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> GLInternalTexFormatToTexFormat(GLenum GlFormat);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> GLenum CorrectGLTexFormat(GLenum GLTexFormat, Uint32 BindFlags);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keyword">inline</span> GLenum TexAddressModeToGLAddressMode(<a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> Mode)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">switch</span>(Mode)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1ae4eb70142178447e2c072c2d66d5c002">TEXTURE_ADDRESS_UNKNOWN</a>: UNEXPECTED( <span class="stringliteral">"Texture address mode is not specified"</span> ); <span class="keywordflow">return</span> GL_CLAMP_TO_EDGE;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a>: <span class="keywordflow">return</span> GL_REPEAT;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a>: <span class="keywordflow">return</span> GL_MIRRORED_REPEAT;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>: <span class="keywordflow">return</span> GL_CLAMP_TO_EDGE;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a3f55d99e8bb9fbd60ad58ad42f7754cd">TEXTURE_ADDRESS_BORDER</a>: <span class="keywordflow">return</span> GL_CLAMP_TO_BORDER;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1afadca32bf8a0f145bc506aa8583712c2">TEXTURE_ADDRESS_MIRROR_ONCE</a>: <span class="keywordflow">return</span> GL_MIRROR_CLAMP_TO_EDGE; <span class="comment">// only available with OpenGL 4.4</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// This mode seems to be different from D3D11_TEXTURE_ADDRESS_MIRROR_ONCE</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// The texture coord is clamped to the [-1, 1] range, but mirrors the </span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// negative direction with the positive. Basically, it acts as</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// GL_CLAMP_TO_EDGE except that it takes the absolute value of the texture </span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// coordinates before clamping.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknown texture address mode"</span> ); <span class="keywordflow">return</span> GL_CLAMP_TO_EDGE;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keyword">inline</span> GLenum CompareFuncToGLCompareFunc(<a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> Func)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">switch</span>(Func)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5">COMPARISON_FUNC_UNKNOWN</a>: UNEXPECTED( <span class="stringliteral">"Comparison function is not specified"</span> ); <span class="keywordflow">return</span> GL_ALWAYS;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb">COMPARISON_FUNC_NEVER</a>: <span class="keywordflow">return</span> GL_NEVER;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a411164cf3b8a7ce0e4d3792b4bfe3e63">COMPARISON_FUNC_LESS</a>: <span class="keywordflow">return</span> GL_LESS;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad33573ebed971ae2e788c0c2119433c8">COMPARISON_FUNC_EQUAL</a>: <span class="keywordflow">return</span> GL_EQUAL;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11">COMPARISON_FUNC_LESS_EQUAL</a>: <span class="keywordflow">return</span> GL_LEQUAL;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ae3ab0763823fc67730b719b4acafeea2">COMPARISON_FUNC_GREATER</a>: <span class="keywordflow">return</span> GL_GREATER;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3abf16cedb7ad37988bab6e7a80e11f263">COMPARISON_FUNC_NOT_EQUAL</a>: <span class="keywordflow">return</span> GL_NOTEQUAL;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad35e669229761e23a8b6d7b1dff8d6a3">COMPARISON_FUNC_GREATER_EQUAL</a>: <span class="keywordflow">return</span> GL_GEQUAL;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11">COMPARISON_FUNC_ALWAYS</a>: <span class="keywordflow">return</span> GL_ALWAYS;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknown comparison func"</span> ); <span class="keywordflow">return</span> GL_ALWAYS;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="keyword">struct </span>NativePixelAttribs</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  GLenum PixelFormat;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  GLenum DataType;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  Bool IsCompressed;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">explicit</span> NativePixelAttribs(GLenum _PixelFormat = 0, GLenum _DataType = 0, Bool _IsCompressed = False) :</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  PixelFormat(_PixelFormat),</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  DataType(_DataType),</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  IsCompressed(_IsCompressed)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {}</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> };</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keyword">inline</span> Uint32 GetNumPixelFormatComponents(GLenum Format)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">switch</span>(Format)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> GL_RGBA:</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">case</span> GL_RGBA_INTEGER:</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">case</span> GL_RGB:</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">case</span> GL_RGB_INTEGER:</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> 3;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">case</span> GL_RG:</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">case</span> GL_RG_INTEGER:</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">case</span> GL_RED:</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">case</span> GL_RED_INTEGER:</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">case</span> GL_DEPTH_COMPONENT:</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">case</span> GL_DEPTH_STENCIL:</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknonw pixel format"</span> ); <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  };</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="keyword">inline</span> Uint32 GetPixelTypeSize(GLenum Type)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">switch</span>(Type)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">case</span> GL_FLOAT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLfloat);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT_10_10_10_2: </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT_2_10_10_10_REV:</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT_10F_11F_11F_REV:</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT_24_8:</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT_5_9_9_9_REV:</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> GL_UNSIGNED_INT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLuint);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">case</span> GL_INT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLint);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">case</span> GL_HALF_FLOAT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLhalf);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">case</span> GL_UNSIGNED_SHORT_5_6_5:</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">case</span> GL_UNSIGNED_SHORT_5_6_5_REV:</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">case</span> GL_UNSIGNED_SHORT_5_5_5_1:</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">case</span> GL_UNSIGNED_SHORT_1_5_5_5_REV:</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">case</span> GL_UNSIGNED_SHORT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLushort);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">case</span> GL_SHORT: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLshort);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">case</span> GL_UNSIGNED_BYTE: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLubyte);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">case</span> GL_BYTE: <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLbyte);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">case</span> GL_FLOAT_32_UNSIGNED_INT_24_8_REV:<span class="keywordflow">return</span> <span class="keyword">sizeof</span>(GLfloat) + <span class="keyword">sizeof</span>(GLuint);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknonw pixel type"</span> ); <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> NativePixelAttribs GetNativePixelTransferAttribs(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> GLenum AccessFlags2GLAccess( Uint32 UAVAccessFlags );</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> GLenum TypeToGLTexFormat( <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> ValType, Uint32 NumComponents, Bool bIsNormalized );</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> GLenum StencilOp2GlStencilOp( <a class="code" href="namespace_diligent.html#a4d5f2c67b76f870790521dd26e4a8a29">STENCIL_OP</a> StencilOp );</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> GLenum BlendFactor2GLBlend( <a class="code" href="namespace_diligent.html#a781bf760ca4b6e5258059a857c2f70b1">BLEND_FACTOR</a> bf );</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> GLenum BlendOperation2GLBlendOp( <a class="code" href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">BLEND_OPERATION</a> BlendOp );</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</div><div class="ttc" id="namespace_diligent_html_ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869"><div class="ttname"><a href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5a6ac72ddf8c6ba3f85c505eed11b7f869">Diligent::PRIMITIVE_TOPOLOGY_POINT_LIST</a></div><div class="ttdoc">Interpret the vertex data as a list of points. D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_POINTLIST. OpenGL counterpart: GL_POINTS. </div><div class="ttdef"><b>Definition:</b> DeviceContext.h:71</div></div> <div class="ttc" id="namespace_diligent_html_a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11"><div class="ttname"><a href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11">Diligent::COMPARISON_FUNC_LESS_EQUAL</a></div><div class="ttdoc">Comparison passes if the source data is less than or equal to the destination data. Direct3D counterpart: D3D11_COMPARISON_LESS_EQUAL/D3D12_COMPARISON_FUNC_LESS_EQUAL. OpenGL counterpart: GL_LEQUAL. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:866</div></div> <div class="ttc" id="namespace_diligent_html_a1a15723d053d87194d02437ffd2f55f3"><div class="ttname"><a href="namespace_diligent.html#a1a15723d053d87194d02437ffd2f55f3">Diligent::BLEND_OPERATION</a></div><div class="ttdeci">BLEND_OPERATION</div><div class="ttdoc">Blending operation. </div><div class="ttdef"><b>Definition:</b> BlendState.h:130</div></div> <div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> @@ -123,7 +123,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_generate_mips_8h_source.html b/doc/html/_generate_mips_8h_source.html index 795b81b2..8fdb6f78 100644 --- a/doc/html/_generate_mips_8h_source.html +++ b/doc/html/_generate_mips_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">GenerateMips.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// The source code in this file is derived from ColorBuffer.h and GraphicsCore.h developed by Minigraph</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Original source files header:</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">//</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Copyright (c) Microsoft. All rights reserved.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// This code is licensed under the MIT License (MIT).</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">//</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// Developed by Minigraph</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">//</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Author: James Stanard </span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">//</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">class </span>GenerateMipsHelper</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GenerateMipsHelper(ID3D12Device *pd3d12Device);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">void</span> GenerateMips(<span class="keyword">class</span> RenderDeviceD3D12Impl *pRenderDeviceD3D12, <span class="keyword">class</span> TextureViewD3D12Impl *pTexView, <span class="keyword">class</span> CommandContext &Ctx);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  CComPtr<ID3D12RootSignature> m_pGenerateMipsRS;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  CComPtr<ID3D12PipelineState> m_pGenerateMipsLinearPSO[4];</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  CComPtr<ID3D12PipelineState> m_pGenerateMipsGammaPSO[4];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// The source code in this file is derived from ColorBuffer.h and GraphicsCore.h developed by Minigraph</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Original source files header:</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">//</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Copyright (c) Microsoft. All rights reserved.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// This code is licensed under the MIT License (MIT).</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">//</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// Developed by Minigraph</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">//</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Author: James Stanard </span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">//</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">class </span>GenerateMipsHelper</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GenerateMipsHelper(ID3D12Device *pd3d12Device);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">void</span> GenerateMips(<span class="keyword">class</span> RenderDeviceD3D12Impl *pRenderDeviceD3D12, <span class="keyword">class</span> TextureViewD3D12Impl *pTexView, <span class="keyword">class</span> CommandContext &Ctx);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  CComPtr<ID3D12RootSignature> m_pGenerateMipsRS;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  CComPtr<ID3D12PipelineState> m_pGenerateMipsLinearPSO[4];</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  CComPtr<ID3D12PipelineState> m_pGenerateMipsGammaPSO[4];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_graphics_2_graphics_engine_2include_2pch_8h_source.html b/doc/html/_graphics_2_graphics_engine_2include_2pch_8h_source.html index 9e6099ec..d5fabf5e 100644 --- a/doc/html/_graphics_2_graphics_engine_2include_2pch_8h_source.html +++ b/doc/html/_graphics_2_graphics_engine_2include_2pch_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">pch.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "DeviceContextBase.h"</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "DeviceContextBase.h"</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_graphics_2_graphics_engine_2interface_2shader_8h_source.html b/doc/html/_graphics_2_graphics_engine_2interface_2shader_8h_source.html index 94ca1b62..5a6d8c71 100644 --- a/doc/html/_graphics_2_graphics_engine_2interface_2shader_8h_source.html +++ b/doc/html/_graphics_2_graphics_engine_2interface_2shader_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">Shader.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "FileStream.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// {2989B45C-143D-4886-B89C-C3271C2DCC5D}</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_Shader =</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> { 0x2989b45c, 0x143d, 0x4886, { 0xb8, 0x9c, 0xc3, 0x27, 0x1c, 0x2d, 0xcc, 0x5d } };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// {0D57DF3F-977D-4C8F-B64C-6675814BC80C}</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderVariable =</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> { 0xd57df3f, 0x977d, 0x4c8f, { 0xb6, 0x4c, 0x66, 0x75, 0x81, 0x4b, 0xc8, 0xc } };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2"> 46</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> : <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a"> 48</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a> = 0x000, </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f"> 49</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a> = 0x001, </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34"> 50</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a> = 0x002, </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3"> 51</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a> = 0x004, </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b"> 52</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a> = 0x008, </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf"> 53</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a> = 0x010, </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29"> 54</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a> = 0x020 </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">enum</span> SHADER_PROFILE : <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  SHADER_PROFILE_DEFAULT = 0,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  SHADER_PROFILE_DX_4_0,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  SHADER_PROFILE_DX_5_0,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  SHADER_PROFILE_DX_5_1,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  SHADER_PROFILE_GL_4_2</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0"> 67</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0">SHADER_SOURCE_LANGUAGE</a> : <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98"> 70</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98">SHADER_SOURCE_LANGUAGE_DEFAULT</a> = 0,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0ae2902026c29ba5ceeec9a0bb4f25e111"> 73</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0ae2902026c29ba5ceeec9a0bb4f25e111">SHADER_SOURCE_LANGUAGE_HLSL</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a0fb7dd30648819a279edf2829d258561"> 76</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a0fb7dd30648819a279edf2829d258561">SHADER_SOURCE_LANGUAGE_GLSL</a></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8"> 81</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8">BIND_SHADER_RESOURCES_FLAGS</a> : <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a356bf35ddf7ca9489736c0d8992d3032"> 85</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a356bf35ddf7ca9489736c0d8992d3032">BIND_SHADER_RESOURCES_RESET_BINDINGS</a> = 0x01,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a6a7da6200cf9bedda2d76b51b2233170"> 91</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a6a7da6200cf9bedda2d76b51b2233170">BIND_SHADER_RESOURCES_UPDATE_UNRESOLVED</a> = 0x02,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a996116faf0124f92452cb6b65a66a4bd"> 96</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a996116faf0124f92452cb6b65a66a4bd">BIND_SHADER_RESOURCES_ALL_RESOLVED</a> = 0x04</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698"> 100</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> : <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3"> 105</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a> = 0, </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a"> 110</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16"> 114</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16">SHADER_VARIABLE_TYPE_DYNAMIC</a>,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb"> 117</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html"> 121</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> {</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce"> 124</a></span>  <span class="keyword">const</span> Char *<a class="code" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce">Name</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3"> 127</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3">Type</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a>(<span class="keyword">const</span> Char *_Name = <span class="keyword">nullptr</span>, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _Type = <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>) : </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce">Name</a>(_Name),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3">Type</a>(_Type)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {}</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> };</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html"> 136</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c"> 139</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c">TextureName</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf"> 142</a></span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a> <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf">Desc</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>(){};</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>(<span class="keyword">const</span> Char* _TexName, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a> &_Desc) : </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c">TextureName</a>(_TexName),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf">Desc</a>(_Desc)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {}</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> };</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html"> 152</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68"> 155</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68">ShaderType</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Bool</a> bCacheCompiledShader;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  SHADER_PROFILE TargetProfile;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481"> 163</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481">DefaultVariableType</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a"> 166</a></span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a> *<a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f"> 169</a></span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f">NumVariables</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979"> 172</a></span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979">NumStaticSamplers</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf"> 175</a></span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a> *<a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a>() : </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68">ShaderType</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>),</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  bCacheCompiledShader(False),</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  TargetProfile(SHADER_PROFILE_DEFAULT),</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481">DefaultVariableType</a>(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>),</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>(nullptr),</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f">NumVariables</a>(0),</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979">NumStaticSamplers</a>(0),</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>(nullptr)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {}</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> };</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_source_input_stream_factory.html"> 190</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateInputStream(<span class="keyword">const</span> Diligent::Char *Name, <a class="code" href="class_diligent_1_1_i_file_stream.html">IFileStream</a> **ppStream) = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> };</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="keyword">struct </span>ShaderMacro</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">const</span> Char* Name;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">const</span> Char* Definition;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  ShaderMacro(<span class="keyword">const</span> Char* _Name, <span class="keyword">const</span> Char* _Def) : Name( _Name ), Definition( _Def ) {}</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> };</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html"> 204</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a26734decb81a8c8d625f12596348096d"> 209</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a26734decb81a8c8d625f12596348096d">FilePath</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a5e2f0d77ee1090be19d6d55c06df5972"> 215</a></span>  <a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a> *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a5e2f0d77ee1090be19d6d55c06df5972">pShaderSourceStreamFactory</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a7cab639ba508ebc065290f8d9d0c8e91"> 228</a></span>  <span class="keyword">class </span>IHLSL2GLSLConversionStream **<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a7cab639ba508ebc065290f8d9d0c8e91">ppConversionStream</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec"> 233</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec">Source</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  </div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ab91e80c16df5ee5624e56f8fdbb0e98d"> 239</a></span>  <span class="keyword">const</span> <span class="keywordtype">void</span> *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ab91e80c16df5ee5624e56f8fdbb0e98d">ByteCode</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a2dc3b36f68b617161f138be5df2138f5"> 244</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a2dc3b36f68b617161f138be5df2138f5">ByteCodeSize</a> = 0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ae06a6f4125da854f03b39f31ac0ad013"> 249</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ae06a6f4125da854f03b39f31ac0ad013">EntryPoint</a> = <span class="stringliteral">"main"</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#afa568255f209ad0f61ef97e57bb0d402"> 254</a></span>  <span class="keyword">const</span> ShaderMacro *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#afa568255f209ad0f61ef97e57bb0d402">Macros</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#afc6c0ca2303848fec84b25e8c4a444fd"> 257</a></span>  <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#afc6c0ca2303848fec84b25e8c4a444fd">Desc</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ab4f1dc9f9314d639690bde42a8b56535"> 260</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0">SHADER_SOURCE_LANGUAGE</a> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ab4f1dc9f9314d639690bde42a8b56535">SourceLanguage</a> = <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98">SHADER_SOURCE_LANGUAGE_DEFAULT</a>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> };</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_variable.html"> 265</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_object.html">IObject</a></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html#abf1fd12f07f3d932f04e8e34a981d896">Set</a>(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject) = 0;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html#a1485fa8a056824cf955b5bdbe1d7cd17">SetArray</a>(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> FirstElement, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumElements) = 0;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> };</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader.html"> 288</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader.html#a1927ad928f908db0d6f4f669202b90b2">QueryInterface</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">Diligent::INTERFACE_ID</a> &IID, <a class="code" href="class_diligent_1_1_i_object.html">IObject</a> **ppInterface ) = 0;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> &<a class="code" href="class_diligent_1_1_i_shader.html#a4bd05dd784c6881c7f80e68df675f5e8">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader.html#a631860cef0bb50e081bab0acd1345cf1">BindResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Flags ) = 0;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* <a class="code" href="class_diligent_1_1_i_shader.html#ad3e51fa57cd1db70da2bc07773c1fdea">GetShaderVariable</a>(<span class="keyword">const</span> Char* Name) = 0;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> };</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> }</div><div class="ttc" id="struct_diligent_1_1_shader_creation_attribs_html_aef8d7926abec30fe25ee611f2f40d6ec"><div class="ttname"><a href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec">Diligent::ShaderCreationAttribs::Source</a></div><div class="ttdeci">const Char * Source</div><div class="ttdoc">Shader source. </div><div class="ttdef"><b>Definition:</b> Shader.h:233</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "FileStream.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// {2989B45C-143D-4886-B89C-C3271C2DCC5D}</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_Shader =</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> { 0x2989b45c, 0x143d, 0x4886, { 0xb8, 0x9c, 0xc3, 0x27, 0x1c, 0x2d, 0xcc, 0x5d } };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// {0D57DF3F-977D-4C8F-B64C-6675814BC80C}</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderVariable =</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> { 0xd57df3f, 0x977d, 0x4c8f, { 0xb6, 0x4c, 0x66, 0x75, 0x81, 0x4b, 0xc8, 0xc } };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2"> 46</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> : <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a"> 48</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a> = 0x000, </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f"> 49</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a> = 0x001, </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34"> 50</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a> = 0x002, </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3"> 51</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a> = 0x004, </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b"> 52</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a> = 0x008, </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf"> 53</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a> = 0x010, </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29"> 54</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a> = 0x020 </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">enum</span> SHADER_PROFILE : <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  SHADER_PROFILE_DEFAULT = 0,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  SHADER_PROFILE_DX_4_0,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  SHADER_PROFILE_DX_5_0,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  SHADER_PROFILE_DX_5_1,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  SHADER_PROFILE_GL_4_2</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0"> 67</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0">SHADER_SOURCE_LANGUAGE</a> : <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98"> 70</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98">SHADER_SOURCE_LANGUAGE_DEFAULT</a> = 0,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0ae2902026c29ba5ceeec9a0bb4f25e111"> 73</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0ae2902026c29ba5ceeec9a0bb4f25e111">SHADER_SOURCE_LANGUAGE_HLSL</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a0fb7dd30648819a279edf2829d258561"> 76</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a0fb7dd30648819a279edf2829d258561">SHADER_SOURCE_LANGUAGE_GLSL</a></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8"> 81</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8">BIND_SHADER_RESOURCES_FLAGS</a> : <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a356bf35ddf7ca9489736c0d8992d3032"> 85</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a356bf35ddf7ca9489736c0d8992d3032">BIND_SHADER_RESOURCES_RESET_BINDINGS</a> = 0x01,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a6a7da6200cf9bedda2d76b51b2233170"> 91</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a6a7da6200cf9bedda2d76b51b2233170">BIND_SHADER_RESOURCES_UPDATE_UNRESOLVED</a> = 0x02,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a996116faf0124f92452cb6b65a66a4bd"> 96</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a996116faf0124f92452cb6b65a66a4bd">BIND_SHADER_RESOURCES_ALL_RESOLVED</a> = 0x04</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698"> 100</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> : <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3"> 105</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a> = 0, </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a"> 110</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16"> 114</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16">SHADER_VARIABLE_TYPE_DYNAMIC</a>,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb"> 117</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html"> 121</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> {</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce"> 124</a></span>  <span class="keyword">const</span> Char *<a class="code" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce">Name</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3"> 127</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3">Type</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a>(<span class="keyword">const</span> Char *_Name = <span class="keyword">nullptr</span>, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _Type = <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>) : </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce">Name</a>(_Name),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3">Type</a>(_Type)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {}</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> };</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html"> 136</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c"> 139</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c">TextureName</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf"> 142</a></span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a> <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf">Desc</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>(){};</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>(<span class="keyword">const</span> Char* _TexName, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a> &_Desc) : </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c">TextureName</a>(_TexName),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf">Desc</a>(_Desc)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {}</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> };</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html"> 152</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68"> 155</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68">ShaderType</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="namespace_diligent.html#a1348d994a23f6b38215d775be3931056">Bool</a> bCacheCompiledShader;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  SHADER_PROFILE TargetProfile;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481"> 163</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481">DefaultVariableType</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a"> 166</a></span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a> *<a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f"> 169</a></span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f">NumVariables</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979"> 172</a></span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979">NumStaticSamplers</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf"> 175</a></span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a> *<a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a>() : </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68">ShaderType</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>),</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  bCacheCompiledShader(False),</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  TargetProfile(SHADER_PROFILE_DEFAULT),</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481">DefaultVariableType</a>(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>),</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>(nullptr),</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f">NumVariables</a>(0),</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979">NumStaticSamplers</a>(0),</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>(nullptr)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {}</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> };</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_source_input_stream_factory.html"> 190</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateInputStream(<span class="keyword">const</span> Diligent::Char *Name, <a class="code" href="class_diligent_1_1_i_file_stream.html">IFileStream</a> **ppStream) = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> };</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="keyword">struct </span>ShaderMacro</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">const</span> Char* Name;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">const</span> Char* Definition;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  ShaderMacro(<span class="keyword">const</span> Char* _Name, <span class="keyword">const</span> Char* _Def) : Name( _Name ), Definition( _Def ) {}</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> };</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html"> 204</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a26734decb81a8c8d625f12596348096d"> 209</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a26734decb81a8c8d625f12596348096d">FilePath</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a5e2f0d77ee1090be19d6d55c06df5972"> 215</a></span>  <a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a> *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a5e2f0d77ee1090be19d6d55c06df5972">pShaderSourceStreamFactory</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a7cab639ba508ebc065290f8d9d0c8e91"> 228</a></span>  <span class="keyword">class </span>IHLSL2GLSLConversionStream **<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a7cab639ba508ebc065290f8d9d0c8e91">ppConversionStream</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec"> 233</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec">Source</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  </div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ab91e80c16df5ee5624e56f8fdbb0e98d"> 239</a></span>  <span class="keyword">const</span> <span class="keywordtype">void</span> *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ab91e80c16df5ee5624e56f8fdbb0e98d">ByteCode</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a2dc3b36f68b617161f138be5df2138f5"> 244</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a2dc3b36f68b617161f138be5df2138f5">ByteCodeSize</a> = 0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ae06a6f4125da854f03b39f31ac0ad013"> 249</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ae06a6f4125da854f03b39f31ac0ad013">EntryPoint</a> = <span class="stringliteral">"main"</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#afa568255f209ad0f61ef97e57bb0d402"> 254</a></span>  <span class="keyword">const</span> ShaderMacro *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#afa568255f209ad0f61ef97e57bb0d402">Macros</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#afc6c0ca2303848fec84b25e8c4a444fd"> 257</a></span>  <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#afc6c0ca2303848fec84b25e8c4a444fd">Desc</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ab4f1dc9f9314d639690bde42a8b56535"> 260</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0">SHADER_SOURCE_LANGUAGE</a> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ab4f1dc9f9314d639690bde42a8b56535">SourceLanguage</a> = <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98">SHADER_SOURCE_LANGUAGE_DEFAULT</a>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> };</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_variable.html"> 265</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_object.html">IObject</a></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html#abf1fd12f07f3d932f04e8e34a981d896">Set</a>(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject) = 0;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html#a1485fa8a056824cf955b5bdbe1d7cd17">SetArray</a>(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> FirstElement, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumElements) = 0;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> };</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader.html"> 288</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader.html#a1927ad928f908db0d6f4f669202b90b2">QueryInterface</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">Diligent::INTERFACE_ID</a> &IID, <a class="code" href="class_diligent_1_1_i_object.html">IObject</a> **ppInterface ) = 0;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> &<a class="code" href="class_diligent_1_1_i_shader.html#a4bd05dd784c6881c7f80e68df675f5e8">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader.html#a631860cef0bb50e081bab0acd1345cf1">BindResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Flags ) = 0;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* <a class="code" href="class_diligent_1_1_i_shader.html#ad3e51fa57cd1db70da2bc07773c1fdea">GetShaderVariable</a>(<span class="keyword">const</span> Char* Name) = 0;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> };</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> }</div><div class="ttc" id="struct_diligent_1_1_shader_creation_attribs_html_aef8d7926abec30fe25ee611f2f40d6ec"><div class="ttname"><a href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec">Diligent::ShaderCreationAttribs::Source</a></div><div class="ttdeci">const Char * Source</div><div class="ttdoc">Shader source. </div><div class="ttdef"><b>Definition:</b> Shader.h:233</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_source_input_stream_factory_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_source_input_stream_factory.html">Diligent::IShaderSourceInputStreamFactory</a></div><div class="ttdoc">Shader source stream factory interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:190</div></div> <div class="ttc" id="struct_diligent_1_1_shader_creation_attribs_html_ae06a6f4125da854f03b39f31ac0ad013"><div class="ttname"><a href="struct_diligent_1_1_shader_creation_attribs.html#ae06a6f4125da854f03b39f31ac0ad013">Diligent::ShaderCreationAttribs::EntryPoint</a></div><div class="ttdeci">const Char * EntryPoint</div><div class="ttdoc">Shader entry point. </div><div class="ttdef"><b>Definition:</b> Shader.h:249</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> diff --git a/doc/html/_graphics_2_graphics_engine_d3_d11_2include_2pch_8h_source.html b/doc/html/_graphics_2_graphics_engine_d3_d11_2include_2pch_8h_source.html index 60892bbe..5f1c9cf8 100644 --- a/doc/html/_graphics_2_graphics_engine_d3_d11_2include_2pch_8h_source.html +++ b/doc/html/_graphics_2_graphics_engine_d3_d11_2include_2pch_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">pch.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// stdafx.h : include file for standard system include files,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// or project specific include files that are used frequently, but</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// are changed infrequently</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "targetver.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define NOMINMAX</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <exception></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#if defined(PLATFORM_WIN32)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> #include <d3d11.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#elif defined(PLATFORM_UNIVERSAL_WINDOWS)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"> #include <d3d11_2.h></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "EngineD3D11Defines.h"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "D3DErrors.h"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "D3D11TypeConversions.h"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include <atlcomcli.h></span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// stdafx.h : include file for standard system include files,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// or project specific include files that are used frequently, but</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// are changed infrequently</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "targetver.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define NOMINMAX</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <exception></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#if defined(PLATFORM_WIN32)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> #include <d3d11.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#elif defined(PLATFORM_UNIVERSAL_WINDOWS)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"> #include <d3d11_2.h></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "EngineD3D11Defines.h"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "D3DErrors.h"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "D3D11TypeConversions.h"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include <atlcomcli.h></span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_graphics_2_graphics_engine_d3_d12_2include_2pch_8h_source.html b/doc/html/_graphics_2_graphics_engine_d3_d12_2include_2pch_8h_source.html index b3f4fd96..755f3e64 100644 --- a/doc/html/_graphics_2_graphics_engine_d3_d12_2include_2pch_8h_source.html +++ b/doc/html/_graphics_2_graphics_engine_d3_d12_2include_2pch_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">pch.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// stdafx.h : include file for standard system include files,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// or project specific include files that are used frequently, but</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// are changed infrequently</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define NOMINMAX</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <exception></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <d3d12.h></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "D3DErrors.h"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <atlcomcli.h></span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// stdafx.h : include file for standard system include files,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// or project specific include files that are used frequently, but</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// are changed infrequently</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define NOMINMAX</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <exception></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <d3d12.h></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "D3DErrors.h"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <atlcomcli.h></span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_graphics_2_graphics_engine_open_g_l_2include_2_g_l_context_8h_source.html b/doc/html/_graphics_2_graphics_engine_open_g_l_2include_2_g_l_context_8h_source.html index 9f8157d7..f75e5e09 100644 --- a/doc/html/_graphics_2_graphics_engine_open_g_l_2include_2_g_l_context_8h_source.html +++ b/doc/html/_graphics_2_graphics_engine_open_g_l_2include_2_g_l_context_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">GLContext.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#if defined(PLATFORM_WIN32)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"># include "GLContextWindows.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#elif defined(PLATFORM_ANDROID)</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"># include "GLContextAndroid.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#elif defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor"># include "GLContextLinux.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"># error Unsupported platform</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#if defined(PLATFORM_WIN32)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"># include "GLContextWindows.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#elif defined(PLATFORM_ANDROID)</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"># include "GLContextAndroid.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#elif defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor"># include "GLContextLinux.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"># error Unsupported platform</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_graphics_2_graphics_engine_open_g_l_2include_2pch_8h_source.html b/doc/html/_graphics_2_graphics_engine_open_g_l_2include_2pch_8h_source.html index 6afc10fe..b2854c65 100644 --- a/doc/html/_graphics_2_graphics_engine_open_g_l_2include_2pch_8h_source.html +++ b/doc/html/_graphics_2_graphics_engine_open_g_l_2include_2pch_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">pch.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// stdafx.h : include file for standard system include files,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// or project specific include files that are used frequently, but</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// are changed infrequently</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <unordered_set></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#if defined(PLATFORM_WIN32)</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"># ifndef GLEW_STATIC</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"># define GLEW_STATIC // Must be defined to use static version of glew</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"># include "GL/glew.h"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Glew includes <windows.h></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define NOMINMAX</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"># include "GL/wglew.h"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"># include <GL/GL.h></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#elif defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"># ifndef GLEW_STATIC</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"># define GLEW_STATIC // Must be defined to use static version of glew</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor"># ifndef GLEW_NO_GLU</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor"># define GLEW_NO_GLU</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor"># include "GL/glew.h"</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor"># include <GL/glx.h></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// Undefine beautiful defines from GL/glx.h -> X11/Xlib.h</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"># ifdef Bool</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"># undef Bool</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"># ifdef True</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"># undef True</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"># ifdef False</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"># undef False</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"># ifdef Status</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"># undef Status</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"># ifdef Success</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"># undef Success</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"># elif defined(PLATFORM_ANDROID)</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"># ifndef USE_GL3_STUB</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"># define USE_GL3_STUB 0</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"># if USE_GL3_STUB</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"># include "gl3stub.h"</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor"># include <GLES2/gl2platform.h></span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor"># include <GLES3/gl3.h></span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor"># include <GLES3/gl3ext.h></span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor"># error Unsupported platform</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#ifdef PLATFORM_ANDROID</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// GLStubs must be included after GLFeatures!</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor"> #include "GLStubs.h"</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#define CHECK_GL_ERROR(...)\</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor"> auto err = glGetError(); \</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor"> if( err != GL_NO_ERROR ) \</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor"> LogError<false>(__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__, "\nGL Error Code: ", err); \</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor"> UNEXPECTED("Error"); \</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#define CHECK_GL_ERROR_AND_THROW(...)\</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor"> auto err = glGetError(); \</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor"> if( err != GL_NO_ERROR ) \</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor"> LogError<true>(__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__, "\nGL Error Code: ", err); \</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">}</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// stdafx.h : include file for standard system include files,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// or project specific include files that are used frequently, but</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// are changed infrequently</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <unordered_set></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#if defined(PLATFORM_WIN32)</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"># ifndef GLEW_STATIC</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"># define GLEW_STATIC // Must be defined to use static version of glew</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"># include "GL/glew.h"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Glew includes <windows.h></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define NOMINMAX</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"># include "GL/wglew.h"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"># include <GL/GL.h></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#elif defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"># ifndef GLEW_STATIC</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"># define GLEW_STATIC // Must be defined to use static version of glew</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor"># ifndef GLEW_NO_GLU</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor"># define GLEW_NO_GLU</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor"># include "GL/glew.h"</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor"># include <GL/glx.h></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// Undefine beautiful defines from GL/glx.h -> X11/Xlib.h</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"># ifdef Bool</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"># undef Bool</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"># ifdef True</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"># undef True</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"># ifdef False</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"># undef False</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"># ifdef Status</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"># undef Status</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"># ifdef Success</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"># undef Success</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"># elif defined(PLATFORM_ANDROID)</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"># ifndef USE_GL3_STUB</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"># define USE_GL3_STUB 0</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"># if USE_GL3_STUB</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"># include "gl3stub.h"</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor"># include <GLES2/gl2platform.h></span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor"># include <GLES3/gl3.h></span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor"># include <GLES3/gl3ext.h></span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor"># error Unsupported platform</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#ifdef PLATFORM_ANDROID</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// GLStubs must be included after GLFeatures!</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor"> #include "GLStubs.h"</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#define CHECK_GL_ERROR(...)\</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor"> auto err = glGetError(); \</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor"> if( err != GL_NO_ERROR ) \</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor"> LogError<false>(__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__, "\nGL Error Code: ", err); \</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor"> UNEXPECTED("Error"); \</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#define CHECK_GL_ERROR_AND_THROW(...)\</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor"> auto err = glGetError(); \</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor"> if( err != GL_NO_ERROR ) \</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor"> LogError<true>(__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__, "\nGL Error Code: ", err); \</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">}</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_graphics_2_graphics_tools_2include_2pch_8h_source.html b/doc/html/_graphics_2_graphics_tools_2include_2pch_8h_source.html index 2d65de14..0783d6e1 100644 --- a/doc/html/_graphics_2_graphics_tools_2include_2pch_8h_source.html +++ b/doc/html/_graphics_2_graphics_tools_2include_2pch_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">pch.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_graphics_2_h_l_s_l2_g_l_s_l_converter_lib_2include_2pch_8h_source.html b/doc/html/_graphics_2_h_l_s_l2_g_l_s_l_converter_lib_2include_2pch_8h_source.html index fb9ea624..d9ae0722 100644 --- a/doc/html/_graphics_2_h_l_s_l2_g_l_s_l_converter_lib_2include_2pch_8h_source.html +++ b/doc/html/_graphics_2_h_l_s_l2_g_l_s_l_converter_lib_2include_2pch_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">pch.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// stdafx.h : include file for standard system include files,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// or project specific include files that are used frequently, but</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// are changed infrequently</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <unordered_set></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">using namespace </span><a class="code" href="namespace_diligent.html">Diligent</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// stdafx.h : include file for standard system include files,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// or project specific include files that are used frequently, but</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// are changed infrequently</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <unordered_set></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">using namespace </span><a class="code" href="namespace_diligent.html">Diligent</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_graphics_accessories_8h_source.html b/doc/html/_graphics_accessories_8h_source.html index 4a2ffb8e..52a751d0 100644 --- a/doc/html/_graphics_accessories_8h_source.html +++ b/doc/html/_graphics_accessories_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">GraphicsAccessories.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">template</span><VALUE_TYPE ValType></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html"> 41</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {};</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___i_n_t8_01_4.html"> 49</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa69a8f2c4802cb3dad00664337211e3d5">VT_INT8</a>> { <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a70b89ad84f51b1f35d7156dca7596361">Int8</a> CType; };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___i_n_t16_01_4.html"> 56</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa3de9144a26c37fb6f00e6ab31019011a">VT_INT16</a>> { <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a8d5a3f689eb95c5f5c6cecf4d2c4acb9">Int16</a> CType; };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___i_n_t32_01_4.html"> 63</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aadce96830d631236f889b6131d8f93927">VT_INT32</a>> { <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a> CType; };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___u_i_n_t8_01_4.html"> 70</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aae4d8703975c37ec65b37a255db3d573f">VT_UINT8</a>> { <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db">Uint8</a> CType; };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___u_i_n_t16_01_4.html"> 77</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa0e15f9d0c65df848ae20a42d67b78ee2">VT_UINT16</a>>{ <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> CType; };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___u_i_n_t32_01_4.html"> 84</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa8d8ad1b30a33c40ba392d626909e200e">VT_UINT32</a>>{ <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> CType; };</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___f_l_o_a_t16_01_4.html"> 93</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa655c4d977016936a18aa460c739d65e4">VT_FLOAT16</a>>{ <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> CType; };</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___f_l_o_a_t32_01_4.html"> 100</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a>>{ <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a32283d7134e62a58530ba1b0afb4e59e">Float32</a> CType; };</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ValueTypeToSizeMap[] = </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  0,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___i_n_t8_01_4.html">VALUE_TYPE2CType<VT_INT8></a> :: CType),</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType<VT_INT16> :: CType</a>),</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___i_n_t32_01_4.html">VALUE_TYPE2CType<VT_INT32></a> :: CType),</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType<VT_UINT8> :: CType</a>),</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___u_i_n_t16_01_4.html">VALUE_TYPE2CType<VT_UINT16></a> :: CType),</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType<VT_UINT32> :: CType</a>),</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___f_l_o_a_t16_01_4.html">VALUE_TYPE2CType<VT_FLOAT16></a> :: CType),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType<VT_FLOAT32> :: CType</a>)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> };</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> static_assert(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa404899904bf53c07bbdce4cdb2dc0fab">VT_NUM_TYPES</a> == <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a> + 1, <span class="stringliteral">"Not all value type sizes initialized."</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a878dfd524d63743abf14313084ff8f42"> 118</a></span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> <a class="code" href="namespace_diligent.html#a878dfd524d63743abf14313084ff8f42">GetValueSize</a>(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> Val)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  VERIFY_EXPR(Val < _countof(ValueTypeToSizeMap));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> ValueTypeToSizeMap[Val];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">const</span> Char* <a class="code" href="namespace_diligent.html#a32f103f4daec776d012ef1dade5baff1">GetValueTypeString</a>( <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> Val );</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keyword">const</span> TextureFormatAttribs& <a class="code" href="namespace_diligent.html#a574281d72ce4a060ae8abd7f17e3e42a">GetTextureFormatAttribs</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> Format);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="namespace_diligent.html#a5426b93a77424af63c71ae9a86729818">GetDefaultTextureViewFormat</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TextureFormat, <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> ViewType, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> BindFlags);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1489d6b18e3d68d81a7206b620c24637"> 160</a></span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="namespace_diligent.html#a5426b93a77424af63c71ae9a86729818">GetDefaultTextureViewFormat</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a> &TexDesc, <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> ViewType)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5426b93a77424af63c71ae9a86729818">GetDefaultTextureViewFormat</a>(TexDesc.<a class="code" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9">Format</a>, ViewType, TexDesc.<a class="code" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a">BindFlags</a>);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">const</span> Char *<a class="code" href="namespace_diligent.html#ab8484c0258a6ceb3837384fd910dacd3">GetTexViewTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> ViewType);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="keyword">const</span> Char *<a class="code" href="namespace_diligent.html#a35c1603486d5c61afa07ab47b7c30958">GetBufferViewTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> ViewType);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keyword">const</span> Char *<a class="code" href="namespace_diligent.html#a76b3013f1863fb4f78ebd51661d5e896">GetShaderTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="keyword">const</span> Char *<a class="code" href="namespace_diligent.html#afa261f6ccdcfe56f204661c806bfc207">GetShaderVariableTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, <span class="keywordtype">bool</span> bGetFullName = <span class="keyword">false</span>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a7ee011666f5b2d1ebe6c36c7d6e58448"> 198</a></span> <span class="keyword">inline</span> <span class="keyword">const</span> Char* <a class="code" href="namespace_diligent.html#a7ee011666f5b2d1ebe6c36c7d6e58448">GetViewTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> TexViewType)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#ab8484c0258a6ceb3837384fd910dacd3">GetTexViewTypeLiteralName</a>( TexViewType );</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="namespace_diligent.html#af74674ddeafd9f1010db920d6f739ff1"> 205</a></span> <span class="keyword">inline</span> <span class="keyword">const</span> Char* <a class="code" href="namespace_diligent.html#a7ee011666f5b2d1ebe6c36c7d6e58448">GetViewTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> BuffViewType)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a35c1603486d5c61afa07ab47b7c30958">GetBufferViewTypeLiteralName</a>( BuffViewType );</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keyword">const</span> Char* <a class="code" href="namespace_diligent.html#a8cb5922dfc854022a5994d53af891936">GetUsageString</a>(<a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> Usage);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">const</span> Char* <a class="code" href="namespace_diligent.html#a78f2319348705b19efc0b13ef66409d7">GetResourceDimString</a>( <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">RESOURCE_DIMENSION</a> TexType );</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#a5bcd68a66c8b2e54d171348fa9810418">GetBindFlagsString</a>( <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> BindFlags );</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#ae430c6ff0873999eccf2aee0923cde83">GetCPUAccessFlagsString</a>( <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> CpuAccessFlags );</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#a51d109a70704fd1542937590984da7e1">GetTextureDescString</a>(<span class="keyword">const</span> TextureDesc &Desc);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#a8f2dc168e277d956bacdc979e7effd32">GetBufferDescString</a>(<span class="keyword">const</span> BufferDesc &Desc);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword">template</span><<span class="keyword">typename</span> TObjectDescType></div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ac8dd74f36f192f41b07eeafc5c73f114"> 231</a></span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#ac8dd74f36f192f41b07eeafc5c73f114">GetObjectDescString</a>( <span class="keyword">const</span> TObjectDescType& )</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="keyword">template</span><></div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a7101c60edb34e5a372a39f15bdad92be"> 238</a></span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#ac8dd74f36f192f41b07eeafc5c73f114">GetObjectDescString</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc )</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> Str( <span class="stringliteral">"Tex desc: "</span> );</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  Str += <a class="code" href="namespace_diligent.html#a51d109a70704fd1542937590984da7e1">GetTextureDescString</a>( TexDesc );</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span> Str;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="keyword">template</span><></div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adc5726b7daeb089384c00065c390fabb"> 247</a></span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#ac8dd74f36f192f41b07eeafc5c73f114">GetObjectDescString</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc )</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> Str( <span class="stringliteral">"Buff desc: "</span> );</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  Str += <a class="code" href="namespace_diligent.html#a8f2dc168e277d956bacdc979e7effd32">GetBufferDescString</a>( BuffDesc );</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> Str;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ComputeMipLevelsCount( <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Width );</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ComputeMipLevelsCount( <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Width, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Height );</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ComputeMipLevelsCount( <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Width, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Height, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Depth );</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">template</span><VALUE_TYPE ValType></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html"> 41</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {};</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___i_n_t8_01_4.html"> 49</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa69a8f2c4802cb3dad00664337211e3d5">VT_INT8</a>> { <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a70b89ad84f51b1f35d7156dca7596361">Int8</a> CType; };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___i_n_t16_01_4.html"> 56</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa3de9144a26c37fb6f00e6ab31019011a">VT_INT16</a>> { <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a8d5a3f689eb95c5f5c6cecf4d2c4acb9">Int16</a> CType; };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___i_n_t32_01_4.html"> 63</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aadce96830d631236f889b6131d8f93927">VT_INT32</a>> { <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a> CType; };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___u_i_n_t8_01_4.html"> 70</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aae4d8703975c37ec65b37a255db3d573f">VT_UINT8</a>> { <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db">Uint8</a> CType; };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___u_i_n_t16_01_4.html"> 77</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa0e15f9d0c65df848ae20a42d67b78ee2">VT_UINT16</a>>{ <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> CType; };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___u_i_n_t32_01_4.html"> 84</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa8d8ad1b30a33c40ba392d626909e200e">VT_UINT32</a>>{ <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> CType; };</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___f_l_o_a_t16_01_4.html"> 93</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa655c4d977016936a18aa460c739d65e4">VT_FLOAT16</a>>{ <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> CType; };</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___f_l_o_a_t32_01_4.html"> 100</a></span> <span class="keyword">template</span><><span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType</a><<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a>>{ <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#a32283d7134e62a58530ba1b0afb4e59e">Float32</a> CType; };</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ValueTypeToSizeMap[] = </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  0,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___i_n_t8_01_4.html">VALUE_TYPE2CType<VT_INT8></a> :: CType),</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType<VT_INT16> :: CType</a>),</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___i_n_t32_01_4.html">VALUE_TYPE2CType<VT_INT32></a> :: CType),</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType<VT_UINT8> :: CType</a>),</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___u_i_n_t16_01_4.html">VALUE_TYPE2CType<VT_UINT16></a> :: CType),</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType<VT_UINT32> :: CType</a>),</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type_3_01_v_t___f_l_o_a_t16_01_4.html">VALUE_TYPE2CType<VT_FLOAT16></a> :: CType),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">sizeof</span>(<a class="code" href="struct_diligent_1_1_v_a_l_u_e___t_y_p_e2_c_type.html">VALUE_TYPE2CType<VT_FLOAT32> :: CType</a>)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> };</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> static_assert(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa404899904bf53c07bbdce4cdb2dc0fab">VT_NUM_TYPES</a> == <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a> + 1, <span class="stringliteral">"Not all value type sizes initialized."</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a878dfd524d63743abf14313084ff8f42"> 118</a></span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> <a class="code" href="namespace_diligent.html#a878dfd524d63743abf14313084ff8f42">GetValueSize</a>(<a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> Val)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  VERIFY_EXPR(Val < _countof(ValueTypeToSizeMap));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> ValueTypeToSizeMap[Val];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">const</span> Char* <a class="code" href="namespace_diligent.html#a32f103f4daec776d012ef1dade5baff1">GetValueTypeString</a>( <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> Val );</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keyword">const</span> TextureFormatAttribs& <a class="code" href="namespace_diligent.html#a574281d72ce4a060ae8abd7f17e3e42a">GetTextureFormatAttribs</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> Format);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="namespace_diligent.html#a5426b93a77424af63c71ae9a86729818">GetDefaultTextureViewFormat</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TextureFormat, <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> ViewType, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> BindFlags);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1489d6b18e3d68d81a7206b620c24637"> 160</a></span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="namespace_diligent.html#a5426b93a77424af63c71ae9a86729818">GetDefaultTextureViewFormat</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a> &TexDesc, <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> ViewType)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a5426b93a77424af63c71ae9a86729818">GetDefaultTextureViewFormat</a>(TexDesc.<a class="code" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9">Format</a>, ViewType, TexDesc.<a class="code" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a">BindFlags</a>);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">const</span> Char *<a class="code" href="namespace_diligent.html#ab8484c0258a6ceb3837384fd910dacd3">GetTexViewTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> ViewType);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="keyword">const</span> Char *<a class="code" href="namespace_diligent.html#a35c1603486d5c61afa07ab47b7c30958">GetBufferViewTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> ViewType);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keyword">const</span> Char *<a class="code" href="namespace_diligent.html#a76b3013f1863fb4f78ebd51661d5e896">GetShaderTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="keyword">const</span> Char *<a class="code" href="namespace_diligent.html#afa261f6ccdcfe56f204661c806bfc207">GetShaderVariableTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, <span class="keywordtype">bool</span> bGetFullName = <span class="keyword">false</span>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a7ee011666f5b2d1ebe6c36c7d6e58448"> 198</a></span> <span class="keyword">inline</span> <span class="keyword">const</span> Char* <a class="code" href="namespace_diligent.html#a7ee011666f5b2d1ebe6c36c7d6e58448">GetViewTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> TexViewType)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#ab8484c0258a6ceb3837384fd910dacd3">GetTexViewTypeLiteralName</a>( TexViewType );</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="namespace_diligent.html#af74674ddeafd9f1010db920d6f739ff1"> 205</a></span> <span class="keyword">inline</span> <span class="keyword">const</span> Char* <a class="code" href="namespace_diligent.html#a7ee011666f5b2d1ebe6c36c7d6e58448">GetViewTypeLiteralName</a>(<a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> BuffViewType)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a35c1603486d5c61afa07ab47b7c30958">GetBufferViewTypeLiteralName</a>( BuffViewType );</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keyword">const</span> Char* <a class="code" href="namespace_diligent.html#a8cb5922dfc854022a5994d53af891936">GetUsageString</a>(<a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> Usage);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">const</span> Char* <a class="code" href="namespace_diligent.html#a78f2319348705b19efc0b13ef66409d7">GetResourceDimString</a>( <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">RESOURCE_DIMENSION</a> TexType );</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#a5bcd68a66c8b2e54d171348fa9810418">GetBindFlagsString</a>( <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> BindFlags );</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#ae430c6ff0873999eccf2aee0923cde83">GetCPUAccessFlagsString</a>( <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> CpuAccessFlags );</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#a51d109a70704fd1542937590984da7e1">GetTextureDescString</a>(<span class="keyword">const</span> TextureDesc &Desc);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#a8f2dc168e277d956bacdc979e7effd32">GetBufferDescString</a>(<span class="keyword">const</span> BufferDesc &Desc);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword">template</span><<span class="keyword">typename</span> TObjectDescType></div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ac8dd74f36f192f41b07eeafc5c73f114"> 231</a></span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#ac8dd74f36f192f41b07eeafc5c73f114">GetObjectDescString</a>( <span class="keyword">const</span> TObjectDescType& )</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="keyword">template</span><></div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a7101c60edb34e5a372a39f15bdad92be"> 238</a></span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#ac8dd74f36f192f41b07eeafc5c73f114">GetObjectDescString</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc )</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> Str( <span class="stringliteral">"Tex desc: "</span> );</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  Str += <a class="code" href="namespace_diligent.html#a51d109a70704fd1542937590984da7e1">GetTextureDescString</a>( TexDesc );</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span> Str;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="keyword">template</span><></div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adc5726b7daeb089384c00065c390fabb"> 247</a></span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> <a class="code" href="namespace_diligent.html#ac8dd74f36f192f41b07eeafc5c73f114">GetObjectDescString</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc )</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> Str( <span class="stringliteral">"Buff desc: "</span> );</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  Str += <a class="code" href="namespace_diligent.html#a8f2dc168e277d956bacdc979e7effd32">GetBufferDescString</a>( BuffDesc );</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> Str;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ComputeMipLevelsCount( <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Width );</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ComputeMipLevelsCount( <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Width, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Height );</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ComputeMipLevelsCount( <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Width, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Height, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Depth );</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="namespace_diligent_html_a1d12e97c6da58b2d4dd003db4a8a957aae4d8703975c37ec65b37a255db3d573f"><div class="ttname"><a href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aae4d8703975c37ec65b37a255db3d573f">Diligent::VT_UINT8</a></div><div class="ttdoc">Unsigned 8-bit integer. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:45</div></div> <div class="ttc" id="namespace_diligent_html_a1d12e97c6da58b2d4dd003db4a8a957aa69a8f2c4802cb3dad00664337211e3d5"><div class="ttname"><a href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa69a8f2c4802cb3dad00664337211e3d5">Diligent::VT_INT8</a></div><div class="ttdoc">Signed 8-bit integer. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:42</div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> diff --git a/doc/html/_graphics_types_8h_source.html b/doc/html/_graphics_types_8h_source.html index 74be6edd..421ba0a7 100644 --- a/doc/html/_graphics_types_8h_source.html +++ b/doc/html/_graphics_types_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">GraphicsTypes.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a"> 39</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> : Int32</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab"> 41</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">VT_UNDEFINED</a> = 0, </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa69a8f2c4802cb3dad00664337211e3d5"> 42</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa69a8f2c4802cb3dad00664337211e3d5">VT_INT8</a>, </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa3de9144a26c37fb6f00e6ab31019011a"> 43</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa3de9144a26c37fb6f00e6ab31019011a">VT_INT16</a>, </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aadce96830d631236f889b6131d8f93927"> 44</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aadce96830d631236f889b6131d8f93927">VT_INT32</a>, </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aae4d8703975c37ec65b37a255db3d573f"> 45</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aae4d8703975c37ec65b37a255db3d573f">VT_UINT8</a>, </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa0e15f9d0c65df848ae20a42d67b78ee2"> 46</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa0e15f9d0c65df848ae20a42d67b78ee2">VT_UINT16</a>, </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa8d8ad1b30a33c40ba392d626909e200e"> 47</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa8d8ad1b30a33c40ba392d626909e200e">VT_UINT32</a>, </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa655c4d977016936a18aa460c739d65e4"> 48</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa655c4d977016936a18aa460c739d65e4">VT_FLOAT16</a>, </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94"> 49</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a>, </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa404899904bf53c07bbdce4cdb2dc0fab"> 50</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa404899904bf53c07bbdce4cdb2dc0fab">VT_NUM_TYPES</a> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbce"> 61</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbce">BIND_FLAGS</a> : Int32</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea50d6810939c69ef5dec2658ad58d724c"> 63</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea50d6810939c69ef5dec2658ad58d724c">BIND_NONE</a> = 0x0L, </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c"> 64</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c">BIND_VERTEX_BUFFER</a> = 0x1L, </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03"> 65</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03">BIND_INDEX_BUFFER</a> = 0x2L, </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9"> 66</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9">BIND_UNIFORM_BUFFER</a> = 0x4L, </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a> = 0x8L, </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea6e78d02c83dd86d2706c23cb7dc30222">BIND_STREAM_OUTPUT</a> = 0x10L,</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89"> 71</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">BIND_RENDER_TARGET</a> = 0x20L,</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08"> 72</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08">BIND_DEPTH_STENCIL</a> = 0x40L,</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c"> 73</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a> = 0x80L,</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea059916f0a480fa57e6e417f8d0acf67f"> 74</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea059916f0a480fa57e6e417f8d0acf67f">BIND_INDIRECT_DRAW_ARGS</a> = 0x100L</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  };</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746"> 84</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> : Int32</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746aad6764a09ac229be9768507bf46c9747"> 90</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746aad6764a09ac229be9768507bf46c9747">USAGE_STATIC</a> = 0, </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64"> 95</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c"> 99</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985"> 103</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  };</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01"> 112</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01">CPU_ACCESS_FLAG</a> : Int32</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364"> 114</a></span>  <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364">CPU_ACCESS_READ</a> = 0x01, </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca"> 115</a></span>  <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a> = 0x02 </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  };</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357"> 125</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> : Int32</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357a65436444d4034265e317ebc832a56cd4"> 129</a></span>  <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357a65436444d4034265e317ebc832a56cd4">MAP_READ</a> = 0x01, </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab"> 133</a></span>  <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab">MAP_WRITE</a> = 0x02, </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357af0effcf3a0f2ac99c954744ea9a09f85"> 137</a></span>  <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357af0effcf3a0f2ac99c954744ea9a09f85">MAP_READ_WRITE</a> = 0x03</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  };</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6"> 146</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6">MAP_FLAGS</a> : Int32</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6acbd8dc9cee248433c31593e4a62ecb15"> 153</a></span>  <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6acbd8dc9cee248433c31593e4a62ecb15">MAP_FLAG_DO_NOT_WAIT</a> = 0x001,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8"> 158</a></span>  <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a> = 0x002,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a329aa426e3e1dc2ae4ce397bd3eb4f38"> 164</a></span>  <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a329aa426e3e1dc2ae4ce397bd3eb4f38">MAP_FLAG_DO_NOT_SYNCHRONIZE</a> = 0x004</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67"> 172</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">RESOURCE_DIMENSION</a> : Int32</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67af059ddcde8b1a3bf1c6f32f3b4865cfe"> 174</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67af059ddcde8b1a3bf1c6f32f3b4865cfe">RESOURCE_DIM_UNDEFINED</a> = 0, </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a266703b7f74b82531f02a1fa61fd6df1"> 175</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a266703b7f74b82531f02a1fa61fd6df1">RESOURCE_DIM_BUFFER</a>, </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa"> 176</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>, </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346"> 177</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>, </div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c"> 178</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>, </div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd"> 179</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>, </div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89"> 180</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>, </div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9"> 181</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a>, </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337"> 182</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a>, </div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aa8c62a6c20eefee728772831dd50b000"> 183</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aa8c62a6c20eefee728772831dd50b000">RESOURCE_DIM_NUM_DIMENSIONS</a> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  };</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd"> 190</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> : Int32</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf08182e262af9a13ffed563d3ae6a791"> 193</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf08182e262af9a13ffed563d3ae6a791">TEXTURE_VIEW_UNDEFINED</a> = 0, </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243"> 197</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>,</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22"> 201</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>, </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa"> 205</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>, </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248"> 209</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248">TEXTURE_VIEW_UNORDERED_ACCESS</a>, </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdab5bd5c90bb6c469b63cffe7947832970"> 212</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdab5bd5c90bb6c469b63cffe7947832970">TEXTURE_VIEW_NUM_VIEWS</a> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  };</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14"> 219</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> : Int32</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14aec8a0f6db367c6d64f2029d60570e86f"> 222</a></span>  <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14aec8a0f6db367c6d64f2029d60570e86f">BUFFER_VIEW_UNDEFINED</a> = 0,</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b"> 226</a></span>  <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b">BUFFER_VIEW_SHADER_RESOURCE</a>,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a"> 230</a></span>  <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a">BUFFER_VIEW_UNORDERED_ACCESS</a>,</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5ca9e42d5a3bd0c9cb84b192a2fd6c0c"> 233</a></span>  <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5ca9e42d5a3bd0c9cb84b192a2fd6c0c">BUFFER_VIEW_NUM_VIEWS</a></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  };</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465"> 244</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> : Int32</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d"> 247</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a> = 0, </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4fee2013ae50b1b380735982b701f18c"> 251</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4fee2013ae50b1b380735982b701f18c">TEX_FORMAT_RGBA32_TYPELESS</a>,</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab9d0f625089592e367942df3c4b518f3"> 255</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab9d0f625089592e367942df3c4b518f3">TEX_FORMAT_RGBA32_FLOAT</a>, </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8e8af2b7e659503f7d143e9af26444f5"> 259</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8e8af2b7e659503f7d143e9af26444f5">TEX_FORMAT_RGBA32_UINT</a>,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ada571f62be667654827c9dc2db417b8f"> 263</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ada571f62be667654827c9dc2db417b8f">TEX_FORMAT_RGBA32_SINT</a>, </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae5f5acf9a6bbf8af39897c463502da0a"> 268</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae5f5acf9a6bbf8af39897c463502da0a">TEX_FORMAT_RGB32_TYPELESS</a>, </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  </div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4590c9158584f05893636a5d97db2e4a"> 273</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4590c9158584f05893636a5d97db2e4a">TEX_FORMAT_RGB32_FLOAT</a>, </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9eae2e4849709bcfec90276e67ac7f6b"> 278</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9eae2e4849709bcfec90276e67ac7f6b">TEX_FORMAT_RGB32_UINT</a>, </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8ffd14c97e1097079a88d16bc60a9145"> 283</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8ffd14c97e1097079a88d16bc60a9145">TEX_FORMAT_RGB32_SINT</a>, </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abfda350d368dfaac50622ac75df912dc"> 287</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abfda350d368dfaac50622ac75df912dc">TEX_FORMAT_RGBA16_TYPELESS</a>, </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adaa6d237efff5ee2324c3eb3c823e896"> 291</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adaa6d237efff5ee2324c3eb3c823e896">TEX_FORMAT_RGBA16_FLOAT</a>, </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1efb4f2505cd9631e84e5fb18c6af583"> 297</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1efb4f2505cd9631e84e5fb18c6af583">TEX_FORMAT_RGBA16_UNORM</a>, </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac797c35718d5c17cad6f24b17d08ac9f"> 301</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac797c35718d5c17cad6f24b17d08ac9f">TEX_FORMAT_RGBA16_UINT</a>, </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a71b0ad28b1acc91bc51c7313d981d116"> 308</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a71b0ad28b1acc91bc51c7313d981d116">TEX_FORMAT_RGBA16_SNORM</a>, </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e395f3bd00e9ff71918447997192ce6"> 312</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e395f3bd00e9ff71918447997192ce6">TEX_FORMAT_RGBA16_SINT</a>, </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31b76f2efe51b25a7117da969e2b6ed2"> 316</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31b76f2efe51b25a7117da969e2b6ed2">TEX_FORMAT_RG32_TYPELESS</a>, </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aeea76393266977ffa2e7a8b252107133"> 320</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aeea76393266977ffa2e7a8b252107133">TEX_FORMAT_RG32_FLOAT</a>, </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3c7c65b42cd75a7d469ed99004afaa6c"> 324</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3c7c65b42cd75a7d469ed99004afaa6c">TEX_FORMAT_RG32_UINT</a>, </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbc39705e8dd96a926cf75880096c18b"> 328</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbc39705e8dd96a926cf75880096c18b">TEX_FORMAT_RG32_SINT</a>, </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9dd3ba150529545a79c1193a324775d2"> 332</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9dd3ba150529545a79c1193a324775d2">TEX_FORMAT_R32G8X24_TYPELESS</a>, </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8a2edc5d9907cd0426edb134dd9adbc5"> 336</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8a2edc5d9907cd0426edb134dd9adbc5">TEX_FORMAT_D32_FLOAT_S8X24_UINT</a>, </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a63e2520343d2091c58583e3738a3cd58"> 340</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a63e2520343d2091c58583e3738a3cd58">TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS</a>, </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e0d8a8dd3f7a02b3decd77f1dd70ab3"> 345</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e0d8a8dd3f7a02b3decd77f1dd70ab3">TEX_FORMAT_X32_TYPELESS_G8X24_UINT</a>, </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae2607a3439026f2d40895acb46b9f5b5"> 349</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae2607a3439026f2d40895acb46b9f5b5">TEX_FORMAT_RGB10A2_TYPELESS</a>, </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2710e10dfc4a6192e1769a6994551f3f"> 353</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2710e10dfc4a6192e1769a6994551f3f">TEX_FORMAT_RGB10A2_UNORM</a>, </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a64579f737dd72bff3657a9c6ee9077"> 357</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a64579f737dd72bff3657a9c6ee9077">TEX_FORMAT_RGB10A2_UINT</a>, </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aed9cce1141988f5e228dda57c87b9936"> 361</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aed9cce1141988f5e228dda57c87b9936">TEX_FORMAT_R11G11B10_FLOAT</a>, </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2adaa9f08962f9d5656966bb22ca4890"> 365</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2adaa9f08962f9d5656966bb22ca4890">TEX_FORMAT_RGBA8_TYPELESS</a>, </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0bdd5c2150977a0d9092831c1f45e61b"> 369</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0bdd5c2150977a0d9092831c1f45e61b">TEX_FORMAT_RGBA8_UNORM</a>,</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a86a2e99aecff070023e1dd0331fb9a95"> 373</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a86a2e99aecff070023e1dd0331fb9a95">TEX_FORMAT_RGBA8_UNORM_SRGB</a>, </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a4330e66e6d3435a44a27e546c71ed4"> 377</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a4330e66e6d3435a44a27e546c71ed4">TEX_FORMAT_RGBA8_UINT</a>, </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee7096ae28505b3d8a5a3b35dd6a6137"> 381</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee7096ae28505b3d8a5a3b35dd6a6137">TEX_FORMAT_RGBA8_SNORM</a>, </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a971e25859d3b4412f0c3c50bab73d050"> 385</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a971e25859d3b4412f0c3c50bab73d050">TEX_FORMAT_RGBA8_SINT</a>, </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  </div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75087518065ba0347cc5e7929fb552a7"> 389</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75087518065ba0347cc5e7929fb552a7">TEX_FORMAT_RG16_TYPELESS</a>, </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  </div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa8f7fb1f77bcd0288186783edbdbfe6b"> 393</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa8f7fb1f77bcd0288186783edbdbfe6b">TEX_FORMAT_RG16_FLOAT</a>, </div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  </div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a05de082cc29f4eb0a142ef09eb7063a8"> 399</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a05de082cc29f4eb0a142ef09eb7063a8">TEX_FORMAT_RG16_UNORM</a>, </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  </div><div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5d522e3800275249b788a5daef991016"> 403</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5d522e3800275249b788a5daef991016">TEX_FORMAT_RG16_UINT</a>, </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  </div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7f9b08e92d01fa0d05415a50949f7988"> 409</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7f9b08e92d01fa0d05415a50949f7988">TEX_FORMAT_RG16_SNORM</a>, </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  </div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3517095f8afdeb90e4cb8e07d0a4e853"> 413</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3517095f8afdeb90e4cb8e07d0a4e853">TEX_FORMAT_RG16_SINT</a>, </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a74ab0438f398e3fa1bd34156b5b0c507"> 417</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a74ab0438f398e3fa1bd34156b5b0c507">TEX_FORMAT_R32_TYPELESS</a>, </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  </div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac2f008275b02ec4c7a85ac5da386958b"> 421</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac2f008275b02ec4c7a85ac5da386958b">TEX_FORMAT_D32_FLOAT</a>, </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  </div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0a5ec081ba06f50f1876d712c95fbbb2"> 425</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0a5ec081ba06f50f1876d712c95fbbb2">TEX_FORMAT_R32_FLOAT</a>, </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  </div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75a8f13a2db57163d48ee3f27e048c24"> 429</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75a8f13a2db57163d48ee3f27e048c24">TEX_FORMAT_R32_UINT</a>, </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  </div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7c8dc8d6f51535beca7a2073c3d4ecd5"> 433</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7c8dc8d6f51535beca7a2073c3d4ecd5">TEX_FORMAT_R32_SINT</a>, </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  </div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31654723813dd33664da93c28781804b"> 437</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31654723813dd33664da93c28781804b">TEX_FORMAT_R24G8_TYPELESS</a>, </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  </div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa984b72a532da68bd1f1fc33d54089c8"> 441</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa984b72a532da68bd1f1fc33d54089c8">TEX_FORMAT_D24_UNORM_S8_UINT</a>, </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  </div><div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1bd8929331aee85bc24a61e239a65329"> 445</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1bd8929331aee85bc24a61e239a65329">TEX_FORMAT_R24_UNORM_X8_TYPELESS</a>, </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  </div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a33c39e645a66ed967ede7d1ff30c807c"> 450</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a33c39e645a66ed967ede7d1ff30c807c">TEX_FORMAT_X24_TYPELESS_G8_UINT</a>, </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  </div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465acc9be5a43fc28f9ad4c8bb351683c536"> 454</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465acc9be5a43fc28f9ad4c8bb351683c536">TEX_FORMAT_RG8_TYPELESS</a>, </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  </div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aae3fd0b0cf035ee8baaedd0af7d4bf1a"> 458</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aae3fd0b0cf035ee8baaedd0af7d4bf1a">TEX_FORMAT_RG8_UNORM</a>, </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  </div><div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3e39944f1f4957c628463ea255827581"> 462</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3e39944f1f4957c628463ea255827581">TEX_FORMAT_RG8_UINT</a>, </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  </div><div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a981eca1860bc430747e5f2107c3668d4"> 466</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a981eca1860bc430747e5f2107c3668d4">TEX_FORMAT_RG8_SNORM</a>, </div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  </div><div class="line"><a name="l00470"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9151fd16adda2dc9a0ebe06462192ad7"> 470</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9151fd16adda2dc9a0ebe06462192ad7">TEX_FORMAT_RG8_SINT</a>, </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  </div><div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ade07fbcd1046d63804856cd55c6f5474"> 474</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ade07fbcd1046d63804856cd55c6f5474">TEX_FORMAT_R16_TYPELESS</a>, </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  </div><div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a57374ece9cb48fbd4f0f7a834b565462"> 478</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a57374ece9cb48fbd4f0f7a834b565462">TEX_FORMAT_R16_FLOAT</a>, </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  </div><div class="line"><a name="l00482"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aea03d50f3700be94d30dc941aeb40724"> 482</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aea03d50f3700be94d30dc941aeb40724">TEX_FORMAT_D16_UNORM</a>, </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  </div><div class="line"><a name="l00488"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a29829600ff7adcb7a1f3b0b46ed1a840"> 488</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a29829600ff7adcb7a1f3b0b46ed1a840">TEX_FORMAT_R16_UNORM</a>, </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  </div><div class="line"><a name="l00492"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a6fc0ad69e558e6d0d363e69ada5e84ee"> 492</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a6fc0ad69e558e6d0d363e69ada5e84ee">TEX_FORMAT_R16_UINT</a>, </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  </div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0611b4b06d9f2395dc9cb22352f3e0e0"> 498</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0611b4b06d9f2395dc9cb22352f3e0e0">TEX_FORMAT_R16_SNORM</a>, </div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  </div><div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aac46b66d97842649d10c8ca15ea0e154"> 502</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aac46b66d97842649d10c8ca15ea0e154">TEX_FORMAT_R16_SINT</a>, </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5cb418acea50b394e5dfd254e7ced9f5"> 506</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5cb418acea50b394e5dfd254e7ced9f5">TEX_FORMAT_R8_TYPELESS</a>, </div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  </div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a21e4a0387472fc3ae5f4c7cc1ba853b7"> 510</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a21e4a0387472fc3ae5f4c7cc1ba853b7">TEX_FORMAT_R8_UNORM</a>, </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  </div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae9e4c8ead49e7048193fa1dff0d2a823"> 514</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae9e4c8ead49e7048193fa1dff0d2a823">TEX_FORMAT_R8_UINT</a>, </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  </div><div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7340ccaf1e5bb4da97f53f9dc9cdaede"> 518</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7340ccaf1e5bb4da97f53f9dc9cdaede">TEX_FORMAT_R8_SNORM</a>, </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  </div><div class="line"><a name="l00522"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4ebb7d7011d8106feb04553e486dd509"> 522</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4ebb7d7011d8106feb04553e486dd509">TEX_FORMAT_R8_SINT</a>, </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  </div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3723820d4d3828dfd2f9262a7dba6708"> 527</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3723820d4d3828dfd2f9262a7dba6708">TEX_FORMAT_A8_UNORM</a>, </div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  </div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3de9268103c1ded8e4ffd975c0a705d4"> 532</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3de9268103c1ded8e4ffd975c0a705d4">TEX_FORMAT_R1_UNORM</a>, </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  </div><div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9a560e8e14a941193b18ea3c751da263"> 536</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9a560e8e14a941193b18ea3c751da263">TEX_FORMAT_RGB9E5_SHAREDEXP</a>, </div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  </div><div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaa5dfc47c51837ad649fac6f00655841"> 541</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaa5dfc47c51837ad649fac6f00655841">TEX_FORMAT_RG8_B8G8_UNORM</a>, </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  </div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a870215407929c7531a71e7332024e388"> 546</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a870215407929c7531a71e7332024e388">TEX_FORMAT_G8R8_G8B8_UNORM</a>, </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  </div><div class="line"><a name="l00554"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a60f594c52fbcb1533d0cf8509a6c65ce"> 554</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a60f594c52fbcb1533d0cf8509a6c65ce">TEX_FORMAT_BC1_TYPELESS</a>, </div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  </div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab63331cd7ecf61190c25545324ea2ed7"> 563</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab63331cd7ecf61190c25545324ea2ed7">TEX_FORMAT_BC1_UNORM</a>,</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  </div><div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4ebd6ca8bd89786ce5397f0305bbc6e"> 572</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4ebd6ca8bd89786ce5397f0305bbc6e">TEX_FORMAT_BC1_UNORM_SRGB</a>,</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  </div><div class="line"><a name="l00580"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa15fff042b0c21e710e300304c30a3ed"> 580</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa15fff042b0c21e710e300304c30a3ed">TEX_FORMAT_BC2_TYPELESS</a>, </div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  </div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8cc3fcce89d2803794684ef3836da91b"> 589</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8cc3fcce89d2803794684ef3836da91b">TEX_FORMAT_BC2_UNORM</a>,</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  </div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4c8df626ee847c0edc91e3f4074723e"> 598</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4c8df626ee847c0edc91e3f4074723e">TEX_FORMAT_BC2_UNORM_SRGB</a>,</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  </div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a02c11ecab5cd1536f9f78b8cef4e5ba4"> 606</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a02c11ecab5cd1536f9f78b8cef4e5ba4">TEX_FORMAT_BC3_TYPELESS</a>, </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  </div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac9d4bc97bbff4a3e369989e5f092c1fc"> 615</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac9d4bc97bbff4a3e369989e5f092c1fc">TEX_FORMAT_BC3_UNORM</a>,</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  </div><div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee1add9082d7de6c1b9a4e4dfcd6b32e"> 624</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee1add9082d7de6c1b9a4e4dfcd6b32e">TEX_FORMAT_BC3_UNORM_SRGB</a>,</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  </div><div class="line"><a name="l00632"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef84cdaf5c49e1bc88a29138a12908a7"> 632</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef84cdaf5c49e1bc88a29138a12908a7">TEX_FORMAT_BC4_TYPELESS</a>, </div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  </div><div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaf7cc360071c3fa26a55da8e9a49c532"> 641</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaf7cc360071c3fa26a55da8e9a49c532">TEX_FORMAT_BC4_UNORM</a>,</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  </div><div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a72f458a370b3931c2a499a834f9a07ad"> 650</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a72f458a370b3931c2a499a834f9a07ad">TEX_FORMAT_BC4_SNORM</a>,</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  </div><div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac60117a0faee2761b0af7e2aff3aa9dc"> 658</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac60117a0faee2761b0af7e2aff3aa9dc">TEX_FORMAT_BC5_TYPELESS</a>,</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  </div><div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af220720a273822e42215f64da22a39c2"> 667</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af220720a273822e42215f64da22a39c2">TEX_FORMAT_BC5_UNORM</a>,</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  </div><div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0d3d63ade03dc83ba8e00f54eda5034e"> 676</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0d3d63ade03dc83ba8e00f54eda5034e">TEX_FORMAT_BC5_SNORM</a>,</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  </div><div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adf11b47f6d9a00acdef8a6365627e236"> 681</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adf11b47f6d9a00acdef8a6365627e236">TEX_FORMAT_B5G6R5_UNORM</a>,</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  </div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab2f7731db1a82c6a1e1e376798668445"> 686</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab2f7731db1a82c6a1e1e376798668445">TEX_FORMAT_B5G5R5A1_UNORM</a>, </div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  </div><div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a85c8ec3cafb6f81a2beffd0d1a2ef9bc"> 691</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a85c8ec3cafb6f81a2beffd0d1a2ef9bc">TEX_FORMAT_BGRA8_UNORM</a>,</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  </div><div class="line"><a name="l00696"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa4acef99829b6389f46c1d4974c3c608"> 696</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa4acef99829b6389f46c1d4974c3c608">TEX_FORMAT_BGRX8_UNORM</a>,</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  </div><div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a62a2e8c0db0113b562af2be036586243"> 701</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a62a2e8c0db0113b562af2be036586243">TEX_FORMAT_R10G10B10_XR_BIAS_A2_UNORM</a>,</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  </div><div class="line"><a name="l00706"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a680df490939619dd7b30ea7037b9a9f7"> 706</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a680df490939619dd7b30ea7037b9a9f7">TEX_FORMAT_BGRA8_TYPELESS</a>,</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  </div><div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ad6be5eaf8712b7c04727f9b4803911f5"> 711</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ad6be5eaf8712b7c04727f9b4803911f5">TEX_FORMAT_BGRA8_UNORM_SRGB</a>,</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  </div><div class="line"><a name="l00716"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a01d64cc54ad460cf23844197dbba3f9b"> 716</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a01d64cc54ad460cf23844197dbba3f9b">TEX_FORMAT_BGRX8_TYPELESS</a>,</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  </div><div class="line"><a name="l00721"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a849b5daeb4b639e1d7581177ddb53cc5"> 721</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a849b5daeb4b639e1d7581177ddb53cc5">TEX_FORMAT_BGRX8_UNORM_SRGB</a>,</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  </div><div class="line"><a name="l00729"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2006402150aa88e16d5010b7ef808aa6"> 729</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2006402150aa88e16d5010b7ef808aa6">TEX_FORMAT_BC6H_TYPELESS</a>,</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  </div><div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa89eb4d526cbabe4548ccb4e33371eda"> 737</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa89eb4d526cbabe4548ccb4e33371eda">TEX_FORMAT_BC6H_UF16</a>,</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  </div><div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef805e475325f97eec66964176f52a19"> 745</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef805e475325f97eec66964176f52a19">TEX_FORMAT_BC6H_SF16</a>,</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  </div><div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbf9435e67a9b03c4988b191884d2c97"> 753</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbf9435e67a9b03c4988b191884d2c97">TEX_FORMAT_BC7_TYPELESS</a>,</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  </div><div class="line"><a name="l00761"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af0128d2a0c05d795926d1b4be8c3e468"> 761</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af0128d2a0c05d795926d1b4be8c3e468">TEX_FORMAT_BC7_UNORM</a>,</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  </div><div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5660aeeaed147beaa9e4bdc8cff42bc5"> 769</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5660aeeaed147beaa9e4bdc8cff42bc5">TEX_FORMAT_BC7_UNORM_SRGB</a>,</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  </div><div class="line"><a name="l00772"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65"> 772</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  };</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> </div><div class="line"><a name="l00780"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3"> 780</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> : Int32</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  {</div><div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a93daeed05a3dd2c9b924c7c2717eb5d5"> 782</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a93daeed05a3dd2c9b924c7c2717eb5d5">FILTER_TYPE_UNKNOWN</a> = 0, </div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd"> 783</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, </div><div class="line"><a name="l00784"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751"> 784</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, </div><div class="line"><a name="l00785"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459"> 785</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00786"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b"> 786</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a>, </div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75"> 787</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a>, </div><div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97"> 788</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97">FILTER_TYPE_COMPARISON_ANISOTROPIC</a>, </div><div class="line"><a name="l00789"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d"> 789</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a>, </div><div class="line"><a name="l00790"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1"> 790</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a>, </div><div class="line"><a name="l00791"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4398678f25fd7f9c5ab22acb772a6188"> 791</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4398678f25fd7f9c5ab22acb772a6188">FILTER_TYPE_MINIMUM_ANISOTROPIC</a>, </div><div class="line"><a name="l00792"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99"> 792</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a>, </div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0"> 793</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a>, </div><div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3aff4370c3c16294f04a71dc1c08c1c33a"> 794</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3aff4370c3c16294f04a71dc1c08c1c33a">FILTER_TYPE_MAXIMUM_ANISOTROPIC</a>, </div><div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ae96e67dde46ffaee98ac2f3625015267"> 795</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ae96e67dde46ffaee98ac2f3625015267">FILTER_TYPE_NUM_FILTERS</a> </div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  };</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> </div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> </div><div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1"> 805</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> : Int32</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  {</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1ae4eb70142178447e2c072c2d66d5c002"> 808</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1ae4eb70142178447e2c072c2d66d5c002">TEXTURE_ADDRESS_UNKNOWN</a> = 0,</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00812"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32"> 812</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a> = 1,</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> </div><div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b"> 816</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a> = 2,</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> </div><div class="line"><a name="l00821"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f"> 821</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a> = 3,</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00826"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a3f55d99e8bb9fbd60ad58ad42f7754cd"> 826</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a3f55d99e8bb9fbd60ad58ad42f7754cd">TEXTURE_ADDRESS_BORDER</a> = 4,</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> </div><div class="line"><a name="l00833"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1afadca32bf8a0f145bc506aa8583712c2"> 833</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1afadca32bf8a0f145bc506aa8583712c2">TEXTURE_ADDRESS_MIRROR_ONCE</a> = 5,</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> </div><div class="line"><a name="l00836"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a2d13beda40c3a09062c17faea418d142"> 836</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a2d13beda40c3a09062c17faea418d142">TEXTURE_ADDRESS_NUM_MODES</a></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  };</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> </div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> </div><div class="line"><a name="l00847"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3"> 847</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> : Int32</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  {</div><div class="line"><a name="l00850"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5"> 850</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5">COMPARISON_FUNC_UNKNOWN</a> = 0,</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00854"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb"> 854</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb">COMPARISON_FUNC_NEVER</a>,</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div><div class="line"><a name="l00858"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a411164cf3b8a7ce0e4d3792b4bfe3e63"> 858</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a411164cf3b8a7ce0e4d3792b4bfe3e63">COMPARISON_FUNC_LESS</a>,</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> </div><div class="line"><a name="l00862"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad33573ebed971ae2e788c0c2119433c8"> 862</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad33573ebed971ae2e788c0c2119433c8">COMPARISON_FUNC_EQUAL</a>,</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> </div><div class="line"><a name="l00866"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11"> 866</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11">COMPARISON_FUNC_LESS_EQUAL</a>,</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> </div><div class="line"><a name="l00870"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ae3ab0763823fc67730b719b4acafeea2"> 870</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ae3ab0763823fc67730b719b4acafeea2">COMPARISON_FUNC_GREATER</a>,</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> </div><div class="line"><a name="l00874"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3abf16cedb7ad37988bab6e7a80e11f263"> 874</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3abf16cedb7ad37988bab6e7a80e11f263">COMPARISON_FUNC_NOT_EQUAL</a>,</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  </div><div class="line"><a name="l00878"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad35e669229761e23a8b6d7b1dff8d6a3"> 878</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad35e669229761e23a8b6d7b1dff8d6a3">COMPARISON_FUNC_GREATER_EQUAL</a>,</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  </div><div class="line"><a name="l00882"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11"> 882</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11">COMPARISON_FUNC_ALWAYS</a>,</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> </div><div class="line"><a name="l00885"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a73e6559b15743c06d473c3ea60794761"> 885</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a73e6559b15743c06d473c3ea60794761">COMPARISON_FUNC_NUM_FUNCTIONS</a></div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  };</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> </div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> </div><div class="line"><a name="l00891"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782"> 891</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782">MISC_TEXTURE_FLAG</a></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  {</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div><div class="line"><a name="l00896"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782a926903219be74a74df00dedd41cd1d84"> 896</a></span>  <a class="code" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782a926903219be74a74df00dedd41cd1d84">MISC_TEXTURE_FLAG_GENERATE_MIPS</a> = 0x01</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  };</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> </div><div class="line"><a name="l00900"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_object_attribs.html"> 900</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  {</div><div class="line"><a name="l00903"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_object_attribs.html#a14a31dc6ad69e0b79514e5349e9b4fc0"> 903</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_device_object_attribs.html#a14a31dc6ad69e0b79514e5349e9b4fc0">Name</a>;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> </div><div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_object_attribs.html#a579fff821d8252cf66fd6bcb4429efad"> 906</a></span>  <a class="code" href="struct_diligent_1_1_device_object_attribs.html#a579fff821d8252cf66fd6bcb4429efad">DeviceObjectAttribs</a>() : </div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <a class="code" href="struct_diligent_1_1_device_object_attribs.html#a14a31dc6ad69e0b79514e5349e9b4fc0">Name</a>(nullptr)</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  {}</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  };</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> </div><div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html"> 912</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a></div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  {</div><div class="line"><a name="l00915"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a"> 915</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a>;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div><div class="line"><a name="l00918"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945"> 918</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a>;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  </div><div class="line"><a name="l00921"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a43f3ed5e1426f6260d8d55d252180a6d"> 921</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a43f3ed5e1426f6260d8d55d252180a6d">ColorBufferFormat</a>;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  </div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a73cf565892611df8559aa13d1ff8f038"> 924</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a73cf565892611df8559aa13d1ff8f038">DepthBufferFormat</a>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> </div><div class="line"><a name="l00927"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#abb6c480f76a89a38333249970fc0c6d9"> 927</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abb6c480f76a89a38333249970fc0c6d9">SamplesCount</a>;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> </div><div class="line"><a name="l00930"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a05d5e9d8ca0869dd19d753d987b1454b"> 930</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a05d5e9d8ca0869dd19d753d987b1454b">BufferCount</a>;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00933"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a4c098ffed1ea02069fe6141d80dd6d77"> 933</a></span>  Float32 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a4c098ffed1ea02069fe6141d80dd6d77">DefaultDepthValue</a>;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span> </div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a5d225a31e09f3cefab7a1146841c2abf"> 936</a></span>  Uint8 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a5d225a31e09f3cefab7a1146841c2abf">DefaultStencilValue</a>;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div><div class="line"><a name="l00939"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#afebad3ffd438ed535f4613407e4edc4c"> 939</a></span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#afebad3ffd438ed535f4613407e4edc4c">SwapChainDesc</a>() :</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a>(0),</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a>(0),</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a43f3ed5e1426f6260d8d55d252180a6d">ColorBufferFormat</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a86a2e99aecff070023e1dd0331fb9a95">TEX_FORMAT_RGBA8_UNORM_SRGB</a> ),</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a73cf565892611df8559aa13d1ff8f038">DepthBufferFormat</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac2f008275b02ec4c7a85ac5da386958b">TEX_FORMAT_D32_FLOAT</a> ),</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abb6c480f76a89a38333249970fc0c6d9">SamplesCount</a>( 1 ),</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a05d5e9d8ca0869dd19d753d987b1454b">BufferCount</a>( 2 ),</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a4c098ffed1ea02069fe6141d80dd6d77">DefaultDepthValue</a>(1.f),</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a5d225a31e09f3cefab7a1146841c2abf">DefaultStencilValue</a>(0)</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  {}</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  };</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> </div><div class="line"><a name="l00952"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_creation_attribs.html"> 952</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_engine_creation_attribs.html">EngineCreationAttribs</a></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  {</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keyword">const</span> Char* strShaderCachePath;</div><div class="line"><a name="l00957"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_creation_attribs.html#a4eec3de7d2ef7c409986620c204b5a29"> 957</a></span>  <span class="keyword">class </span>IMemoryAllocator *<a class="code" href="struct_diligent_1_1_engine_creation_attribs.html#a4eec3de7d2ef7c409986620c204b5a29">pRawMemAllocator</a>;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <a class="code" href="struct_diligent_1_1_engine_creation_attribs.html">EngineCreationAttribs</a>() : </div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  strShaderCachePath(nullptr),</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <a class="code" href="struct_diligent_1_1_engine_creation_attribs.html#a4eec3de7d2ef7c409986620c204b5a29">pRawMemAllocator</a>(nullptr)</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  {}</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  };</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> </div><div class="line"><a name="l00965"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html"> 965</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html">EngineD3D12Attribs</a> : <span class="keyword">public</span> <a class="code" href="struct_diligent_1_1_engine_creation_attribs.html">EngineCreationAttribs</a></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  {</div><div class="line"><a name="l00968"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a12fe830b453e67b806300b7082aaa485"> 968</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a12fe830b453e67b806300b7082aaa485">CPUDescriptorHeapAllocationSize</a>[4] = </div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  1024, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  256, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  128, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_RTV</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  64 <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_DSV</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  };</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> </div><div class="line"><a name="l00977"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html#af28560b39d2c2a20a6f0dfb4acfb641b"> 977</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html#af28560b39d2c2a20a6f0dfb4acfb641b">GPUDescriptorHeapSize</a>[2] = </div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  {</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  16384, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  1024 <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  };</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> </div><div class="line"><a name="l00984"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a922a172c8be3881a1b1480802ac3ec10"> 984</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a922a172c8be3881a1b1480802ac3ec10">GPUDescriptorHeapDynamicSize</a>[2] = </div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  4096, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV</span></div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  1024 <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  };</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l00992"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a9b30d3de9423a1e8e6b3309b6fb7b613"> 992</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a9b30d3de9423a1e8e6b3309b6fb7b613">DynamicDescriptorAllocationChunkSize</a>[2] = </div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  {</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  128, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV</span></div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  16 <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  };</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> </div><div class="line"><a name="l01001"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a71eeaab09ee38f40ae159f7e8ecc801b"> 1001</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a71eeaab09ee38f40ae159f7e8ecc801b">NumCommandsToFlushCmdList</a> = 256;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  };</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> </div><div class="line"><a name="l01005"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html"> 1005</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_box.html">Box</a></div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  {</div><div class="line"><a name="l01007"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#a6cec8f1f8c44cc53b4cd1dfe3b9f08d1"> 1007</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#a6cec8f1f8c44cc53b4cd1dfe3b9f08d1">MinX</a>; </div><div class="line"><a name="l01008"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#a5f38a77f2749ad506c4418463ab7ab30"> 1008</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#a5f38a77f2749ad506c4418463ab7ab30">MaxX</a>; </div><div class="line"><a name="l01009"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#aaf2671702197fb75ab16e80b71999768"> 1009</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#aaf2671702197fb75ab16e80b71999768">MinY</a>; </div><div class="line"><a name="l01010"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#a332e14c1408ce8b260c9ad4ffb422200"> 1010</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#a332e14c1408ce8b260c9ad4ffb422200">MaxY</a>; </div><div class="line"><a name="l01011"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#aac79f5a5e0830b9cbdbb16ba04491420"> 1011</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#aac79f5a5e0830b9cbdbb16ba04491420">MinZ</a>; </div><div class="line"><a name="l01012"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#af5b6da6f645ee6d219b5723825b1ec15"> 1012</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#af5b6da6f645ee6d219b5723825b1ec15">MaxZ</a>; </div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> </div><div class="line"><a name="l01015"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#af14a0fee74cce558f3bef58b133702ac"> 1015</a></span>  <a class="code" href="struct_diligent_1_1_box.html#af14a0fee74cce558f3bef58b133702ac">Box</a>(Uint32 _MinX = 0, Uint32 _MaxX = 0,</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  Uint32 _MinY = 0, Uint32 _MaxY = 0,</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  Uint32 _MinZ = 0, Uint32 _MaxZ = 1) : </div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <a class="code" href="struct_diligent_1_1_box.html#a6cec8f1f8c44cc53b4cd1dfe3b9f08d1">MinX</a>(_MinX), <a class="code" href="struct_diligent_1_1_box.html#a5f38a77f2749ad506c4418463ab7ab30">MaxX</a>(_MaxX),</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <a class="code" href="struct_diligent_1_1_box.html#aaf2671702197fb75ab16e80b71999768">MinY</a>(_MinY), <a class="code" href="struct_diligent_1_1_box.html#a332e14c1408ce8b260c9ad4ffb422200">MaxY</a>(_MaxY),</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <a class="code" href="struct_diligent_1_1_box.html#aac79f5a5e0830b9cbdbb16ba04491420">MinZ</a>(_MinZ), <a class="code" href="struct_diligent_1_1_box.html#af5b6da6f645ee6d219b5723825b1ec15">MaxZ</a>(_MaxZ)</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  {}</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  };</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> </div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01026"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476c"> 1026</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476c">COMPONENT_TYPE</a> : Int32</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  {</div><div class="line"><a name="l01029"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cae0b3fdc5523e496fa7c4bbf417b4ad90"> 1029</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cae0b3fdc5523e496fa7c4bbf417b4ad90">COMPONENT_TYPE_UNDEFINED</a>,</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01032"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cac0be9da22dea8c4f2254f57bb7bff4a1"> 1032</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cac0be9da22dea8c4f2254f57bb7bff4a1">COMPONENT_TYPE_FLOAT</a>,</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div><div class="line"><a name="l01035"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca09045ed1da150ed46fc509775fe5944f"> 1035</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca09045ed1da150ed46fc509775fe5944f">COMPONENT_TYPE_SNORM</a>,</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> </div><div class="line"><a name="l01038"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476caee0de6d3e12a57c53b9f6491300f7cb2"> 1038</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476caee0de6d3e12a57c53b9f6491300f7cb2">COMPONENT_TYPE_UNORM</a>,</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> </div><div class="line"><a name="l01041"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cab7651620cd29d84d11b883db4397edde"> 1041</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cab7651620cd29d84d11b883db4397edde">COMPONENT_TYPE_UNORM_SRGB</a>,</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> </div><div class="line"><a name="l01044"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca0547352fdd2805b64922cc6737ec877a"> 1044</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca0547352fdd2805b64922cc6737ec877a">COMPONENT_TYPE_SINT</a>,</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div><div class="line"><a name="l01047"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca2254ce2599cdd04e947599b30a8da400"> 1047</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca2254ce2599cdd04e947599b30a8da400">COMPONENT_TYPE_UINT</a>,</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div><div class="line"><a name="l01050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476caa3984b7039eb6b96b04a68ac8684750d"> 1050</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476caa3984b7039eb6b96b04a68ac8684750d">COMPONENT_TYPE_DEPTH</a>,</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> </div><div class="line"><a name="l01053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca2cdf1c20c083d2427affaba85e76102f"> 1053</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca2cdf1c20c083d2427affaba85e76102f">COMPONENT_TYPE_DEPTH_STENCIL</a>,</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div><div class="line"><a name="l01056"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca9d4afc0fa9a367f3b34542f8d152e40a"> 1056</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca9d4afc0fa9a367f3b34542f8d152e40a">COMPONENT_TYPE_COMPOUND</a>,</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> </div><div class="line"><a name="l01059"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cab1b19584374b1acb6e1984aa32ac9819"> 1059</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cab1b19584374b1acb6e1984aa32ac9819">COMPONENT_TYPE_COMPRESSED</a>,</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  };</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> </div><div class="line"><a name="l01065"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html"> 1065</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_format_attribs.html">TextureFormatAttribs</a></div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  {</div><div class="line"><a name="l01068"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#ab63e880dcb9af649e4c52ead4fd3cafd"> 1068</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#ab63e880dcb9af649e4c52ead4fd3cafd">Format</a>;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div><div class="line"><a name="l01072"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#a6ed4f3931984712f58e8ac6a4863565a"> 1072</a></span>  <span class="keyword">const</span> Char *<a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a6ed4f3931984712f58e8ac6a4863565a">Name</a>;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> </div><div class="line"><a name="l01076"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#a87c63340aa2c943fc0469d905090e728"> 1076</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a87c63340aa2c943fc0469d905090e728">ComponentSize</a>;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01079"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#acfd78789dc8c707a8012fd1f858b6389"> 1079</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#acfd78789dc8c707a8012fd1f858b6389">NumComponents</a>;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div><div class="line"><a name="l01082"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#a50c46afc1ac002c875469fa439faf2e9"> 1082</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476c">COMPONENT_TYPE</a> <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a50c46afc1ac002c875469fa439faf2e9">ComponentType</a>; </div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div><div class="line"><a name="l01085"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#aea0954abcd11cbf0f9fe335be05716a9"> 1085</a></span>  <span class="keyword">explicit</span> <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#aea0954abcd11cbf0f9fe335be05716a9">TextureFormatAttribs</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> _Format = <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>, </div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keyword">const</span> Char *_Name = <span class="stringliteral">"TEX_FORMAT_UNKNOWN"</span>,</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  Uint32 _ComponentSize = 0,</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  Uint32 _NumComponents = 0,</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476c">COMPONENT_TYPE</a> _ComponentType = <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cae0b3fdc5523e496fa7c4bbf417b4ad90">COMPONENT_TYPE_UNDEFINED</a> ) : </div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#ab63e880dcb9af649e4c52ead4fd3cafd">Format</a>(_Format),</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a6ed4f3931984712f58e8ac6a4863565a">Name</a>(_Name),</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a87c63340aa2c943fc0469d905090e728">ComponentSize</a>(_ComponentSize),</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#acfd78789dc8c707a8012fd1f858b6389">NumComponents</a>(_NumComponents),</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a50c46afc1ac002c875469fa439faf2e9">ComponentType</a>(_ComponentType)</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  {}</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  };</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> </div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div><div class="line"><a name="l01101"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info.html"> 1101</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_format_info.html">TextureFormatInfo</a> : <span class="keyword">public</span> <a class="code" href="struct_diligent_1_1_texture_format_attribs.html">TextureFormatAttribs</a></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  {</div><div class="line"><a name="l01104"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info.html#ae26d9fbb8b9916341558eefaeb407c39"> 1104</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info.html#ae26d9fbb8b9916341558eefaeb407c39">Supported</a>;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> </div><div class="line"><a name="l01107"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info.html#a5ca4422a66a3d04dc4743d2b28e95321"> 1107</a></span>  <span class="keyword">explicit</span> <a class="code" href="struct_diligent_1_1_texture_format_info.html#a5ca4422a66a3d04dc4743d2b28e95321">TextureFormatInfo</a>() :</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <a class="code" href="struct_diligent_1_1_texture_format_info.html#ae26d9fbb8b9916341558eefaeb407c39">Supported</a>(false)</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  {}</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  };</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> </div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div><div class="line"><a name="l01115"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html"> 1115</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_format_info_ext.html">TextureFormatInfoExt</a> : <a class="code" href="struct_diligent_1_1_texture_format_info.html">TextureFormatInfo</a></div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  {</div><div class="line"><a name="l01118"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a1c36abe83f181f4379eea8a7f53758e1"> 1118</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a1c36abe83f181f4379eea8a7f53758e1">Filterable</a>;</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> </div><div class="line"><a name="l01121"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a65ac5cdc4ad7f1d0c11af3bcca89777e"> 1121</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a65ac5cdc4ad7f1d0c11af3bcca89777e">ColorRenderable</a>;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> </div><div class="line"><a name="l01124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a2313b53e88e1e5da431bfee32dd7e7d6"> 1124</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a2313b53e88e1e5da431bfee32dd7e7d6">DepthRenderable</a>;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> </div><div class="line"><a name="l01127"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a3d7aa73d17221417407c033cb340e584"> 1127</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a3d7aa73d17221417407c033cb340e584">Tex1DFmt</a>;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> </div><div class="line"><a name="l01130"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a60616f120da2747f0f11c01911efdc6e"> 1130</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a60616f120da2747f0f11c01911efdc6e">Tex2DFmt</a>;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> </div><div class="line"><a name="l01133"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a1fe3cc09b666032db4b7511b8d5986f5"> 1133</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a1fe3cc09b666032db4b7511b8d5986f5">Tex3DFmt</a>;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> </div><div class="line"><a name="l01136"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a2983887c36e8830793cd2bea39519f9b"> 1136</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a2983887c36e8830793cd2bea39519f9b">TexCubeFmt</a>;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> </div><div class="line"><a name="l01139"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a26e15c8d3bf315d271dca7c74f24a687"> 1139</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a26e15c8d3bf315d271dca7c74f24a687">SupportsMS</a>;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> </div><div class="line"><a name="l01142"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#aec1531e0d19e57b0c3f11a6e1fce1741"> 1142</a></span>  <span class="keyword">explicit</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#aec1531e0d19e57b0c3f11a6e1fce1741">TextureFormatInfoExt</a>() : </div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a1c36abe83f181f4379eea8a7f53758e1">Filterable</a>(false),</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a65ac5cdc4ad7f1d0c11af3bcca89777e">ColorRenderable</a>(false),</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a2313b53e88e1e5da431bfee32dd7e7d6">DepthRenderable</a>(false),</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a3d7aa73d17221417407c033cb340e584">Tex1DFmt</a>(false),</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a60616f120da2747f0f11c01911efdc6e">Tex2DFmt</a>(false),</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a1fe3cc09b666032db4b7511b8d5986f5">Tex3DFmt</a>(false),</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a2983887c36e8830793cd2bea39519f9b">TexCubeFmt</a>(false),</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a26e15c8d3bf315d271dca7c74f24a687">SupportsMS</a>(false)</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  {}</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  };</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> }</div><div class="ttc" id="namespace_diligent_html_a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11"><div class="ttname"><a href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11">Diligent::COMPARISON_FUNC_LESS_EQUAL</a></div><div class="ttdoc">Comparison passes if the source data is less than or equal to the destination data. Direct3D counterpart: D3D11_COMPARISON_LESS_EQUAL/D3D12_COMPARISON_FUNC_LESS_EQUAL. OpenGL counterpart: GL_LEQUAL. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:866</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a"> 39</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> : Int32</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab"> 41</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aaa647691eb129443ff684b379a29819ab">VT_UNDEFINED</a> = 0, </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa69a8f2c4802cb3dad00664337211e3d5"> 42</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa69a8f2c4802cb3dad00664337211e3d5">VT_INT8</a>, </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa3de9144a26c37fb6f00e6ab31019011a"> 43</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa3de9144a26c37fb6f00e6ab31019011a">VT_INT16</a>, </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aadce96830d631236f889b6131d8f93927"> 44</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aadce96830d631236f889b6131d8f93927">VT_INT32</a>, </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aae4d8703975c37ec65b37a255db3d573f"> 45</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aae4d8703975c37ec65b37a255db3d573f">VT_UINT8</a>, </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa0e15f9d0c65df848ae20a42d67b78ee2"> 46</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa0e15f9d0c65df848ae20a42d67b78ee2">VT_UINT16</a>, </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa8d8ad1b30a33c40ba392d626909e200e"> 47</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa8d8ad1b30a33c40ba392d626909e200e">VT_UINT32</a>, </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa655c4d977016936a18aa460c739d65e4"> 48</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa655c4d977016936a18aa460c739d65e4">VT_FLOAT16</a>, </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94"> 49</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a>, </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa404899904bf53c07bbdce4cdb2dc0fab"> 50</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa404899904bf53c07bbdce4cdb2dc0fab">VT_NUM_TYPES</a> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbce"> 61</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbce">BIND_FLAGS</a> : Int32</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea50d6810939c69ef5dec2658ad58d724c"> 63</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea50d6810939c69ef5dec2658ad58d724c">BIND_NONE</a> = 0x0L, </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c"> 64</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea07e85db16b80e8505aaf17b8dd9c626c">BIND_VERTEX_BUFFER</a> = 0x1L, </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03"> 65</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceab548348e977fcc0e815a888d156b5c03">BIND_INDEX_BUFFER</a> = 0x2L, </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9"> 66</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9">BIND_UNIFORM_BUFFER</a> = 0x4L, </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a> = 0x8L, </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea6e78d02c83dd86d2706c23cb7dc30222">BIND_STREAM_OUTPUT</a> = 0x10L,</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89"> 71</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">BIND_RENDER_TARGET</a> = 0x20L,</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08"> 72</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08">BIND_DEPTH_STENCIL</a> = 0x40L,</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c"> 73</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a> = 0x80L,</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea059916f0a480fa57e6e417f8d0acf67f"> 74</a></span>  <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea059916f0a480fa57e6e417f8d0acf67f">BIND_INDIRECT_DRAW_ARGS</a> = 0x100L</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  };</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746"> 84</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> : Int32</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746aad6764a09ac229be9768507bf46c9747"> 90</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746aad6764a09ac229be9768507bf46c9747">USAGE_STATIC</a> = 0, </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64"> 95</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c"> 99</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985"> 103</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ab62b9db4fc8e7188615217ab196e4985">USAGE_CPU_ACCESSIBLE</a></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  };</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01"> 112</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01">CPU_ACCESS_FLAG</a> : Int32</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364"> 114</a></span>  <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a59c30a6f98d0cd0ecf886e6da6dfa364">CPU_ACCESS_READ</a> = 0x01, </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca"> 115</a></span>  <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a> = 0x02 </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  };</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357"> 125</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> : Int32</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357a65436444d4034265e317ebc832a56cd4"> 129</a></span>  <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357a65436444d4034265e317ebc832a56cd4">MAP_READ</a> = 0x01, </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab"> 133</a></span>  <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357aa72437321e4ef90f4e80a8bc316691ab">MAP_WRITE</a> = 0x02, </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357af0effcf3a0f2ac99c954744ea9a09f85"> 137</a></span>  <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357af0effcf3a0f2ac99c954744ea9a09f85">MAP_READ_WRITE</a> = 0x03</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  };</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6"> 146</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6">MAP_FLAGS</a> : Int32</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6acbd8dc9cee248433c31593e4a62ecb15"> 153</a></span>  <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6acbd8dc9cee248433c31593e4a62ecb15">MAP_FLAG_DO_NOT_WAIT</a> = 0x001,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8"> 158</a></span>  <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a79bb58b801e3f09e62e15c16da90efc8">MAP_FLAG_DISCARD</a> = 0x002,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a329aa426e3e1dc2ae4ce397bd3eb4f38"> 164</a></span>  <a class="code" href="namespace_diligent.html#af3b0412706d6ab99faa6774f92ce9cc6a329aa426e3e1dc2ae4ce397bd3eb4f38">MAP_FLAG_DO_NOT_SYNCHRONIZE</a> = 0x004</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67"> 172</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">RESOURCE_DIMENSION</a> : Int32</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67af059ddcde8b1a3bf1c6f32f3b4865cfe"> 174</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67af059ddcde8b1a3bf1c6f32f3b4865cfe">RESOURCE_DIM_UNDEFINED</a> = 0, </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a266703b7f74b82531f02a1fa61fd6df1"> 175</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a266703b7f74b82531f02a1fa61fd6df1">RESOURCE_DIM_BUFFER</a>, </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa"> 176</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>, </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346"> 177</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>, </div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c"> 178</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>, </div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd"> 179</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>, </div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89"> 180</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>, </div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9"> 181</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a>, </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337"> 182</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a>, </div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aa8c62a6c20eefee728772831dd50b000"> 183</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aa8c62a6c20eefee728772831dd50b000">RESOURCE_DIM_NUM_DIMENSIONS</a> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  };</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd"> 190</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> : Int32</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf08182e262af9a13ffed563d3ae6a791"> 193</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf08182e262af9a13ffed563d3ae6a791">TEXTURE_VIEW_UNDEFINED</a> = 0, </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243"> 197</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>,</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22"> 201</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>, </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa"> 205</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>, </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248"> 209</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248">TEXTURE_VIEW_UNORDERED_ACCESS</a>, </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdab5bd5c90bb6c469b63cffe7947832970"> 212</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdab5bd5c90bb6c469b63cffe7947832970">TEXTURE_VIEW_NUM_VIEWS</a> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  };</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14"> 219</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14">BUFFER_VIEW_TYPE</a> : Int32</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14aec8a0f6db367c6d64f2029d60570e86f"> 222</a></span>  <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14aec8a0f6db367c6d64f2029d60570e86f">BUFFER_VIEW_UNDEFINED</a> = 0,</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b"> 226</a></span>  <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14ad1c69de4eb65756790d8110cb20adb4b">BUFFER_VIEW_SHADER_RESOURCE</a>,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a"> 230</a></span>  <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5422f79416a91ceb5767a242ca021e1a">BUFFER_VIEW_UNORDERED_ACCESS</a>,</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5ca9e42d5a3bd0c9cb84b192a2fd6c0c"> 233</a></span>  <a class="code" href="namespace_diligent.html#a6a774c831a175b647d9144fea155dd14a5ca9e42d5a3bd0c9cb84b192a2fd6c0c">BUFFER_VIEW_NUM_VIEWS</a></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  };</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465"> 244</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> : Int32</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d"> 247</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a> = 0, </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4fee2013ae50b1b380735982b701f18c"> 251</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4fee2013ae50b1b380735982b701f18c">TEX_FORMAT_RGBA32_TYPELESS</a>,</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab9d0f625089592e367942df3c4b518f3"> 255</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab9d0f625089592e367942df3c4b518f3">TEX_FORMAT_RGBA32_FLOAT</a>, </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8e8af2b7e659503f7d143e9af26444f5"> 259</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8e8af2b7e659503f7d143e9af26444f5">TEX_FORMAT_RGBA32_UINT</a>,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ada571f62be667654827c9dc2db417b8f"> 263</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ada571f62be667654827c9dc2db417b8f">TEX_FORMAT_RGBA32_SINT</a>, </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae5f5acf9a6bbf8af39897c463502da0a"> 268</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae5f5acf9a6bbf8af39897c463502da0a">TEX_FORMAT_RGB32_TYPELESS</a>, </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  </div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4590c9158584f05893636a5d97db2e4a"> 273</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4590c9158584f05893636a5d97db2e4a">TEX_FORMAT_RGB32_FLOAT</a>, </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9eae2e4849709bcfec90276e67ac7f6b"> 278</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9eae2e4849709bcfec90276e67ac7f6b">TEX_FORMAT_RGB32_UINT</a>, </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8ffd14c97e1097079a88d16bc60a9145"> 283</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8ffd14c97e1097079a88d16bc60a9145">TEX_FORMAT_RGB32_SINT</a>, </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abfda350d368dfaac50622ac75df912dc"> 287</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abfda350d368dfaac50622ac75df912dc">TEX_FORMAT_RGBA16_TYPELESS</a>, </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adaa6d237efff5ee2324c3eb3c823e896"> 291</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adaa6d237efff5ee2324c3eb3c823e896">TEX_FORMAT_RGBA16_FLOAT</a>, </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1efb4f2505cd9631e84e5fb18c6af583"> 297</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1efb4f2505cd9631e84e5fb18c6af583">TEX_FORMAT_RGBA16_UNORM</a>, </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac797c35718d5c17cad6f24b17d08ac9f"> 301</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac797c35718d5c17cad6f24b17d08ac9f">TEX_FORMAT_RGBA16_UINT</a>, </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a71b0ad28b1acc91bc51c7313d981d116"> 308</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a71b0ad28b1acc91bc51c7313d981d116">TEX_FORMAT_RGBA16_SNORM</a>, </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e395f3bd00e9ff71918447997192ce6"> 312</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e395f3bd00e9ff71918447997192ce6">TEX_FORMAT_RGBA16_SINT</a>, </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31b76f2efe51b25a7117da969e2b6ed2"> 316</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31b76f2efe51b25a7117da969e2b6ed2">TEX_FORMAT_RG32_TYPELESS</a>, </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aeea76393266977ffa2e7a8b252107133"> 320</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aeea76393266977ffa2e7a8b252107133">TEX_FORMAT_RG32_FLOAT</a>, </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3c7c65b42cd75a7d469ed99004afaa6c"> 324</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3c7c65b42cd75a7d469ed99004afaa6c">TEX_FORMAT_RG32_UINT</a>, </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbc39705e8dd96a926cf75880096c18b"> 328</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbc39705e8dd96a926cf75880096c18b">TEX_FORMAT_RG32_SINT</a>, </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9dd3ba150529545a79c1193a324775d2"> 332</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9dd3ba150529545a79c1193a324775d2">TEX_FORMAT_R32G8X24_TYPELESS</a>, </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8a2edc5d9907cd0426edb134dd9adbc5"> 336</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8a2edc5d9907cd0426edb134dd9adbc5">TEX_FORMAT_D32_FLOAT_S8X24_UINT</a>, </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a63e2520343d2091c58583e3738a3cd58"> 340</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a63e2520343d2091c58583e3738a3cd58">TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS</a>, </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e0d8a8dd3f7a02b3decd77f1dd70ab3"> 345</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e0d8a8dd3f7a02b3decd77f1dd70ab3">TEX_FORMAT_X32_TYPELESS_G8X24_UINT</a>, </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae2607a3439026f2d40895acb46b9f5b5"> 349</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae2607a3439026f2d40895acb46b9f5b5">TEX_FORMAT_RGB10A2_TYPELESS</a>, </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2710e10dfc4a6192e1769a6994551f3f"> 353</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2710e10dfc4a6192e1769a6994551f3f">TEX_FORMAT_RGB10A2_UNORM</a>, </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a64579f737dd72bff3657a9c6ee9077"> 357</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a64579f737dd72bff3657a9c6ee9077">TEX_FORMAT_RGB10A2_UINT</a>, </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aed9cce1141988f5e228dda57c87b9936"> 361</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aed9cce1141988f5e228dda57c87b9936">TEX_FORMAT_R11G11B10_FLOAT</a>, </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2adaa9f08962f9d5656966bb22ca4890"> 365</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2adaa9f08962f9d5656966bb22ca4890">TEX_FORMAT_RGBA8_TYPELESS</a>, </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0bdd5c2150977a0d9092831c1f45e61b"> 369</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0bdd5c2150977a0d9092831c1f45e61b">TEX_FORMAT_RGBA8_UNORM</a>,</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a86a2e99aecff070023e1dd0331fb9a95"> 373</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a86a2e99aecff070023e1dd0331fb9a95">TEX_FORMAT_RGBA8_UNORM_SRGB</a>, </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a4330e66e6d3435a44a27e546c71ed4"> 377</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a4330e66e6d3435a44a27e546c71ed4">TEX_FORMAT_RGBA8_UINT</a>, </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee7096ae28505b3d8a5a3b35dd6a6137"> 381</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee7096ae28505b3d8a5a3b35dd6a6137">TEX_FORMAT_RGBA8_SNORM</a>, </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a971e25859d3b4412f0c3c50bab73d050"> 385</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a971e25859d3b4412f0c3c50bab73d050">TEX_FORMAT_RGBA8_SINT</a>, </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  </div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75087518065ba0347cc5e7929fb552a7"> 389</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75087518065ba0347cc5e7929fb552a7">TEX_FORMAT_RG16_TYPELESS</a>, </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  </div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa8f7fb1f77bcd0288186783edbdbfe6b"> 393</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa8f7fb1f77bcd0288186783edbdbfe6b">TEX_FORMAT_RG16_FLOAT</a>, </div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  </div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a05de082cc29f4eb0a142ef09eb7063a8"> 399</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a05de082cc29f4eb0a142ef09eb7063a8">TEX_FORMAT_RG16_UNORM</a>, </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  </div><div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5d522e3800275249b788a5daef991016"> 403</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5d522e3800275249b788a5daef991016">TEX_FORMAT_RG16_UINT</a>, </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  </div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7f9b08e92d01fa0d05415a50949f7988"> 409</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7f9b08e92d01fa0d05415a50949f7988">TEX_FORMAT_RG16_SNORM</a>, </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  </div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3517095f8afdeb90e4cb8e07d0a4e853"> 413</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3517095f8afdeb90e4cb8e07d0a4e853">TEX_FORMAT_RG16_SINT</a>, </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a74ab0438f398e3fa1bd34156b5b0c507"> 417</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a74ab0438f398e3fa1bd34156b5b0c507">TEX_FORMAT_R32_TYPELESS</a>, </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  </div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac2f008275b02ec4c7a85ac5da386958b"> 421</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac2f008275b02ec4c7a85ac5da386958b">TEX_FORMAT_D32_FLOAT</a>, </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  </div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0a5ec081ba06f50f1876d712c95fbbb2"> 425</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0a5ec081ba06f50f1876d712c95fbbb2">TEX_FORMAT_R32_FLOAT</a>, </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  </div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75a8f13a2db57163d48ee3f27e048c24"> 429</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75a8f13a2db57163d48ee3f27e048c24">TEX_FORMAT_R32_UINT</a>, </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  </div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7c8dc8d6f51535beca7a2073c3d4ecd5"> 433</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7c8dc8d6f51535beca7a2073c3d4ecd5">TEX_FORMAT_R32_SINT</a>, </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  </div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31654723813dd33664da93c28781804b"> 437</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31654723813dd33664da93c28781804b">TEX_FORMAT_R24G8_TYPELESS</a>, </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  </div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa984b72a532da68bd1f1fc33d54089c8"> 441</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa984b72a532da68bd1f1fc33d54089c8">TEX_FORMAT_D24_UNORM_S8_UINT</a>, </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  </div><div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1bd8929331aee85bc24a61e239a65329"> 445</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1bd8929331aee85bc24a61e239a65329">TEX_FORMAT_R24_UNORM_X8_TYPELESS</a>, </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  </div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a33c39e645a66ed967ede7d1ff30c807c"> 450</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a33c39e645a66ed967ede7d1ff30c807c">TEX_FORMAT_X24_TYPELESS_G8_UINT</a>, </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  </div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465acc9be5a43fc28f9ad4c8bb351683c536"> 454</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465acc9be5a43fc28f9ad4c8bb351683c536">TEX_FORMAT_RG8_TYPELESS</a>, </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  </div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aae3fd0b0cf035ee8baaedd0af7d4bf1a"> 458</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aae3fd0b0cf035ee8baaedd0af7d4bf1a">TEX_FORMAT_RG8_UNORM</a>, </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  </div><div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3e39944f1f4957c628463ea255827581"> 462</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3e39944f1f4957c628463ea255827581">TEX_FORMAT_RG8_UINT</a>, </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  </div><div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a981eca1860bc430747e5f2107c3668d4"> 466</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a981eca1860bc430747e5f2107c3668d4">TEX_FORMAT_RG8_SNORM</a>, </div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  </div><div class="line"><a name="l00470"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9151fd16adda2dc9a0ebe06462192ad7"> 470</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9151fd16adda2dc9a0ebe06462192ad7">TEX_FORMAT_RG8_SINT</a>, </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  </div><div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ade07fbcd1046d63804856cd55c6f5474"> 474</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ade07fbcd1046d63804856cd55c6f5474">TEX_FORMAT_R16_TYPELESS</a>, </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  </div><div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a57374ece9cb48fbd4f0f7a834b565462"> 478</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a57374ece9cb48fbd4f0f7a834b565462">TEX_FORMAT_R16_FLOAT</a>, </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  </div><div class="line"><a name="l00482"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aea03d50f3700be94d30dc941aeb40724"> 482</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aea03d50f3700be94d30dc941aeb40724">TEX_FORMAT_D16_UNORM</a>, </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  </div><div class="line"><a name="l00488"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a29829600ff7adcb7a1f3b0b46ed1a840"> 488</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a29829600ff7adcb7a1f3b0b46ed1a840">TEX_FORMAT_R16_UNORM</a>, </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  </div><div class="line"><a name="l00492"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a6fc0ad69e558e6d0d363e69ada5e84ee"> 492</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a6fc0ad69e558e6d0d363e69ada5e84ee">TEX_FORMAT_R16_UINT</a>, </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  </div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0611b4b06d9f2395dc9cb22352f3e0e0"> 498</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0611b4b06d9f2395dc9cb22352f3e0e0">TEX_FORMAT_R16_SNORM</a>, </div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  </div><div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aac46b66d97842649d10c8ca15ea0e154"> 502</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aac46b66d97842649d10c8ca15ea0e154">TEX_FORMAT_R16_SINT</a>, </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5cb418acea50b394e5dfd254e7ced9f5"> 506</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5cb418acea50b394e5dfd254e7ced9f5">TEX_FORMAT_R8_TYPELESS</a>, </div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  </div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a21e4a0387472fc3ae5f4c7cc1ba853b7"> 510</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a21e4a0387472fc3ae5f4c7cc1ba853b7">TEX_FORMAT_R8_UNORM</a>, </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  </div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae9e4c8ead49e7048193fa1dff0d2a823"> 514</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae9e4c8ead49e7048193fa1dff0d2a823">TEX_FORMAT_R8_UINT</a>, </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  </div><div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7340ccaf1e5bb4da97f53f9dc9cdaede"> 518</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7340ccaf1e5bb4da97f53f9dc9cdaede">TEX_FORMAT_R8_SNORM</a>, </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  </div><div class="line"><a name="l00522"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4ebb7d7011d8106feb04553e486dd509"> 522</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4ebb7d7011d8106feb04553e486dd509">TEX_FORMAT_R8_SINT</a>, </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  </div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3723820d4d3828dfd2f9262a7dba6708"> 527</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3723820d4d3828dfd2f9262a7dba6708">TEX_FORMAT_A8_UNORM</a>, </div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  </div><div class="line"><a name="l00532"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3de9268103c1ded8e4ffd975c0a705d4"> 532</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3de9268103c1ded8e4ffd975c0a705d4">TEX_FORMAT_R1_UNORM</a>, </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  </div><div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9a560e8e14a941193b18ea3c751da263"> 536</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9a560e8e14a941193b18ea3c751da263">TEX_FORMAT_RGB9E5_SHAREDEXP</a>, </div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  </div><div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaa5dfc47c51837ad649fac6f00655841"> 541</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaa5dfc47c51837ad649fac6f00655841">TEX_FORMAT_RG8_B8G8_UNORM</a>, </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  </div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a870215407929c7531a71e7332024e388"> 546</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a870215407929c7531a71e7332024e388">TEX_FORMAT_G8R8_G8B8_UNORM</a>, </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  </div><div class="line"><a name="l00554"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a60f594c52fbcb1533d0cf8509a6c65ce"> 554</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a60f594c52fbcb1533d0cf8509a6c65ce">TEX_FORMAT_BC1_TYPELESS</a>, </div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  </div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab63331cd7ecf61190c25545324ea2ed7"> 563</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab63331cd7ecf61190c25545324ea2ed7">TEX_FORMAT_BC1_UNORM</a>,</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  </div><div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4ebd6ca8bd89786ce5397f0305bbc6e"> 572</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4ebd6ca8bd89786ce5397f0305bbc6e">TEX_FORMAT_BC1_UNORM_SRGB</a>,</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  </div><div class="line"><a name="l00580"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa15fff042b0c21e710e300304c30a3ed"> 580</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa15fff042b0c21e710e300304c30a3ed">TEX_FORMAT_BC2_TYPELESS</a>, </div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  </div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8cc3fcce89d2803794684ef3836da91b"> 589</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8cc3fcce89d2803794684ef3836da91b">TEX_FORMAT_BC2_UNORM</a>,</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  </div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4c8df626ee847c0edc91e3f4074723e"> 598</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4c8df626ee847c0edc91e3f4074723e">TEX_FORMAT_BC2_UNORM_SRGB</a>,</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  </div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a02c11ecab5cd1536f9f78b8cef4e5ba4"> 606</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a02c11ecab5cd1536f9f78b8cef4e5ba4">TEX_FORMAT_BC3_TYPELESS</a>, </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  </div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac9d4bc97bbff4a3e369989e5f092c1fc"> 615</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac9d4bc97bbff4a3e369989e5f092c1fc">TEX_FORMAT_BC3_UNORM</a>,</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  </div><div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee1add9082d7de6c1b9a4e4dfcd6b32e"> 624</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee1add9082d7de6c1b9a4e4dfcd6b32e">TEX_FORMAT_BC3_UNORM_SRGB</a>,</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  </div><div class="line"><a name="l00632"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef84cdaf5c49e1bc88a29138a12908a7"> 632</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef84cdaf5c49e1bc88a29138a12908a7">TEX_FORMAT_BC4_TYPELESS</a>, </div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  </div><div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaf7cc360071c3fa26a55da8e9a49c532"> 641</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaf7cc360071c3fa26a55da8e9a49c532">TEX_FORMAT_BC4_UNORM</a>,</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  </div><div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a72f458a370b3931c2a499a834f9a07ad"> 650</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a72f458a370b3931c2a499a834f9a07ad">TEX_FORMAT_BC4_SNORM</a>,</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  </div><div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac60117a0faee2761b0af7e2aff3aa9dc"> 658</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac60117a0faee2761b0af7e2aff3aa9dc">TEX_FORMAT_BC5_TYPELESS</a>,</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  </div><div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af220720a273822e42215f64da22a39c2"> 667</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af220720a273822e42215f64da22a39c2">TEX_FORMAT_BC5_UNORM</a>,</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  </div><div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0d3d63ade03dc83ba8e00f54eda5034e"> 676</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0d3d63ade03dc83ba8e00f54eda5034e">TEX_FORMAT_BC5_SNORM</a>,</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  </div><div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adf11b47f6d9a00acdef8a6365627e236"> 681</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adf11b47f6d9a00acdef8a6365627e236">TEX_FORMAT_B5G6R5_UNORM</a>,</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  </div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab2f7731db1a82c6a1e1e376798668445"> 686</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab2f7731db1a82c6a1e1e376798668445">TEX_FORMAT_B5G5R5A1_UNORM</a>, </div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  </div><div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a85c8ec3cafb6f81a2beffd0d1a2ef9bc"> 691</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a85c8ec3cafb6f81a2beffd0d1a2ef9bc">TEX_FORMAT_BGRA8_UNORM</a>,</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  </div><div class="line"><a name="l00696"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa4acef99829b6389f46c1d4974c3c608"> 696</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa4acef99829b6389f46c1d4974c3c608">TEX_FORMAT_BGRX8_UNORM</a>,</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  </div><div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a62a2e8c0db0113b562af2be036586243"> 701</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a62a2e8c0db0113b562af2be036586243">TEX_FORMAT_R10G10B10_XR_BIAS_A2_UNORM</a>,</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  </div><div class="line"><a name="l00706"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a680df490939619dd7b30ea7037b9a9f7"> 706</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a680df490939619dd7b30ea7037b9a9f7">TEX_FORMAT_BGRA8_TYPELESS</a>,</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  </div><div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ad6be5eaf8712b7c04727f9b4803911f5"> 711</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ad6be5eaf8712b7c04727f9b4803911f5">TEX_FORMAT_BGRA8_UNORM_SRGB</a>,</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  </div><div class="line"><a name="l00716"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a01d64cc54ad460cf23844197dbba3f9b"> 716</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a01d64cc54ad460cf23844197dbba3f9b">TEX_FORMAT_BGRX8_TYPELESS</a>,</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  </div><div class="line"><a name="l00721"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a849b5daeb4b639e1d7581177ddb53cc5"> 721</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a849b5daeb4b639e1d7581177ddb53cc5">TEX_FORMAT_BGRX8_UNORM_SRGB</a>,</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  </div><div class="line"><a name="l00729"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2006402150aa88e16d5010b7ef808aa6"> 729</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2006402150aa88e16d5010b7ef808aa6">TEX_FORMAT_BC6H_TYPELESS</a>,</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  </div><div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa89eb4d526cbabe4548ccb4e33371eda"> 737</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa89eb4d526cbabe4548ccb4e33371eda">TEX_FORMAT_BC6H_UF16</a>,</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  </div><div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef805e475325f97eec66964176f52a19"> 745</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef805e475325f97eec66964176f52a19">TEX_FORMAT_BC6H_SF16</a>,</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  </div><div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbf9435e67a9b03c4988b191884d2c97"> 753</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbf9435e67a9b03c4988b191884d2c97">TEX_FORMAT_BC7_TYPELESS</a>,</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  </div><div class="line"><a name="l00761"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af0128d2a0c05d795926d1b4be8c3e468"> 761</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af0128d2a0c05d795926d1b4be8c3e468">TEX_FORMAT_BC7_UNORM</a>,</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  </div><div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5660aeeaed147beaa9e4bdc8cff42bc5"> 769</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5660aeeaed147beaa9e4bdc8cff42bc5">TEX_FORMAT_BC7_UNORM_SRGB</a>,</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  </div><div class="line"><a name="l00772"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65"> 772</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  };</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span> </div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> </div><div class="line"><a name="l00780"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3"> 780</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> : Int32</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  {</div><div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a93daeed05a3dd2c9b924c7c2717eb5d5"> 782</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a93daeed05a3dd2c9b924c7c2717eb5d5">FILTER_TYPE_UNKNOWN</a> = 0, </div><div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd"> 783</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4423b28e4552e47e8d71c1cc6b68b0bd">FILTER_TYPE_POINT</a>, </div><div class="line"><a name="l00784"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751"> 784</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>, </div><div class="line"><a name="l00785"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459"> 785</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9160b185205e04ac49ba0031934ee459">FILTER_TYPE_ANISOTROPIC</a>, </div><div class="line"><a name="l00786"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b"> 786</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a816cdeed28e1060e21208f673bd9751b">FILTER_TYPE_COMPARISON_POINT</a>, </div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75"> 787</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a9d07328c126cb498169a8eac1de6fc75">FILTER_TYPE_COMPARISON_LINEAR</a>, </div><div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97"> 788</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a67ae6207484380e2b88d2d90d9e34e97">FILTER_TYPE_COMPARISON_ANISOTROPIC</a>, </div><div class="line"><a name="l00789"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d"> 789</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ad91cd8a6a5c31af9ce787010899ec69d">FILTER_TYPE_MINIMUM_POINT</a>, </div><div class="line"><a name="l00790"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1"> 790</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a75ee7cf1caa6d885ca48ef988c0baff1">FILTER_TYPE_MINIMUM_LINEAR</a>, </div><div class="line"><a name="l00791"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4398678f25fd7f9c5ab22acb772a6188"> 791</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a4398678f25fd7f9c5ab22acb772a6188">FILTER_TYPE_MINIMUM_ANISOTROPIC</a>, </div><div class="line"><a name="l00792"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99"> 792</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a64d461add82edd8068ef488d2d51db99">FILTER_TYPE_MAXIMUM_POINT</a>, </div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0"> 793</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a5720a664a3426058b751eb06d5aaedb0">FILTER_TYPE_MAXIMUM_LINEAR</a>, </div><div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3aff4370c3c16294f04a71dc1c08c1c33a"> 794</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3aff4370c3c16294f04a71dc1c08c1c33a">FILTER_TYPE_MAXIMUM_ANISOTROPIC</a>, </div><div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ae96e67dde46ffaee98ac2f3625015267"> 795</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3ae96e67dde46ffaee98ac2f3625015267">FILTER_TYPE_NUM_FILTERS</a> </div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  };</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span> </div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> </div><div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1"> 805</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> : Int32</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  {</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1ae4eb70142178447e2c072c2d66d5c002"> 808</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1ae4eb70142178447e2c072c2d66d5c002">TEXTURE_ADDRESS_UNKNOWN</a> = 0,</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00812"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32"> 812</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a1aa369d33dd824b995deacb66a03bb32">TEXTURE_ADDRESS_WRAP</a> = 1,</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> </div><div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b"> 816</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a64f197d0273cc23aec726ab2738dd45b">TEXTURE_ADDRESS_MIRROR</a> = 2,</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> </div><div class="line"><a name="l00821"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f"> 821</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a> = 3,</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00826"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a3f55d99e8bb9fbd60ad58ad42f7754cd"> 826</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a3f55d99e8bb9fbd60ad58ad42f7754cd">TEXTURE_ADDRESS_BORDER</a> = 4,</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> </div><div class="line"><a name="l00833"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1afadca32bf8a0f145bc506aa8583712c2"> 833</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1afadca32bf8a0f145bc506aa8583712c2">TEXTURE_ADDRESS_MIRROR_ONCE</a> = 5,</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> </div><div class="line"><a name="l00836"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a2d13beda40c3a09062c17faea418d142"> 836</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a2d13beda40c3a09062c17faea418d142">TEXTURE_ADDRESS_NUM_MODES</a></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  };</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> </div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> </div><div class="line"><a name="l00847"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3"> 847</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> : Int32</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  {</div><div class="line"><a name="l00850"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5"> 850</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ac2643a547edf29e763af04c5ab82a7f5">COMPARISON_FUNC_UNKNOWN</a> = 0,</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00854"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb"> 854</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb">COMPARISON_FUNC_NEVER</a>,</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div><div class="line"><a name="l00858"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a411164cf3b8a7ce0e4d3792b4bfe3e63"> 858</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a411164cf3b8a7ce0e4d3792b4bfe3e63">COMPARISON_FUNC_LESS</a>,</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> </div><div class="line"><a name="l00862"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad33573ebed971ae2e788c0c2119433c8"> 862</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad33573ebed971ae2e788c0c2119433c8">COMPARISON_FUNC_EQUAL</a>,</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> </div><div class="line"><a name="l00866"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11"> 866</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11">COMPARISON_FUNC_LESS_EQUAL</a>,</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> </div><div class="line"><a name="l00870"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ae3ab0763823fc67730b719b4acafeea2"> 870</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ae3ab0763823fc67730b719b4acafeea2">COMPARISON_FUNC_GREATER</a>,</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> </div><div class="line"><a name="l00874"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3abf16cedb7ad37988bab6e7a80e11f263"> 874</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3abf16cedb7ad37988bab6e7a80e11f263">COMPARISON_FUNC_NOT_EQUAL</a>,</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  </div><div class="line"><a name="l00878"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad35e669229761e23a8b6d7b1dff8d6a3"> 878</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3ad35e669229761e23a8b6d7b1dff8d6a3">COMPARISON_FUNC_GREATER_EQUAL</a>,</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  </div><div class="line"><a name="l00882"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11"> 882</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a7cc8933aafb1e254a4be67a841698b11">COMPARISON_FUNC_ALWAYS</a>,</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> </div><div class="line"><a name="l00885"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a73e6559b15743c06d473c3ea60794761"> 885</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a73e6559b15743c06d473c3ea60794761">COMPARISON_FUNC_NUM_FUNCTIONS</a></div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  };</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> </div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> </div><div class="line"><a name="l00891"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782"> 891</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782">MISC_TEXTURE_FLAG</a></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  {</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div><div class="line"><a name="l00896"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782a926903219be74a74df00dedd41cd1d84"> 896</a></span>  <a class="code" href="namespace_diligent.html#a26330621767a4a6ed8f44c0426233782a926903219be74a74df00dedd41cd1d84">MISC_TEXTURE_FLAG_GENERATE_MIPS</a> = 0x01</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  };</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> </div><div class="line"><a name="l00900"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_object_attribs.html"> 900</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  {</div><div class="line"><a name="l00903"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_object_attribs.html#a14a31dc6ad69e0b79514e5349e9b4fc0"> 903</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_device_object_attribs.html#a14a31dc6ad69e0b79514e5349e9b4fc0">Name</a>;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> </div><div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_device_object_attribs.html#a579fff821d8252cf66fd6bcb4429efad"> 906</a></span>  <a class="code" href="struct_diligent_1_1_device_object_attribs.html#a579fff821d8252cf66fd6bcb4429efad">DeviceObjectAttribs</a>() : </div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <a class="code" href="struct_diligent_1_1_device_object_attribs.html#a14a31dc6ad69e0b79514e5349e9b4fc0">Name</a>(nullptr)</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  {}</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  };</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> </div><div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html"> 912</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a></div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  {</div><div class="line"><a name="l00915"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a"> 915</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a>;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div><div class="line"><a name="l00918"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945"> 918</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a>;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  </div><div class="line"><a name="l00921"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a43f3ed5e1426f6260d8d55d252180a6d"> 921</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a43f3ed5e1426f6260d8d55d252180a6d">ColorBufferFormat</a>;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  </div><div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a73cf565892611df8559aa13d1ff8f038"> 924</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a73cf565892611df8559aa13d1ff8f038">DepthBufferFormat</a>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> </div><div class="line"><a name="l00927"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#abb6c480f76a89a38333249970fc0c6d9"> 927</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abb6c480f76a89a38333249970fc0c6d9">SamplesCount</a>;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> </div><div class="line"><a name="l00930"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a05d5e9d8ca0869dd19d753d987b1454b"> 930</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a05d5e9d8ca0869dd19d753d987b1454b">BufferCount</a>;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00933"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a4c098ffed1ea02069fe6141d80dd6d77"> 933</a></span>  Float32 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a4c098ffed1ea02069fe6141d80dd6d77">DefaultDepthValue</a>;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span> </div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#a5d225a31e09f3cefab7a1146841c2abf"> 936</a></span>  Uint8 <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a5d225a31e09f3cefab7a1146841c2abf">DefaultStencilValue</a>;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div><div class="line"><a name="l00939"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_swap_chain_desc.html#afebad3ffd438ed535f4613407e4edc4c"> 939</a></span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#afebad3ffd438ed535f4613407e4edc4c">SwapChainDesc</a>() :</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a>(0),</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a>(0),</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a43f3ed5e1426f6260d8d55d252180a6d">ColorBufferFormat</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a86a2e99aecff070023e1dd0331fb9a95">TEX_FORMAT_RGBA8_UNORM_SRGB</a> ),</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a73cf565892611df8559aa13d1ff8f038">DepthBufferFormat</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac2f008275b02ec4c7a85ac5da386958b">TEX_FORMAT_D32_FLOAT</a> ),</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abb6c480f76a89a38333249970fc0c6d9">SamplesCount</a>( 1 ),</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a05d5e9d8ca0869dd19d753d987b1454b">BufferCount</a>( 2 ),</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a4c098ffed1ea02069fe6141d80dd6d77">DefaultDepthValue</a>(1.f),</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a5d225a31e09f3cefab7a1146841c2abf">DefaultStencilValue</a>(0)</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  {}</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  };</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> </div><div class="line"><a name="l00952"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_creation_attribs.html"> 952</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_engine_creation_attribs.html">EngineCreationAttribs</a></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  {</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keyword">const</span> Char* strShaderCachePath;</div><div class="line"><a name="l00957"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_creation_attribs.html#a4eec3de7d2ef7c409986620c204b5a29"> 957</a></span>  <span class="keyword">class </span>IMemoryAllocator *<a class="code" href="struct_diligent_1_1_engine_creation_attribs.html#a4eec3de7d2ef7c409986620c204b5a29">pRawMemAllocator</a>;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <a class="code" href="struct_diligent_1_1_engine_creation_attribs.html">EngineCreationAttribs</a>() : </div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  strShaderCachePath(nullptr),</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <a class="code" href="struct_diligent_1_1_engine_creation_attribs.html#a4eec3de7d2ef7c409986620c204b5a29">pRawMemAllocator</a>(nullptr)</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  {}</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  };</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> </div><div class="line"><a name="l00965"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html"> 965</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html">EngineD3D12Attribs</a> : <span class="keyword">public</span> <a class="code" href="struct_diligent_1_1_engine_creation_attribs.html">EngineCreationAttribs</a></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  {</div><div class="line"><a name="l00968"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a12fe830b453e67b806300b7082aaa485"> 968</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a12fe830b453e67b806300b7082aaa485">CPUDescriptorHeapAllocationSize</a>[4] = </div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  1024, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  256, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  128, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_RTV</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  64 <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_DSV</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  };</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> </div><div class="line"><a name="l00977"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html#af28560b39d2c2a20a6f0dfb4acfb641b"> 977</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html#af28560b39d2c2a20a6f0dfb4acfb641b">GPUDescriptorHeapSize</a>[2] = </div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  {</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  16384, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  1024 <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  };</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> </div><div class="line"><a name="l00984"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a922a172c8be3881a1b1480802ac3ec10"> 984</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a922a172c8be3881a1b1480802ac3ec10">GPUDescriptorHeapDynamicSize</a>[2] = </div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  4096, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV</span></div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  1024 <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  };</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l00992"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a9b30d3de9423a1e8e6b3309b6fb7b613"> 992</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a9b30d3de9423a1e8e6b3309b6fb7b613">DynamicDescriptorAllocationChunkSize</a>[2] = </div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  {</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  128, <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV</span></div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  16 <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  };</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> </div><div class="line"><a name="l01001"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a71eeaab09ee38f40ae159f7e8ecc801b"> 1001</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html#a71eeaab09ee38f40ae159f7e8ecc801b">NumCommandsToFlushCmdList</a> = 256;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  };</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> </div><div class="line"><a name="l01005"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html"> 1005</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_box.html">Box</a></div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  {</div><div class="line"><a name="l01007"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#a6cec8f1f8c44cc53b4cd1dfe3b9f08d1"> 1007</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#a6cec8f1f8c44cc53b4cd1dfe3b9f08d1">MinX</a>; </div><div class="line"><a name="l01008"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#a5f38a77f2749ad506c4418463ab7ab30"> 1008</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#a5f38a77f2749ad506c4418463ab7ab30">MaxX</a>; </div><div class="line"><a name="l01009"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#aaf2671702197fb75ab16e80b71999768"> 1009</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#aaf2671702197fb75ab16e80b71999768">MinY</a>; </div><div class="line"><a name="l01010"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#a332e14c1408ce8b260c9ad4ffb422200"> 1010</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#a332e14c1408ce8b260c9ad4ffb422200">MaxY</a>; </div><div class="line"><a name="l01011"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#aac79f5a5e0830b9cbdbb16ba04491420"> 1011</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#aac79f5a5e0830b9cbdbb16ba04491420">MinZ</a>; </div><div class="line"><a name="l01012"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#af5b6da6f645ee6d219b5723825b1ec15"> 1012</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_box.html#af5b6da6f645ee6d219b5723825b1ec15">MaxZ</a>; </div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> </div><div class="line"><a name="l01015"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_box.html#af14a0fee74cce558f3bef58b133702ac"> 1015</a></span>  <a class="code" href="struct_diligent_1_1_box.html#af14a0fee74cce558f3bef58b133702ac">Box</a>(Uint32 _MinX = 0, Uint32 _MaxX = 0,</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  Uint32 _MinY = 0, Uint32 _MaxY = 0,</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  Uint32 _MinZ = 0, Uint32 _MaxZ = 1) : </div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <a class="code" href="struct_diligent_1_1_box.html#a6cec8f1f8c44cc53b4cd1dfe3b9f08d1">MinX</a>(_MinX), <a class="code" href="struct_diligent_1_1_box.html#a5f38a77f2749ad506c4418463ab7ab30">MaxX</a>(_MaxX),</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <a class="code" href="struct_diligent_1_1_box.html#aaf2671702197fb75ab16e80b71999768">MinY</a>(_MinY), <a class="code" href="struct_diligent_1_1_box.html#a332e14c1408ce8b260c9ad4ffb422200">MaxY</a>(_MaxY),</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <a class="code" href="struct_diligent_1_1_box.html#aac79f5a5e0830b9cbdbb16ba04491420">MinZ</a>(_MinZ), <a class="code" href="struct_diligent_1_1_box.html#af5b6da6f645ee6d219b5723825b1ec15">MaxZ</a>(_MaxZ)</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  {}</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  };</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> </div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div><div class="line"><a name="l01026"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476c"> 1026</a></span>  <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476c">COMPONENT_TYPE</a> : Int32</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  {</div><div class="line"><a name="l01029"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cae0b3fdc5523e496fa7c4bbf417b4ad90"> 1029</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cae0b3fdc5523e496fa7c4bbf417b4ad90">COMPONENT_TYPE_UNDEFINED</a>,</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01032"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cac0be9da22dea8c4f2254f57bb7bff4a1"> 1032</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cac0be9da22dea8c4f2254f57bb7bff4a1">COMPONENT_TYPE_FLOAT</a>,</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div><div class="line"><a name="l01035"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca09045ed1da150ed46fc509775fe5944f"> 1035</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca09045ed1da150ed46fc509775fe5944f">COMPONENT_TYPE_SNORM</a>,</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> </div><div class="line"><a name="l01038"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476caee0de6d3e12a57c53b9f6491300f7cb2"> 1038</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476caee0de6d3e12a57c53b9f6491300f7cb2">COMPONENT_TYPE_UNORM</a>,</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> </div><div class="line"><a name="l01041"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cab7651620cd29d84d11b883db4397edde"> 1041</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cab7651620cd29d84d11b883db4397edde">COMPONENT_TYPE_UNORM_SRGB</a>,</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> </div><div class="line"><a name="l01044"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca0547352fdd2805b64922cc6737ec877a"> 1044</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca0547352fdd2805b64922cc6737ec877a">COMPONENT_TYPE_SINT</a>,</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div><div class="line"><a name="l01047"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca2254ce2599cdd04e947599b30a8da400"> 1047</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca2254ce2599cdd04e947599b30a8da400">COMPONENT_TYPE_UINT</a>,</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div><div class="line"><a name="l01050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476caa3984b7039eb6b96b04a68ac8684750d"> 1050</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476caa3984b7039eb6b96b04a68ac8684750d">COMPONENT_TYPE_DEPTH</a>,</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> </div><div class="line"><a name="l01053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca2cdf1c20c083d2427affaba85e76102f"> 1053</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca2cdf1c20c083d2427affaba85e76102f">COMPONENT_TYPE_DEPTH_STENCIL</a>,</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div><div class="line"><a name="l01056"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca9d4afc0fa9a367f3b34542f8d152e40a"> 1056</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476ca9d4afc0fa9a367f3b34542f8d152e40a">COMPONENT_TYPE_COMPOUND</a>,</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> </div><div class="line"><a name="l01059"></a><span class="lineno"><a class="line" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cab1b19584374b1acb6e1984aa32ac9819"> 1059</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cab1b19584374b1acb6e1984aa32ac9819">COMPONENT_TYPE_COMPRESSED</a>,</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  };</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> </div><div class="line"><a name="l01065"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html"> 1065</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_format_attribs.html">TextureFormatAttribs</a></div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  {</div><div class="line"><a name="l01068"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#ab63e880dcb9af649e4c52ead4fd3cafd"> 1068</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#ab63e880dcb9af649e4c52ead4fd3cafd">Format</a>;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div><div class="line"><a name="l01072"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#a6ed4f3931984712f58e8ac6a4863565a"> 1072</a></span>  <span class="keyword">const</span> Char *<a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a6ed4f3931984712f58e8ac6a4863565a">Name</a>;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> </div><div class="line"><a name="l01076"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#a87c63340aa2c943fc0469d905090e728"> 1076</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a87c63340aa2c943fc0469d905090e728">ComponentSize</a>;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01079"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#acfd78789dc8c707a8012fd1f858b6389"> 1079</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#acfd78789dc8c707a8012fd1f858b6389">NumComponents</a>;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div><div class="line"><a name="l01082"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#a50c46afc1ac002c875469fa439faf2e9"> 1082</a></span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476c">COMPONENT_TYPE</a> <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a50c46afc1ac002c875469fa439faf2e9">ComponentType</a>; </div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div><div class="line"><a name="l01085"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_attribs.html#aea0954abcd11cbf0f9fe335be05716a9"> 1085</a></span>  <span class="keyword">explicit</span> <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#aea0954abcd11cbf0f9fe335be05716a9">TextureFormatAttribs</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> _Format = <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>, </div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keyword">const</span> Char *_Name = <span class="stringliteral">"TEX_FORMAT_UNKNOWN"</span>,</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  Uint32 _ComponentSize = 0,</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  Uint32 _NumComponents = 0,</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476c">COMPONENT_TYPE</a> _ComponentType = <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cae0b3fdc5523e496fa7c4bbf417b4ad90">COMPONENT_TYPE_UNDEFINED</a> ) : </div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#ab63e880dcb9af649e4c52ead4fd3cafd">Format</a>(_Format),</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a6ed4f3931984712f58e8ac6a4863565a">Name</a>(_Name),</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a87c63340aa2c943fc0469d905090e728">ComponentSize</a>(_ComponentSize),</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#acfd78789dc8c707a8012fd1f858b6389">NumComponents</a>(_NumComponents),</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <a class="code" href="struct_diligent_1_1_texture_format_attribs.html#a50c46afc1ac002c875469fa439faf2e9">ComponentType</a>(_ComponentType)</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  {}</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  };</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> </div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div><div class="line"><a name="l01101"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info.html"> 1101</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_format_info.html">TextureFormatInfo</a> : <span class="keyword">public</span> <a class="code" href="struct_diligent_1_1_texture_format_attribs.html">TextureFormatAttribs</a></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  {</div><div class="line"><a name="l01104"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info.html#ae26d9fbb8b9916341558eefaeb407c39"> 1104</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info.html#ae26d9fbb8b9916341558eefaeb407c39">Supported</a>;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> </div><div class="line"><a name="l01107"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info.html#a5ca4422a66a3d04dc4743d2b28e95321"> 1107</a></span>  <span class="keyword">explicit</span> <a class="code" href="struct_diligent_1_1_texture_format_info.html#a5ca4422a66a3d04dc4743d2b28e95321">TextureFormatInfo</a>() :</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <a class="code" href="struct_diligent_1_1_texture_format_info.html#ae26d9fbb8b9916341558eefaeb407c39">Supported</a>(false)</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  {}</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  };</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> </div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div><div class="line"><a name="l01115"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html"> 1115</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_format_info_ext.html">TextureFormatInfoExt</a> : <a class="code" href="struct_diligent_1_1_texture_format_info.html">TextureFormatInfo</a></div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  {</div><div class="line"><a name="l01118"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a1c36abe83f181f4379eea8a7f53758e1"> 1118</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a1c36abe83f181f4379eea8a7f53758e1">Filterable</a>;</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> </div><div class="line"><a name="l01121"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a65ac5cdc4ad7f1d0c11af3bcca89777e"> 1121</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a65ac5cdc4ad7f1d0c11af3bcca89777e">ColorRenderable</a>;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> </div><div class="line"><a name="l01124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a2313b53e88e1e5da431bfee32dd7e7d6"> 1124</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a2313b53e88e1e5da431bfee32dd7e7d6">DepthRenderable</a>;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> </div><div class="line"><a name="l01127"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a3d7aa73d17221417407c033cb340e584"> 1127</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a3d7aa73d17221417407c033cb340e584">Tex1DFmt</a>;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> </div><div class="line"><a name="l01130"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a60616f120da2747f0f11c01911efdc6e"> 1130</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a60616f120da2747f0f11c01911efdc6e">Tex2DFmt</a>;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> </div><div class="line"><a name="l01133"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a1fe3cc09b666032db4b7511b8d5986f5"> 1133</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a1fe3cc09b666032db4b7511b8d5986f5">Tex3DFmt</a>;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> </div><div class="line"><a name="l01136"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a2983887c36e8830793cd2bea39519f9b"> 1136</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a2983887c36e8830793cd2bea39519f9b">TexCubeFmt</a>;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> </div><div class="line"><a name="l01139"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#a26e15c8d3bf315d271dca7c74f24a687"> 1139</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a26e15c8d3bf315d271dca7c74f24a687">SupportsMS</a>;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> </div><div class="line"><a name="l01142"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_format_info_ext.html#aec1531e0d19e57b0c3f11a6e1fce1741"> 1142</a></span>  <span class="keyword">explicit</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#aec1531e0d19e57b0c3f11a6e1fce1741">TextureFormatInfoExt</a>() : </div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a1c36abe83f181f4379eea8a7f53758e1">Filterable</a>(false),</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a65ac5cdc4ad7f1d0c11af3bcca89777e">ColorRenderable</a>(false),</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a2313b53e88e1e5da431bfee32dd7e7d6">DepthRenderable</a>(false),</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a3d7aa73d17221417407c033cb340e584">Tex1DFmt</a>(false),</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a60616f120da2747f0f11c01911efdc6e">Tex2DFmt</a>(false),</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a1fe3cc09b666032db4b7511b8d5986f5">Tex3DFmt</a>(false),</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a2983887c36e8830793cd2bea39519f9b">TexCubeFmt</a>(false),</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html#a26e15c8d3bf315d271dca7c74f24a687">SupportsMS</a>(false)</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  {}</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  };</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> }</div><div class="ttc" id="namespace_diligent_html_a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11"><div class="ttname"><a href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a15f8ce33479c9d7a64fb95dbf4280a11">Diligent::COMPARISON_FUNC_LESS_EQUAL</a></div><div class="ttdoc">Comparison passes if the source data is less than or equal to the destination data. Direct3D counterpart: D3D11_COMPARISON_LESS_EQUAL/D3D12_COMPARISON_FUNC_LESS_EQUAL. OpenGL counterpart: GL_LEQUAL. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:866</div></div> <div class="ttc" id="struct_diligent_1_1_texture_format_info_ext_html_a60616f120da2747f0f11c01911efdc6e"><div class="ttname"><a href="struct_diligent_1_1_texture_format_info_ext.html#a60616f120da2747f0f11c01911efdc6e">Diligent::TextureFormatInfoExt::Tex2DFmt</a></div><div class="ttdeci">bool Tex2DFmt</div><div class="ttdoc">Indicates if the format can be used to create a 2D texture. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:1130</div></div> <div class="ttc" id="namespace_diligent_html_aa01f48fca1ad92ac9a1eca28e2d51c67a266703b7f74b82531f02a1fa61fd6df1"><div class="ttname"><a href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a266703b7f74b82531f02a1fa61fd6df1">Diligent::RESOURCE_DIM_BUFFER</a></div><div class="ttdoc">Buffer. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:175</div></div> <div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> @@ -335,7 +335,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_graphics_utilities_8h_source.html b/doc/html/_graphics_utilities_8h_source.html index e2e33db3..0e9df5f2 100644 --- a/doc/html/_graphics_utilities_8h_source.html +++ b/doc/html/_graphics_utilities_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">GraphicsUtilities.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keywordtype">void</span> CreateUniformBuffer( IRenderDevice *pDevice, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Size, <span class="keyword">const</span> Char *Name, IBuffer **ppBuffer, <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> Usage = <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> BindFlag = <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9">BIND_UNIFORM_BUFFER</a>, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> CPUAccessFlags = <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a> );</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keywordtype">void</span> GenerateCheckerBoardPattern(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Width, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Height, <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> Fmt, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> HorzCells, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> VertCells, <a class="code" href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db">Uint8</a> *pData, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> StrideInBytes );</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keywordtype">void</span> CreateUniformBuffer( IRenderDevice *pDevice, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Size, <span class="keyword">const</span> Char *Name, IBuffer **ppBuffer, <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> Usage = <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746a99a6c4fe39b32dc6f6f247554fa2eb1c">USAGE_DYNAMIC</a>, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> BindFlag = <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceac2120e5b46a9b5611f937fb446d099f9">BIND_UNIFORM_BUFFER</a>, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> CPUAccessFlags = <a class="code" href="namespace_diligent.html#a0f62a9270b7cb35023bfb7ff6318bd01a73d498f881235bb1efddb57352f0d5ca">CPU_ACCESS_WRITE</a> );</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keywordtype">void</span> GenerateCheckerBoardPattern(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Width, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Height, <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> Fmt, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> HorzCells, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> VertCells, <a class="code" href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db">Uint8</a> *pData, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> StrideInBytes );</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a3392c10112f826c3bcc60366e0f533db"><div class="ttname"><a href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db">Diligent::Uint8</a></div><div class="ttdeci">uint8_t Uint8</div><div class="ttdoc">8-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:41</div></div> <div class="ttc" id="namespace_diligent_html_a5342fb015dbf7f2e638dbfccc325a746"><div class="ttname"><a href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">Diligent::USAGE</a></div><div class="ttdeci">USAGE</div><div class="ttdoc">Resource usage. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:84</div></div> diff --git a/doc/html/_h_l_s_l2_g_l_s_l_converter_8h_source.html b/doc/html/_h_l_s_l2_g_l_s_l_converter_8h_source.html index cfac6335..3df4fd2a 100644 --- a/doc/html/_h_l_s_l2_g_l_s_l_converter_8h_source.html +++ b/doc/html/_h_l_s_l2_g_l_s_l_converter_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">HLSL2GLSLConverter.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// {1FDE020A-9C73-4A76-8AEF-C2C6C2CF0EA5}</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_HLSL2GLSLConversionStream =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> { 0x1fde020a, 0x9c73, 0x4a76, { 0x8a, 0xef, 0xc2, 0xc6, 0xc2, 0xcf, 0xe, 0xa5 } };</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>IHLSL2GLSLConversionStream : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Convert(<span class="keyword">const</span> Char* EntryPoint, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keywordtype">bool</span> IncludeDefintions, IDataBlob **ppGLSLSource) = 0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// {44A21160-77E0-4DDC-A57E-B8B8B65B5342}</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_HLSL2GLSLConverter =</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> { 0x44a21160, 0x77e0, 0x4ddc, { 0xa5, 0x7e, 0xb8, 0xb8, 0xb6, 0x5b, 0x53, 0x42 } };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter.html"> 51</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter.html">IHLSL2GLSLConverter</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateStream(<span class="keyword">const</span> Char* InputFileName, </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a> *pSourceStreamFactory, </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> Char* HLSLSource, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">size_t</span> NumSymbols, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  IHLSL2GLSLConversionStream **ppStream)<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_source_input_stream_factory_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_source_input_stream_factory.html">Diligent::IShaderSourceInputStreamFactory</a></div><div class="ttdoc">Shader source stream factory interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:190</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// {1FDE020A-9C73-4A76-8AEF-C2C6C2CF0EA5}</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_HLSL2GLSLConversionStream =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> { 0x1fde020a, 0x9c73, 0x4a76, { 0x8a, 0xef, 0xc2, 0xc6, 0xc2, 0xcf, 0xe, 0xa5 } };</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>IHLSL2GLSLConversionStream : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Convert(<span class="keyword">const</span> Char* EntryPoint, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keywordtype">bool</span> IncludeDefintions, IDataBlob **ppGLSLSource) = 0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// {44A21160-77E0-4DDC-A57E-B8B8B65B5342}</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_HLSL2GLSLConverter =</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> { 0x44a21160, 0x77e0, 0x4ddc, { 0xa5, 0x7e, 0xb8, 0xb8, 0xb6, 0x5b, 0x53, 0x42 } };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter.html"> 51</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter.html">IHLSL2GLSLConverter</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateStream(<span class="keyword">const</span> Char* InputFileName, </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a> *pSourceStreamFactory, </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> Char* HLSLSource, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">size_t</span> NumSymbols, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  IHLSL2GLSLConversionStream **ppStream)<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_source_input_stream_factory_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_source_input_stream_factory.html">Diligent::IShaderSourceInputStreamFactory</a></div><div class="ttdoc">Shader source stream factory interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:190</div></div> <div class="ttc" id="class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter_html"><div class="ttname"><a href="class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter.html">Diligent::IHLSL2GLSLConverter</a></div><div class="ttdoc">Interface to the buffer object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> HLSL2GLSLConverter.h:51</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_h_l_s_l2_g_l_s_l_converter_impl_8h_source.html b/doc/html/_h_l_s_l2_g_l_s_l_converter_impl_8h_source.html index cacad9d4..e1ad2f94 100644 --- a/doc/html/_h_l_s_l2_g_l_s_l_converter_impl_8h_source.html +++ b/doc/html/_h_l_s_l2_g_l_s_l_converter_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">HLSL2GLSLConverterImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <unordered_set></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "HLSL2GLSLConverter.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "HLSLKeywords.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "HLSLKeywords.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">struct </span>FunctionStubHashKey</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  FunctionStubHashKey(<span class="keyword">const</span> String& _Obj, <span class="keyword">const</span> String& _Func, Uint32 _NumArgs) : </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Object(_Obj),</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  Function(_Func),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  NumArguments(_NumArgs)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  FunctionStubHashKey(<span class="keyword">const</span> Char* _Obj, <span class="keyword">const</span> Char* _Func, Uint32 _NumArgs) : </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  Object(_Obj),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  Function(_Func),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  NumArguments(_NumArgs)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  FunctionStubHashKey( FunctionStubHashKey && Key ) : </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  Object(<a class="code" href="namespacestd.html">std</a>::move(Key.Object)),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  Function(<a class="code" href="namespacestd.html">std</a>::move(Key.Function)),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  NumArguments(Key.NumArguments)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> FunctionStubHashKey& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> Object == rhs.Object &&</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Function == rhs.Function &&</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  NumArguments == rhs.NumArguments;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  HashMapStringKey Object;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  HashMapStringKey Function;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  Uint32 NumArguments;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">template</span><><span class="keyword">struct </span>hash < <a class="code" href="namespace_diligent.html">Diligent</a>::FunctionStubHashKey ></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Diligent::FunctionStubHashKey &Key )<span class="keyword"> const</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> ComputeHash(Key.Object, Key.Function, Key.NumArguments);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  };</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">class </span>HLSL2GLSLConverterImpl</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">static</span> <span class="keyword">const</span> HLSL2GLSLConverterImpl& GetInstance();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">struct </span>ConversionAttribs</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  IShaderSourceInputStreamFactory *pSourceStreamFactory = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  IHLSL2GLSLConversionStream **ppConversionStream = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">const</span> Char* HLSLSource = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">size_t</span> NumSymbols = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">const</span> Char* EntryPoint = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">bool</span> IncludeDefinitions = <span class="keyword">false</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> Char* InputFileName = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  };</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  String Convert(ConversionAttribs &Attribs)<span class="keyword">const</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">void</span> CreateStream(<span class="keyword">const</span> Char* InputFileName,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  IShaderSourceInputStreamFactory *pSourceStreamFactory, </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> Char* HLSLSource, </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">size_t</span> NumSymbols, </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  IHLSL2GLSLConversionStream **ppStream)<span class="keyword">const</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  HLSL2GLSLConverterImpl();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">struct </span>HLSLObjectInfo</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  String GLSLType; <span class="comment">// sampler2D, sampler2DShadow, image2D, etc.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  Uint32 NumComponents; <span class="comment">// 0,1,2,3 or 4</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// Texture2D<float4> -> 4</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Texture2D<uint> -> 1</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// Texture2D -> 0</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  HLSLObjectInfo( <span class="keyword">const</span> String& Type, Uint32 NComp ) :</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  GLSLType( Type ),</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  NumComponents( NComp )</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {}</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  };</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">struct </span>ObjectsTypeHashType</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// This is only required to make the code compile on paranoid MSVC 2017 compiler (19.10.25017):</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// https://stackoverflow.com/questions/47604029/move-constructors-of-stl-containers-in-msvc-2017-are-not-marked-as-noexcept</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  ObjectsTypeHashType()noexcept {}</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  ObjectsTypeHashType(ObjectsTypeHashType&& rhs)noexcept : </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m(std::move(rhs.m))</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {}</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  ObjectsTypeHashType& operator = (ObjectsTypeHashType&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  ObjectsTypeHashType(ObjectsTypeHashType&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  ObjectsTypeHashType& operator = (ObjectsTypeHashType&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  std::unordered_map<HashMapStringKey, HLSLObjectInfo> m;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  };</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">struct </span>GLSLStubInfo</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  String Name;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  String Swizzle;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  GLSLStubInfo( <span class="keyword">const</span> String& _Name, <span class="keyword">const</span> <span class="keywordtype">char</span>* _Swizzle ) :</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  Name( _Name ),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  Swizzle( _Swizzle )</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {}</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  };</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Hash map that maps GLSL object, method and number of arguments</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// passed to the original function, to the GLSL stub function</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// Example: {"sampler2D", "Sample", 2} -> {"Sample_2", "_SWIZZLE"}</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  std::unordered_map<FunctionStubHashKey, GLSLStubInfo> m_GLSLStubs;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">enum class</span> TokenType</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  Undefined,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#define ADD_KEYWORD(keyword)kw_##keyword,</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  ITERATE_KEYWORDS(ADD_KEYWORD)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#undef ADD_KEYWORD</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  PreprocessorDirective,</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  Operator,</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  OpenBrace,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  ClosingBrace,</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  OpenBracket,</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  ClosingBracket,</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  OpenStaple,</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  ClosingStaple,</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  OpenAngleBracket,</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  ClosingAngleBracket,</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  Identifier,</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  NumericConstant,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  SrtingConstant,</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  Semicolon,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  Comma,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  TextBlock,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  Assignment,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  ComparisonOp,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  BooleanOp,</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  BitwiseOp,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  IncDecOp,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  MathOp</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  };</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keyword">struct </span>TokenInfo</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  TokenType Type;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  String Literal;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  String Delimiter;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">bool</span> IsBuiltInType()<span class="keyword">const</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  static_assert( static_cast<int>(TokenType::kw_bool) == 1 && static_cast<int>(TokenType::kw_void) == 191, </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="stringliteral">"If you updated built-in types, double check that all types are defined between bool and void"</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">return</span> Type >= TokenType::kw_bool && Type <= TokenType::kw_void;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordtype">bool</span> IsFlowControl()<span class="keyword">const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  static_assert( static_cast<int>(TokenType::kw_break) == 192 && static_cast<int>(TokenType::kw_while) == 202, </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="stringliteral">"If you updated control flow keywords, double check that all keywords are defined between break and while"</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> Type >= TokenType::kw_break && Type <= TokenType::kw_while;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  TokenInfo( TokenType _Type = TokenType :: Undefined,</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">const</span> Char* _Literal = <span class="stringliteral">""</span>,</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">const</span> Char* _Delimiter = <span class="stringliteral">""</span> ) : </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  Type( _Type ),</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  Literal( _Literal ),</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  Delimiter(_Delimiter)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {}</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  };</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">typedef</span> std::list<TokenInfo> TokenListType;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">class </span>ConversionStream : <span class="keyword">public</span> ObjectBase<IHLSL2GLSLConversionStream></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">typedef</span> ObjectBase<IHLSL2GLSLConversionStream> TBase;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  ConversionStream(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">const</span> HLSL2GLSLConverterImpl &Converter, </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* InputFileName,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  IShaderSourceInputStreamFactory* pInputStreamFactory, </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">const</span> Char* HLSLSource, </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordtype">size_t</span> NumSymbols,</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordtype">bool</span> bPreserveTokens);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  String Convert(<span class="keyword">const</span> Char* EntryPoint, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keywordtype">bool</span> IncludeDefintions);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Convert(<span class="keyword">const</span> Char* EntryPoint, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keywordtype">bool</span> IncludeDefintions, IDataBlob **ppGLSLSource)<span class="keyword">override</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_HLSL2GLSLConversionStream, TBase )</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">const</span> String& GetInputFileName()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_InputFileName; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordtype">void</span> InsertIncludes(String &GLSLSource, IShaderSourceInputStreamFactory* pSourceStreamFactory);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordtype">void</span> Tokenize(<span class="keyword">const</span> String &Source);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keyword">typedef</span> std::unordered_map<String, bool> SamplerHashType;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">const</span> HLSLObjectInfo *FindHLSLObject(<span class="keyword">const</span> String &Name );</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordtype">void</span> ProcessShaderDeclaration(TokenListType::iterator EntryPointToken, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordtype">void</span> ProcessObjectMethods(<span class="keyword">const</span> TokenListType::iterator &ScopeStart, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">void</span> ProcessRWTextures(<span class="keyword">const</span> TokenListType::iterator &ScopeStart, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">void</span> ProcessAtomics(<span class="keyword">const</span> TokenListType::iterator &ScopeStart, </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordtype">void</span> RegisterStruct(TokenListType::iterator &Token);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordtype">void</span> ProcessConstantBuffer(TokenListType::iterator &Token);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordtype">void</span> ProcessStructuredBuffer(TokenListType::iterator &Token);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordtype">void</span> ParseSamplers(TokenListType::iterator &ScopeStart, SamplerHashType &SamplersHash);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordtype">void</span> ProcessTextureDeclaration(TokenListType::iterator &Token, <span class="keyword">const</span> std::vector<SamplerHashType> &SamplersHash, ObjectsTypeHashType &Objects);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordtype">bool</span> ProcessObjectMethod(TokenListType::iterator &Token, <span class="keyword">const</span> TokenListType::iterator &ScopeStart, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  Uint32 CountFunctionArguments(TokenListType::iterator &Token, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordtype">bool</span> ProcessRWTextureStore(TokenListType::iterator &Token, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">void</span> RemoveFlowControlAttribute(TokenListType::iterator &Token);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordtype">void</span> RemoveSemantics();</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">void</span> RemoveSpecialShaderAttributes();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordtype">void</span> RemoveSemanticsFromBlock(TokenListType::iterator &Token, TokenType OpenBracketType, TokenType ClosingBracketType);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="comment">// IteratorType may be String::iterator or String::const_iterator.</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// While iterator is convertible to const_iterator, </span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">// iterator& cannot be converted to const_iterator& (Microsoft compiler allows</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">// such conversion, while gcc does not)</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">template</span><<span class="keyword">typename</span> IteratorType></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  String PrintTokenContext(IteratorType &TargetToken, Int32 NumAdjacentLines);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">struct </span>ShaderParameterInfo</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keyword">enum class</span> StorageQualifier : Int8</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  Unknown = 0,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  In = 1,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  Out = 2,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  InOut = 3,</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  Ret = 4</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }storageQualifier;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keyword">struct </span>GSAttributes</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">enum class</span> PrimitiveType : Int8</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  Undefined = 0,</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  Point = 1,</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  Line = 2,</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  Triangle = 3,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  LineAdj = 4,</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  TriangleAdj = 5</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  };</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">enum class</span> StreamType : Int8</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  Undefined = 0,</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  Point = 1,</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  Line = 2,</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  Triangle = 3</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  };</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  PrimitiveType PrimType;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  StreamType Stream;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  GSAttributes() : </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  PrimType(PrimitiveType::Undefined),</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  Stream(StreamType::Undefined)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {}</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }GSAttribs;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">struct </span>HSAttributes</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">enum class</span> InOutPatchType : Int8</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  Undefined = 0,</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  InputPatch = 1,</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  OutputPatch = 2</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }PatchType;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  HSAttributes() : </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  PatchType(InOutPatchType::Undefined)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {}</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }HSAttribs;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  String ArraySize;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  String Type;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  String Name;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  String Semantic;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  std::vector<ShaderParameterInfo> members;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  ShaderParameterInfo() :</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  storageQualifier(StorageQualifier::Unknown)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {}</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  };</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">void</span> ParseShaderParameter(TokenListType::iterator &Token, ShaderParameterInfo &ParamInfo);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordtype">void</span> ProcessFunctionParameters( TokenListType::iterator &Token, std::vector<ShaderParameterInfo>& Params, <span class="keywordtype">bool</span> &bIsVoid );</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  String AddFlatQualifier(<span class="keyword">const</span> String& Type);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordtype">void</span> ProcessFragmentShaderArguments( std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  String &GlobalVariables,</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  std::stringstream &ReturnHandlerSS,</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  String &Prologue );</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  String BuildParameterName(<span class="keyword">const</span> std::vector<const ShaderParameterInfo*>& MemberStack, Char Separator, <span class="keyword">const</span> Char* Prefix = <span class="stringliteral">""</span>, <span class="keyword">const</span> Char *SubstituteInstName = <span class="stringliteral">""</span>, <span class="keyword">const</span> Char *Index = <span class="stringliteral">""</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keyword">template</span><<span class="keyword">typename</span> THandler></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordtype">void</span> ProcessScope(TokenListType::iterator &Token, TokenListType::iterator ScopeEnd, TokenType OpenParenType, TokenType ClosingParenType, THandler Handler);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TArgHandler></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordtype">void</span> ProcessShaderArgument( <span class="keyword">const</span> ShaderParameterInfo &Param,</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordtype">int</span> ShaderInd,</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordtype">int</span> IsOutVar,</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  std::stringstream &PrologueSS,</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  TArgHandler ArgHandler);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordtype">void</span> ProcessVertexShaderArguments( std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  String &Globals,</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  std::stringstream &ReturnHandlerSS,</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  String &Prologue );</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordtype">void</span> ProcessGeometryShaderArguments( TokenListType::iterator &TypeToken,</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  String &Globals,</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  String &Prologue );</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordtype">void</span> ProcessHullShaderConstantFunction( <span class="keyword">const</span> Char *FuncName, <span class="keywordtype">bool</span> &bTakesInputPatch );</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordtype">void</span> ProcessShaderAttributes( TokenListType::iterator &TypeToken,</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  std::unordered_map<HashMapStringKey, String>& Attributes);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordtype">void</span> ProcessHullShaderArguments( TokenListType::iterator &TypeToken,</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  String &Globals,</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  std::stringstream &ReturnHandlerSS,</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  String &Prologue );</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordtype">void</span> ProcessDomainShaderArguments( TokenListType::iterator &TypeToken,</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  String &Globals,</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  std::stringstream &ReturnHandlerSS,</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  String &Prologue );</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordtype">void</span> ProcessComputeShaderArguments( TokenListType::iterator &TypeToken,</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  String &Globals,</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  String &Prologue );</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordtype">void</span> FindClosingBracket( TokenListType::iterator &Token, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd, TokenType OpenBracketType, TokenType ClosingBracketType );</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordtype">void</span> ProcessReturnStatements( TokenListType::iterator &Token, <span class="keywordtype">bool</span> IsVoid, <span class="keyword">const</span> Char *EntryPoint, <span class="keyword">const</span> Char *MacroName );</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordtype">void</span> ProcessGSOutStreamOperations( TokenListType::iterator &Token, <span class="keyword">const</span> String &OutStreamName, <span class="keyword">const</span> <span class="keywordtype">char</span> *EntryPoint );</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  String BuildGLSLSource();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// Tokenized source code</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  TokenListType m_Tokens;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="comment">// List of tokens defining structs</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  std::unordered_map<HashMapStringKey, TokenListType::iterator> m_StructDefinitions;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="comment">// Stack of parsed objects, for every scope level.</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="comment">// There are currently only two levels: </span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// level 0 - global scope, contains all global objects</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="comment">// (textures, buffers)</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">// level 1 - function body, contains all objects</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="comment">// defined as function arguments</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  std::vector< ObjectsTypeHashType > m_Objects;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> m_bPreserveTokens;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keyword">const</span> HLSL2GLSLConverterImpl &m_Converter;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="comment">// This member is only used to compare input name</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="comment">// when subsequent shaders are converted from already tokenized source</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keyword">const</span> String m_InputFileName;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  };</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="comment">// HLSL keyword->token info hash map</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="comment">// Example: "Texture2D" -> TokenInfo(TokenType::Texture2D, "Texture2D")</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  std::unordered_map<HashMapStringKey, TokenInfo> m_HLSLKeywords;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="comment">// Set of all GLSL image types (image1D, uimage1D, iimage1D, image2D, ... )</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  std::unordered_set<HashMapStringKey> m_ImageTypes;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="comment">// Set of all HLSL atomic operations (InterlockedAdd, InterlockedOr, ...)</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  std::unordered_set<HashMapStringKey> m_AtomicOperations;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="comment">// HLSL semantic -> glsl variable, for every shader stage and input/output type (in == 0, out == 1)</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// Example: [vertex, output] SV_Position -> gl_Position</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="comment">// [fragment, input] SV_Position -> gl_FragCoord</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> InVar = 0;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> OutVar = 1;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  std::unordered_map<HashMapStringKey, String> m_HLSLSemanticToGLSLVar[6][2];</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  };</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="comment">// Intro</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="comment">// DirectX and OpenGL use different shading languages. While mostly being very similar,</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="comment">// the language syntax differs substantially sometimes. Having two versions of each </span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="comment">// shader is clearly not an option for real projects. Maintaining intermediate representation</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="comment">// that translates to both languages is one solution, but it might complicate shader development</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="comment">// and debugging.</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="comment">// </span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="comment">// HLSL converter allows HLSL shader files to be converted into GLSL source.</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="comment">// The entire shader development can thus be performed using HLSL tools. Since no intermediate</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="comment">// representation is used, shader files can be directly compiled by the HLSL compiler.</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="comment">// All tools available for HLSL shader devlopment, analysis and optimization can be </span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="comment">// used. The source can then be transaprently converted to GLSL.</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="comment">//</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="comment">//</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="comment">// Using HLSL Converter</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="comment">// * The following rules are used to convert HLSL texture declaration into GLSL sampler:</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="comment">// - HLSL texture dimension defines GLSL sampler dimension:</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="comment">// - Texture2D -> sampler2D</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="comment">// - TextureCube -> samplerCube</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="comment">// - HLSL texture component type defines GLSL sampler type. If no type is specified, float4 is assumed:</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="comment">// - Texture2D<float> -> sampler2D</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="comment">// - Texture3D<uint4> -> usampler3D</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="comment">// - Texture2DArray<int2> -> isampler2DArray</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="comment">// - Texture2D -> sampler2D</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="comment">// - To distinguish if sampler should be shadow or not, the converter tries to find <Texture Name>_sampler</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="comment">// among samplers (global variables and function arguments). If the sampler type is comparison, </span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="comment">// the texture is converted to shadow sampler. If sampler state is either not comparison or not found, </span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="comment">// regular sampler is used.</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="comment">// Examples:</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="comment">// - Texture2D g_ShadowMap; -> sampler2DShadow g_ShadowMap;</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="comment">// SamplerComparisonState g_ShadowMap_sampler;</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="comment">// - Texture2D g_Tex2D; -> sampler2D g_Tex2D;</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="comment">// SamplerState g_Tex2D_sampler;</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="comment">// Texture3D g_Tex3D; -> sampler3D g_Tex3D;</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="comment">// </span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="comment">// * GLSL requires format to be specified for all images allowing writes. HLSL converter allows GLSL image </span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="comment">// format specification inside the special comment block:</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="comment">// Example:</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="comment">// RWTexture2D<float /* format=r32f */ > Tex2D;</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="comment">// * In OpenGL tessellation, domain, partitioning, and topology are properties of tessellation evaluation </span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="comment">// shader rather than tessellation control shader. The following specially formatted comment should be placed</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="comment">// on top of domain shader declararion to specify the attributes</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="comment">// /* partitioning = {integer|fractional_even|fractional_odd}, outputtopology = {triangle_cw|triangle_ccw} */</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="comment">// Example:</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="comment">// /* partitioning = fractional_even, outputtopology = triangle_cw */</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="comment">// Requirements:</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="comment">// * GLSL allows samplers to be declared as global variables or function arguments only.</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="comment">// It does not allow local variables of sampler type.</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="comment">//</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="comment">// Important notes/known issues:</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="comment">//</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="comment">// * GLSL compiler does not handle float3 structure members correctly. It is </span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="comment">// strongly suggested not to use this type in structure definitions</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="comment">//</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="comment">// * At least NVidia GLSL compiler does not apply layout(row_major) to</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="comment">// structure members. By default, all matrices in both HLSL and GLSL</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="comment">// are column major</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="comment">//</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="comment">// * GLSL compiler does not properly handle structs passed as function arguments!!!!</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="comment">// struct MyStruct</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment">// {</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="comment">// matrix Matr;</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="comment">// }</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="comment">// void Func(in MyStruct S)</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="comment">// {</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="comment">// ...</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="comment">// mul(f4PosWS, S.Matr); <--- This will not work!!!</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="comment">// }</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="comment">// DO NOT pass structs to functions, use only built-in types!!!</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="comment">//</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="comment">// * GLSL does not support most of the implicit type conversions. The following are some</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="comment">// examples of required modifications to HLSL code:</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="comment">// ** float4 vec = 0; -> float4 vec = float4(0.0, 0.0, 0.0, 0.0);</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="comment">// ** float x = 0; -> float x = 0.0;</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="comment">// ** uint x = 0; -> uint x = 0u;</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="comment">// ** GLES is immensely strict about type conversions. For instance,</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="comment">// this code will produce compiler error: float4(0, 0, 0, 0)</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="comment">// It must be written as float4(0.0, 0.0, 0.0, 0.0)</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="comment">// * GLSL does not support relational and boolean operations on vector types:</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="comment">// ** float2 p = float2(1.0,2.0), q = float2(3.0,4.0);</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="comment">// bool2 b = x < y; -> Error</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="comment">// all(p<q) -> Error</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="comment">// ** To facilitate relational and boolean operations on vector types, the following</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="comment">// functions are predefined:</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="comment">// - Less</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="comment">// - LessEqual</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="comment">// - Greater</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="comment">// - GreaterEqual</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="comment">// - Equal</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="comment">// - NotEqual</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="comment">// - Not</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="comment">// - And</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="comment">// - Or</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="comment">// - BoolToFloat</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="comment">// ** Examples:</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="comment">// bool2 b = x < y; -> bool2 b = Less(x, y);</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="comment">// all(p>=q) -> all( GreaterEqual(p,q) )</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="comment">//</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="comment">// * When accessing elements of an HLSL matrix, the first index is always row:</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="comment">// mat[row][column]</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="comment">// In GLSL, the first index is always column:</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="comment">// mat[column][row]</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="comment">// MATRIX_ELEMENT(mat, row, col) macros is provided to facilitate matrix element retrieval</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="comment">// * The following functions do not have counterparts in GLSL and should be avoided:</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="comment">// ** Texture2DArray.SampleCmpLevelZero()</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="comment">// ** TextureCube.SampleCmpLevelZero()</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="comment">// ** TextureCubeArray.SampleCmpLevelZero()</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="comment">// * Input variables to a shader stage must be listed in exact same order as outputs from</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="comment">// the previous stage. Function return value counts as the first output argument.</span></div><div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <unordered_set></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "HLSL2GLSLConverter.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "HLSLKeywords.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "HLSLKeywords.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">struct </span>FunctionStubHashKey</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  FunctionStubHashKey(<span class="keyword">const</span> String& _Obj, <span class="keyword">const</span> String& _Func, Uint32 _NumArgs) : </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Object(_Obj),</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  Function(_Func),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  NumArguments(_NumArgs)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  FunctionStubHashKey(<span class="keyword">const</span> Char* _Obj, <span class="keyword">const</span> Char* _Func, Uint32 _NumArgs) : </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  Object(_Obj),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  Function(_Func),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  NumArguments(_NumArgs)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  FunctionStubHashKey( FunctionStubHashKey && Key ) : </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  Object(<a class="code" href="namespacestd.html">std</a>::move(Key.Object)),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  Function(<a class="code" href="namespacestd.html">std</a>::move(Key.Function)),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  NumArguments(Key.NumArguments)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> FunctionStubHashKey& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> Object == rhs.Object &&</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Function == rhs.Function &&</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  NumArguments == rhs.NumArguments;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  HashMapStringKey Object;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  HashMapStringKey Function;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  Uint32 NumArguments;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">template</span><><span class="keyword">struct </span>hash < <a class="code" href="namespace_diligent.html">Diligent</a>::FunctionStubHashKey ></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Diligent::FunctionStubHashKey &Key )<span class="keyword"> const</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> ComputeHash(Key.Object, Key.Function, Key.NumArguments);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  };</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">class </span>HLSL2GLSLConverterImpl</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">static</span> <span class="keyword">const</span> HLSL2GLSLConverterImpl& GetInstance();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">struct </span>ConversionAttribs</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  IShaderSourceInputStreamFactory *pSourceStreamFactory = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  IHLSL2GLSLConversionStream **ppConversionStream = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">const</span> Char* HLSLSource = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">size_t</span> NumSymbols = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">const</span> Char* EntryPoint = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">bool</span> IncludeDefinitions = <span class="keyword">false</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> Char* InputFileName = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  };</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  String Convert(ConversionAttribs &Attribs)<span class="keyword">const</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">void</span> CreateStream(<span class="keyword">const</span> Char* InputFileName,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  IShaderSourceInputStreamFactory *pSourceStreamFactory, </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> Char* HLSLSource, </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">size_t</span> NumSymbols, </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  IHLSL2GLSLConversionStream **ppStream)<span class="keyword">const</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  HLSL2GLSLConverterImpl();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">struct </span>HLSLObjectInfo</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  String GLSLType; <span class="comment">// sampler2D, sampler2DShadow, image2D, etc.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  Uint32 NumComponents; <span class="comment">// 0,1,2,3 or 4</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// Texture2D<float4> -> 4</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Texture2D<uint> -> 1</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// Texture2D -> 0</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  HLSLObjectInfo( <span class="keyword">const</span> String& Type, Uint32 NComp ) :</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  GLSLType( Type ),</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  NumComponents( NComp )</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {}</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  };</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">struct </span>ObjectsTypeHashType</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// This is only required to make the code compile on paranoid MSVC 2017 compiler (19.10.25017):</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// https://stackoverflow.com/questions/47604029/move-constructors-of-stl-containers-in-msvc-2017-are-not-marked-as-noexcept</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  ObjectsTypeHashType()noexcept {}</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  ObjectsTypeHashType(ObjectsTypeHashType&& rhs)noexcept : </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m(std::move(rhs.m))</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {}</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  ObjectsTypeHashType& operator = (ObjectsTypeHashType&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  ObjectsTypeHashType(ObjectsTypeHashType&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  ObjectsTypeHashType& operator = (ObjectsTypeHashType&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  std::unordered_map<HashMapStringKey, HLSLObjectInfo> m;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  };</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">struct </span>GLSLStubInfo</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  String Name;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  String Swizzle;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  GLSLStubInfo( <span class="keyword">const</span> String& _Name, <span class="keyword">const</span> <span class="keywordtype">char</span>* _Swizzle ) :</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  Name( _Name ),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  Swizzle( _Swizzle )</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {}</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  };</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Hash map that maps GLSL object, method and number of arguments</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// passed to the original function, to the GLSL stub function</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// Example: {"sampler2D", "Sample", 2} -> {"Sample_2", "_SWIZZLE"}</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  std::unordered_map<FunctionStubHashKey, GLSLStubInfo> m_GLSLStubs;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">enum class</span> TokenType</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  Undefined,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#define ADD_KEYWORD(keyword)kw_##keyword,</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  ITERATE_KEYWORDS(ADD_KEYWORD)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#undef ADD_KEYWORD</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  PreprocessorDirective,</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  Operator,</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  OpenBrace,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  ClosingBrace,</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  OpenBracket,</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  ClosingBracket,</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  OpenStaple,</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  ClosingStaple,</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  OpenAngleBracket,</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  ClosingAngleBracket,</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  Identifier,</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  NumericConstant,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  SrtingConstant,</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  Semicolon,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  Comma,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  TextBlock,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  Assignment,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  ComparisonOp,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  BooleanOp,</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  BitwiseOp,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  IncDecOp,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  MathOp</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  };</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keyword">struct </span>TokenInfo</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  TokenType Type;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  String Literal;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  String Delimiter;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">bool</span> IsBuiltInType()<span class="keyword">const</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  static_assert( static_cast<int>(TokenType::kw_bool) == 1 && static_cast<int>(TokenType::kw_void) == 191, </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="stringliteral">"If you updated built-in types, double check that all types are defined between bool and void"</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">return</span> Type >= TokenType::kw_bool && Type <= TokenType::kw_void;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordtype">bool</span> IsFlowControl()<span class="keyword">const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  static_assert( static_cast<int>(TokenType::kw_break) == 192 && static_cast<int>(TokenType::kw_while) == 202, </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="stringliteral">"If you updated control flow keywords, double check that all keywords are defined between break and while"</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> Type >= TokenType::kw_break && Type <= TokenType::kw_while;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  TokenInfo( TokenType _Type = TokenType :: Undefined,</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">const</span> Char* _Literal = <span class="stringliteral">""</span>,</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">const</span> Char* _Delimiter = <span class="stringliteral">""</span> ) : </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  Type( _Type ),</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  Literal( _Literal ),</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  Delimiter(_Delimiter)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {}</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  };</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">typedef</span> std::list<TokenInfo> TokenListType;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">class </span>ConversionStream : <span class="keyword">public</span> ObjectBase<IHLSL2GLSLConversionStream></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">typedef</span> ObjectBase<IHLSL2GLSLConversionStream> TBase;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  ConversionStream(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">const</span> HLSL2GLSLConverterImpl &Converter, </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* InputFileName,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  IShaderSourceInputStreamFactory* pInputStreamFactory, </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">const</span> Char* HLSLSource, </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordtype">size_t</span> NumSymbols,</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordtype">bool</span> bPreserveTokens);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  String Convert(<span class="keyword">const</span> Char* EntryPoint, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keywordtype">bool</span> IncludeDefintions);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Convert(<span class="keyword">const</span> Char* EntryPoint, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keywordtype">bool</span> IncludeDefintions, IDataBlob **ppGLSLSource)<span class="keyword">override</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_HLSL2GLSLConversionStream, TBase )</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">const</span> String& GetInputFileName()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_InputFileName; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordtype">void</span> InsertIncludes(String &GLSLSource, IShaderSourceInputStreamFactory* pSourceStreamFactory);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordtype">void</span> Tokenize(<span class="keyword">const</span> String &Source);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keyword">typedef</span> std::unordered_map<String, bool> SamplerHashType;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">const</span> HLSLObjectInfo *FindHLSLObject(<span class="keyword">const</span> String &Name );</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordtype">void</span> ProcessShaderDeclaration(TokenListType::iterator EntryPointToken, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordtype">void</span> ProcessObjectMethods(<span class="keyword">const</span> TokenListType::iterator &ScopeStart, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">void</span> ProcessRWTextures(<span class="keyword">const</span> TokenListType::iterator &ScopeStart, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">void</span> ProcessAtomics(<span class="keyword">const</span> TokenListType::iterator &ScopeStart, </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordtype">void</span> RegisterStruct(TokenListType::iterator &Token);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordtype">void</span> ProcessConstantBuffer(TokenListType::iterator &Token);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordtype">void</span> ProcessStructuredBuffer(TokenListType::iterator &Token);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordtype">void</span> ParseSamplers(TokenListType::iterator &ScopeStart, SamplerHashType &SamplersHash);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordtype">void</span> ProcessTextureDeclaration(TokenListType::iterator &Token, <span class="keyword">const</span> std::vector<SamplerHashType> &SamplersHash, ObjectsTypeHashType &Objects);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordtype">bool</span> ProcessObjectMethod(TokenListType::iterator &Token, <span class="keyword">const</span> TokenListType::iterator &ScopeStart, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  Uint32 CountFunctionArguments(TokenListType::iterator &Token, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordtype">bool</span> ProcessRWTextureStore(TokenListType::iterator &Token, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">void</span> RemoveFlowControlAttribute(TokenListType::iterator &Token);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordtype">void</span> RemoveSemantics();</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">void</span> RemoveSpecialShaderAttributes();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordtype">void</span> RemoveSemanticsFromBlock(TokenListType::iterator &Token, TokenType OpenBracketType, TokenType ClosingBracketType);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="comment">// IteratorType may be String::iterator or String::const_iterator.</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// While iterator is convertible to const_iterator, </span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">// iterator& cannot be converted to const_iterator& (Microsoft compiler allows</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">// such conversion, while gcc does not)</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">template</span><<span class="keyword">typename</span> IteratorType></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  String PrintTokenContext(IteratorType &TargetToken, Int32 NumAdjacentLines);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">struct </span>ShaderParameterInfo</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keyword">enum class</span> StorageQualifier : Int8</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  Unknown = 0,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  In = 1,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  Out = 2,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  InOut = 3,</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  Ret = 4</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }storageQualifier;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keyword">struct </span>GSAttributes</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">enum class</span> PrimitiveType : Int8</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  Undefined = 0,</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  Point = 1,</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  Line = 2,</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  Triangle = 3,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  LineAdj = 4,</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  TriangleAdj = 5</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  };</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">enum class</span> StreamType : Int8</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  Undefined = 0,</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  Point = 1,</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  Line = 2,</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  Triangle = 3</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  };</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  PrimitiveType PrimType;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  StreamType Stream;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  GSAttributes() : </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  PrimType(PrimitiveType::Undefined),</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  Stream(StreamType::Undefined)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {}</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }GSAttribs;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">struct </span>HSAttributes</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">enum class</span> InOutPatchType : Int8</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  Undefined = 0,</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  InputPatch = 1,</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  OutputPatch = 2</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }PatchType;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  HSAttributes() : </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  PatchType(InOutPatchType::Undefined)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {}</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }HSAttribs;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  String ArraySize;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  String Type;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  String Name;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  String Semantic;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  std::vector<ShaderParameterInfo> members;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  ShaderParameterInfo() :</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  storageQualifier(StorageQualifier::Unknown)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {}</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  };</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">void</span> ParseShaderParameter(TokenListType::iterator &Token, ShaderParameterInfo &ParamInfo);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordtype">void</span> ProcessFunctionParameters( TokenListType::iterator &Token, std::vector<ShaderParameterInfo>& Params, <span class="keywordtype">bool</span> &bIsVoid );</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  String AddFlatQualifier(<span class="keyword">const</span> String& Type);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordtype">void</span> ProcessFragmentShaderArguments( std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  String &GlobalVariables,</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  std::stringstream &ReturnHandlerSS,</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  String &Prologue );</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  String BuildParameterName(<span class="keyword">const</span> std::vector<const ShaderParameterInfo*>& MemberStack, Char Separator, <span class="keyword">const</span> Char* Prefix = <span class="stringliteral">""</span>, <span class="keyword">const</span> Char *SubstituteInstName = <span class="stringliteral">""</span>, <span class="keyword">const</span> Char *Index = <span class="stringliteral">""</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keyword">template</span><<span class="keyword">typename</span> THandler></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordtype">void</span> ProcessScope(TokenListType::iterator &Token, TokenListType::iterator ScopeEnd, TokenType OpenParenType, TokenType ClosingParenType, THandler Handler);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TArgHandler></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordtype">void</span> ProcessShaderArgument( <span class="keyword">const</span> ShaderParameterInfo &Param,</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordtype">int</span> ShaderInd,</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordtype">int</span> IsOutVar,</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  std::stringstream &PrologueSS,</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  TArgHandler ArgHandler);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordtype">void</span> ProcessVertexShaderArguments( std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  String &Globals,</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  std::stringstream &ReturnHandlerSS,</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  String &Prologue );</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordtype">void</span> ProcessGeometryShaderArguments( TokenListType::iterator &TypeToken,</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  String &Globals,</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  String &Prologue );</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordtype">void</span> ProcessHullShaderConstantFunction( <span class="keyword">const</span> Char *FuncName, <span class="keywordtype">bool</span> &bTakesInputPatch );</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordtype">void</span> ProcessShaderAttributes( TokenListType::iterator &TypeToken,</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  std::unordered_map<HashMapStringKey, String>& Attributes);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordtype">void</span> ProcessHullShaderArguments( TokenListType::iterator &TypeToken,</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  String &Globals,</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  std::stringstream &ReturnHandlerSS,</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  String &Prologue );</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordtype">void</span> ProcessDomainShaderArguments( TokenListType::iterator &TypeToken,</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  String &Globals,</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  std::stringstream &ReturnHandlerSS,</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  String &Prologue );</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordtype">void</span> ProcessComputeShaderArguments( TokenListType::iterator &TypeToken,</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  std::vector<ShaderParameterInfo>& Params,</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  String &Globals,</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  String &Prologue );</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordtype">void</span> FindClosingBracket( TokenListType::iterator &Token, <span class="keyword">const</span> TokenListType::iterator &ScopeEnd, TokenType OpenBracketType, TokenType ClosingBracketType );</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordtype">void</span> ProcessReturnStatements( TokenListType::iterator &Token, <span class="keywordtype">bool</span> IsVoid, <span class="keyword">const</span> Char *EntryPoint, <span class="keyword">const</span> Char *MacroName );</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordtype">void</span> ProcessGSOutStreamOperations( TokenListType::iterator &Token, <span class="keyword">const</span> String &OutStreamName, <span class="keyword">const</span> <span class="keywordtype">char</span> *EntryPoint );</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  String BuildGLSLSource();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// Tokenized source code</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  TokenListType m_Tokens;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="comment">// List of tokens defining structs</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  std::unordered_map<HashMapStringKey, TokenListType::iterator> m_StructDefinitions;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="comment">// Stack of parsed objects, for every scope level.</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="comment">// There are currently only two levels: </span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// level 0 - global scope, contains all global objects</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="comment">// (textures, buffers)</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">// level 1 - function body, contains all objects</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="comment">// defined as function arguments</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  std::vector< ObjectsTypeHashType > m_Objects;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> m_bPreserveTokens;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keyword">const</span> HLSL2GLSLConverterImpl &m_Converter;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="comment">// This member is only used to compare input name</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="comment">// when subsequent shaders are converted from already tokenized source</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keyword">const</span> String m_InputFileName;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  };</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="comment">// HLSL keyword->token info hash map</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="comment">// Example: "Texture2D" -> TokenInfo(TokenType::Texture2D, "Texture2D")</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  std::unordered_map<HashMapStringKey, TokenInfo> m_HLSLKeywords;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="comment">// Set of all GLSL image types (image1D, uimage1D, iimage1D, image2D, ... )</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  std::unordered_set<HashMapStringKey> m_ImageTypes;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="comment">// Set of all HLSL atomic operations (InterlockedAdd, InterlockedOr, ...)</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  std::unordered_set<HashMapStringKey> m_AtomicOperations;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="comment">// HLSL semantic -> glsl variable, for every shader stage and input/output type (in == 0, out == 1)</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// Example: [vertex, output] SV_Position -> gl_Position</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="comment">// [fragment, input] SV_Position -> gl_FragCoord</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> InVar = 0;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> OutVar = 1;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  std::unordered_map<HashMapStringKey, String> m_HLSLSemanticToGLSLVar[6][2];</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  };</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="comment">// Intro</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="comment">// DirectX and OpenGL use different shading languages. While mostly being very similar,</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="comment">// the language syntax differs substantially sometimes. Having two versions of each </span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="comment">// shader is clearly not an option for real projects. Maintaining intermediate representation</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="comment">// that translates to both languages is one solution, but it might complicate shader development</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="comment">// and debugging.</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="comment">// </span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="comment">// HLSL converter allows HLSL shader files to be converted into GLSL source.</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="comment">// The entire shader development can thus be performed using HLSL tools. Since no intermediate</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="comment">// representation is used, shader files can be directly compiled by the HLSL compiler.</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="comment">// All tools available for HLSL shader devlopment, analysis and optimization can be </span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="comment">// used. The source can then be transaprently converted to GLSL.</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="comment">//</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="comment">//</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="comment">// Using HLSL Converter</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="comment">// * The following rules are used to convert HLSL texture declaration into GLSL sampler:</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="comment">// - HLSL texture dimension defines GLSL sampler dimension:</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="comment">// - Texture2D -> sampler2D</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="comment">// - TextureCube -> samplerCube</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="comment">// - HLSL texture component type defines GLSL sampler type. If no type is specified, float4 is assumed:</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="comment">// - Texture2D<float> -> sampler2D</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="comment">// - Texture3D<uint4> -> usampler3D</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="comment">// - Texture2DArray<int2> -> isampler2DArray</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="comment">// - Texture2D -> sampler2D</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="comment">// - To distinguish if sampler should be shadow or not, the converter tries to find <Texture Name>_sampler</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="comment">// among samplers (global variables and function arguments). If the sampler type is comparison, </span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="comment">// the texture is converted to shadow sampler. If sampler state is either not comparison or not found, </span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="comment">// regular sampler is used.</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="comment">// Examples:</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="comment">// - Texture2D g_ShadowMap; -> sampler2DShadow g_ShadowMap;</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="comment">// SamplerComparisonState g_ShadowMap_sampler;</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="comment">// - Texture2D g_Tex2D; -> sampler2D g_Tex2D;</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="comment">// SamplerState g_Tex2D_sampler;</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="comment">// Texture3D g_Tex3D; -> sampler3D g_Tex3D;</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="comment">// </span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="comment">// * GLSL requires format to be specified for all images allowing writes. HLSL converter allows GLSL image </span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="comment">// format specification inside the special comment block:</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="comment">// Example:</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="comment">// RWTexture2D<float /* format=r32f */ > Tex2D;</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="comment">// * In OpenGL tessellation, domain, partitioning, and topology are properties of tessellation evaluation </span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="comment">// shader rather than tessellation control shader. The following specially formatted comment should be placed</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="comment">// on top of domain shader declararion to specify the attributes</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="comment">// /* partitioning = {integer|fractional_even|fractional_odd}, outputtopology = {triangle_cw|triangle_ccw} */</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="comment">// Example:</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="comment">// /* partitioning = fractional_even, outputtopology = triangle_cw */</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="comment">// Requirements:</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="comment">// * GLSL allows samplers to be declared as global variables or function arguments only.</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="comment">// It does not allow local variables of sampler type.</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="comment">//</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="comment">// Important notes/known issues:</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="comment">//</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="comment">// * GLSL compiler does not handle float3 structure members correctly. It is </span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="comment">// strongly suggested not to use this type in structure definitions</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="comment">//</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="comment">// * At least NVidia GLSL compiler does not apply layout(row_major) to</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="comment">// structure members. By default, all matrices in both HLSL and GLSL</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="comment">// are column major</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="comment">//</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="comment">// * GLSL compiler does not properly handle structs passed as function arguments!!!!</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="comment">// struct MyStruct</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment">// {</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="comment">// matrix Matr;</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="comment">// }</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="comment">// void Func(in MyStruct S)</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="comment">// {</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="comment">// ...</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="comment">// mul(f4PosWS, S.Matr); <--- This will not work!!!</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="comment">// }</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="comment">// DO NOT pass structs to functions, use only built-in types!!!</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="comment">//</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="comment">// * GLSL does not support most of the implicit type conversions. The following are some</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="comment">// examples of required modifications to HLSL code:</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="comment">// ** float4 vec = 0; -> float4 vec = float4(0.0, 0.0, 0.0, 0.0);</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="comment">// ** float x = 0; -> float x = 0.0;</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="comment">// ** uint x = 0; -> uint x = 0u;</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="comment">// ** GLES is immensely strict about type conversions. For instance,</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="comment">// this code will produce compiler error: float4(0, 0, 0, 0)</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="comment">// It must be written as float4(0.0, 0.0, 0.0, 0.0)</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="comment">// * GLSL does not support relational and boolean operations on vector types:</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="comment">// ** float2 p = float2(1.0,2.0), q = float2(3.0,4.0);</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="comment">// bool2 b = x < y; -> Error</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="comment">// all(p<q) -> Error</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="comment">// ** To facilitate relational and boolean operations on vector types, the following</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="comment">// functions are predefined:</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="comment">// - Less</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="comment">// - LessEqual</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="comment">// - Greater</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="comment">// - GreaterEqual</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="comment">// - Equal</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="comment">// - NotEqual</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="comment">// - Not</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="comment">// - And</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="comment">// - Or</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="comment">// - BoolToFloat</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="comment">// ** Examples:</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="comment">// bool2 b = x < y; -> bool2 b = Less(x, y);</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="comment">// all(p>=q) -> all( GreaterEqual(p,q) )</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="comment">//</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="comment">// * When accessing elements of an HLSL matrix, the first index is always row:</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="comment">// mat[row][column]</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="comment">// In GLSL, the first index is always column:</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="comment">// mat[column][row]</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="comment">// MATRIX_ELEMENT(mat, row, col) macros is provided to facilitate matrix element retrieval</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="comment">// * The following functions do not have counterparts in GLSL and should be avoided:</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="comment">// ** Texture2DArray.SampleCmpLevelZero()</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="comment">// ** TextureCube.SampleCmpLevelZero()</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="comment">// ** TextureCubeArray.SampleCmpLevelZero()</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="comment">// * Input variables to a shader stage must be listed in exact same order as outputs from</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="comment">// the previous stage. Function return value counts as the first output argument.</span></div><div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">Diligent::SHADER_TYPE_UNKNOWN</a></div><div class="ttdoc">Unknown shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:48</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_h_l_s_l2_g_l_s_l_converter_object_8h_source.html b/doc/html/_h_l_s_l2_g_l_s_l_converter_object_8h_source.html index d3e96230..0ae2f7f6 100644 --- a/doc/html/_h_l_s_l2_g_l_s_l_converter_object_8h_source.html +++ b/doc/html/_h_l_s_l2_g_l_s_l_converter_object_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">HLSL2GLSLConverterObject.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "HLSL2GLSLConverter.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html">HLSL2GLSLConverterObject</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><IHLSL2GLSLConverter></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<IHLSL2GLSLConverter></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html">HLSL2GLSLConverterObject</a>(IReferenceCounters *pRefCounters) :</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>(pRefCounters)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {}</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_HLSL2GLSLConverter, <a class="code" href="class_diligent_1_1_object_base.html">TBase</a> )</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateStream(<span class="keyword">const</span> Char* InputFileName,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a> *pSourceStreamFactory, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> Char* HLSLSource, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">size_t</span> NumSymbols, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  IHLSL2GLSLConversionStream **ppStream)<span class="keyword">const override</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_source_input_stream_factory_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_source_input_stream_factory.html">Diligent::IShaderSourceInputStreamFactory</a></div><div class="ttdoc">Shader source stream factory interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:190</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "HLSL2GLSLConverter.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html">HLSL2GLSLConverterObject</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><IHLSL2GLSLConverter></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<IHLSL2GLSLConverter></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html">HLSL2GLSLConverterObject</a>(IReferenceCounters *pRefCounters) :</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>(pRefCounters)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {}</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_HLSL2GLSLConverter, <a class="code" href="class_diligent_1_1_object_base.html">TBase</a> )</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateStream(<span class="keyword">const</span> Char* InputFileName,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a> *pSourceStreamFactory, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> Char* HLSLSource, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">size_t</span> NumSymbols, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  IHLSL2GLSLConversionStream **ppStream)<span class="keyword">const override</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_source_input_stream_factory_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_source_input_stream_factory.html">Diligent::IShaderSourceInputStreamFactory</a></div><div class="ttdoc">Shader source stream factory interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:190</div></div> <div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object_html"><div class="ttname"><a href="class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html">Diligent::HLSL2GLSLConverterObject</a></div><div class="ttdoc">Implementation of the Diligent::IHLSL2GLSLConverter interface. </div><div class="ttdef"><b>Definition:</b> HLSL2GLSLConverterObject.h:33</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_h_l_s_l_keywords_8h_source.html b/doc/html/_h_l_s_l_keywords_8h_source.html index e5242287..5b4f8cc9 100644 --- a/doc/html/_h_l_s_l_keywords_8h_source.html +++ b/doc/html/_h_l_s_l_keywords_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">HLSLKeywords.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#define LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, type)\</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">KEYWORD_HANDLER(type)\</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">KEYWORD_HANDLER(type##1)\</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">KEYWORD_HANDLER(type##2)\</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">KEYWORD_HANDLER(type##3)\</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">KEYWORD_HANDLER(type##4)\</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">KEYWORD_HANDLER(type##1x1)\</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">KEYWORD_HANDLER(type##1x2)\</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">KEYWORD_HANDLER(type##1x3)\</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">KEYWORD_HANDLER(type##1x4)\</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">KEYWORD_HANDLER(type##2x1)\</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">KEYWORD_HANDLER(type##2x2)\</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">KEYWORD_HANDLER(type##2x3)\</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">KEYWORD_HANDLER(type##2x4)\</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">KEYWORD_HANDLER(type##3x1)\</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">KEYWORD_HANDLER(type##3x2)\</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">KEYWORD_HANDLER(type##3x3)\</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">KEYWORD_HANDLER(type##3x4)\</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">KEYWORD_HANDLER(type##4x1)\</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">KEYWORD_HANDLER(type##4x2)\</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">KEYWORD_HANDLER(type##4x3)\</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">KEYWORD_HANDLER(type##4x4)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#define ITERATE_KEYWORDS(KEYWORD_HANDLER)\</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor"></span><span class="comment">/*All built-in types must be defined consecutively between bool and void*/</span><span class="preprocessor">\</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, bool)\</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, float)\</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, int)\</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, uint)\</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, min16float)\</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, min10float)\</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, min16int)\</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, min12int)\</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, min16uint)\</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">KEYWORD_HANDLER(matrix)\</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">KEYWORD_HANDLER(void)\</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"></span><span class="comment">/*All flow control keywords must be defined consecutively between break and while*/</span><span class="preprocessor">\</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">KEYWORD_HANDLER(break)\</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">KEYWORD_HANDLER(case)\</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">KEYWORD_HANDLER(continue)\</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">KEYWORD_HANDLER(default)\</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">KEYWORD_HANDLER(do)\</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">KEYWORD_HANDLER(else)\</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">KEYWORD_HANDLER(for)\</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">KEYWORD_HANDLER(if)\</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">KEYWORD_HANDLER(return)\</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">KEYWORD_HANDLER(switch)\</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">KEYWORD_HANDLER(while)\</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">KEYWORD_HANDLER(AppendStructuredBuffer)\</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">KEYWORD_HANDLER(asm)\</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">KEYWORD_HANDLER(asm_fragment)\</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">KEYWORD_HANDLER(BlendState)\</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">KEYWORD_HANDLER(Buffer)\</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">KEYWORD_HANDLER(ByteAddressBuffer)\</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">KEYWORD_HANDLER(cbuffer)\</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">KEYWORD_HANDLER(centroid)\</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">KEYWORD_HANDLER(class)\</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">KEYWORD_HANDLER(column_major)\</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">KEYWORD_HANDLER(compile)\</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">KEYWORD_HANDLER(compile_fragment)\</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">KEYWORD_HANDLER(CompileShader)\</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">KEYWORD_HANDLER(const)\</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">KEYWORD_HANDLER(ComputeShader)\</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">KEYWORD_HANDLER(ConsumeStructuredBuffer)\</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">KEYWORD_HANDLER(DepthStencilState)\</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">KEYWORD_HANDLER(DepthStencilView)\</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">KEYWORD_HANDLER(discard)\</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">KEYWORD_HANDLER(double)\</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">KEYWORD_HANDLER(DomainShader)\</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">KEYWORD_HANDLER(dword)\</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">KEYWORD_HANDLER(export)\</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">KEYWORD_HANDLER(extern)\</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">KEYWORD_HANDLER(false)\</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">KEYWORD_HANDLER(fxgroup)\</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">KEYWORD_HANDLER(GeometryShader)\</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">KEYWORD_HANDLER(groupshared)\</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">KEYWORD_HANDLER(half)\</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">KEYWORD_HANDLER(Hullshader)\</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">KEYWORD_HANDLER(in)\</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">KEYWORD_HANDLER(inline)\</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">KEYWORD_HANDLER(inout)\</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">KEYWORD_HANDLER(InputPatch)\</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">KEYWORD_HANDLER(interface)\</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">KEYWORD_HANDLER(line)\</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">KEYWORD_HANDLER(lineadj)\</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">KEYWORD_HANDLER(linear)\</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">KEYWORD_HANDLER(LineStream)\</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">KEYWORD_HANDLER(namespace)\</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">KEYWORD_HANDLER(nointerpolation)\</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">KEYWORD_HANDLER(noperspective)\</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">KEYWORD_HANDLER(NULL)\</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">KEYWORD_HANDLER(out)\</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">KEYWORD_HANDLER(OutputPatch)\</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">KEYWORD_HANDLER(packoffset)\</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">KEYWORD_HANDLER(pass)\</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">KEYWORD_HANDLER(pixelfragment)\</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">KEYWORD_HANDLER(PixelShader)\</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">KEYWORD_HANDLER(point)\</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">KEYWORD_HANDLER(PointStream)\</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">KEYWORD_HANDLER(precise)\</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">KEYWORD_HANDLER(RasterizerState)\</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">KEYWORD_HANDLER(RenderTargetView)\</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">KEYWORD_HANDLER(register)\</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">KEYWORD_HANDLER(row_major)\</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">KEYWORD_HANDLER(RWBuffer)\</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">KEYWORD_HANDLER(RWByteAddressBuffer)\</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">KEYWORD_HANDLER(RWStructuredBuffer)\</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">KEYWORD_HANDLER(RWTexture1D)\</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">KEYWORD_HANDLER(RWTexture1DArray)\</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">KEYWORD_HANDLER(RWTexture2D)\</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">KEYWORD_HANDLER(RWTexture2DArray)\</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">KEYWORD_HANDLER(RWTexture3D)\</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">KEYWORD_HANDLER(sample)\</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">KEYWORD_HANDLER(sampler)\</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">KEYWORD_HANDLER(SamplerState)\</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">KEYWORD_HANDLER(SamplerComparisonState)\</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">KEYWORD_HANDLER(shared)\</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">KEYWORD_HANDLER(snorm)\</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">KEYWORD_HANDLER(stateblock)\</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">KEYWORD_HANDLER(stateblock_state)\</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">KEYWORD_HANDLER(static)\</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor">KEYWORD_HANDLER(string)\</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">KEYWORD_HANDLER(struct)\</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor">KEYWORD_HANDLER(StructuredBuffer)\</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor">KEYWORD_HANDLER(tbuffer)\</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">KEYWORD_HANDLER(technique)\</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">KEYWORD_HANDLER(technique10)\</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">KEYWORD_HANDLER(technique11)\</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">KEYWORD_HANDLER(texture)\</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">KEYWORD_HANDLER(Texture1D)\</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">KEYWORD_HANDLER(Texture1DArray)\</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor">KEYWORD_HANDLER(Texture2D)\</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">KEYWORD_HANDLER(Texture2DArray)\</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor">KEYWORD_HANDLER(Texture2DMS)\</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">KEYWORD_HANDLER(Texture2DMSArray)\</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">KEYWORD_HANDLER(Texture3D)\</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">KEYWORD_HANDLER(TextureCube)\</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">KEYWORD_HANDLER(TextureCubeArray)\</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">KEYWORD_HANDLER(true)\</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">KEYWORD_HANDLER(typedef)\</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">KEYWORD_HANDLER(triangle)\</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">KEYWORD_HANDLER(triangleadj)\</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">KEYWORD_HANDLER(TriangleStream)\</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">KEYWORD_HANDLER(uniform)\</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">KEYWORD_HANDLER(unorm)\</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">KEYWORD_HANDLER(unsigned)\</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">KEYWORD_HANDLER(vector)\</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">KEYWORD_HANDLER(vertexfragment)\</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">KEYWORD_HANDLER(VertexShader)\</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">KEYWORD_HANDLER(volatile)</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#define LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, type)\</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">KEYWORD_HANDLER(type)\</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">KEYWORD_HANDLER(type##1)\</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">KEYWORD_HANDLER(type##2)\</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">KEYWORD_HANDLER(type##3)\</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">KEYWORD_HANDLER(type##4)\</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">KEYWORD_HANDLER(type##1x1)\</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">KEYWORD_HANDLER(type##1x2)\</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">KEYWORD_HANDLER(type##1x3)\</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">KEYWORD_HANDLER(type##1x4)\</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">KEYWORD_HANDLER(type##2x1)\</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">KEYWORD_HANDLER(type##2x2)\</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">KEYWORD_HANDLER(type##2x3)\</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">KEYWORD_HANDLER(type##2x4)\</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">KEYWORD_HANDLER(type##3x1)\</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">KEYWORD_HANDLER(type##3x2)\</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">KEYWORD_HANDLER(type##3x3)\</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">KEYWORD_HANDLER(type##3x4)\</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">KEYWORD_HANDLER(type##4x1)\</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">KEYWORD_HANDLER(type##4x2)\</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">KEYWORD_HANDLER(type##4x3)\</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">KEYWORD_HANDLER(type##4x4)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#define ITERATE_KEYWORDS(KEYWORD_HANDLER)\</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor"></span><span class="comment">/*All built-in types must be defined consecutively between bool and void*/</span><span class="preprocessor">\</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, bool)\</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, float)\</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, int)\</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, uint)\</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, min16float)\</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, min10float)\</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, min16int)\</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, min12int)\</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">LIST_VECTOR_AND_MATRIX_EXPANSIONS(KEYWORD_HANDLER, min16uint)\</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">KEYWORD_HANDLER(matrix)\</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">KEYWORD_HANDLER(void)\</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"></span><span class="comment">/*All flow control keywords must be defined consecutively between break and while*/</span><span class="preprocessor">\</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">KEYWORD_HANDLER(break)\</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">KEYWORD_HANDLER(case)\</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">KEYWORD_HANDLER(continue)\</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">KEYWORD_HANDLER(default)\</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">KEYWORD_HANDLER(do)\</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">KEYWORD_HANDLER(else)\</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">KEYWORD_HANDLER(for)\</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">KEYWORD_HANDLER(if)\</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">KEYWORD_HANDLER(return)\</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">KEYWORD_HANDLER(switch)\</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">KEYWORD_HANDLER(while)\</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">KEYWORD_HANDLER(AppendStructuredBuffer)\</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">KEYWORD_HANDLER(asm)\</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">KEYWORD_HANDLER(asm_fragment)\</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">KEYWORD_HANDLER(BlendState)\</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">KEYWORD_HANDLER(Buffer)\</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">KEYWORD_HANDLER(ByteAddressBuffer)\</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">KEYWORD_HANDLER(cbuffer)\</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">KEYWORD_HANDLER(centroid)\</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">KEYWORD_HANDLER(class)\</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">KEYWORD_HANDLER(column_major)\</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">KEYWORD_HANDLER(compile)\</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">KEYWORD_HANDLER(compile_fragment)\</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">KEYWORD_HANDLER(CompileShader)\</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">KEYWORD_HANDLER(const)\</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">KEYWORD_HANDLER(ComputeShader)\</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">KEYWORD_HANDLER(ConsumeStructuredBuffer)\</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">KEYWORD_HANDLER(DepthStencilState)\</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">KEYWORD_HANDLER(DepthStencilView)\</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">KEYWORD_HANDLER(discard)\</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">KEYWORD_HANDLER(double)\</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">KEYWORD_HANDLER(DomainShader)\</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">KEYWORD_HANDLER(dword)\</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">KEYWORD_HANDLER(export)\</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">KEYWORD_HANDLER(extern)\</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">KEYWORD_HANDLER(false)\</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">KEYWORD_HANDLER(fxgroup)\</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">KEYWORD_HANDLER(GeometryShader)\</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">KEYWORD_HANDLER(groupshared)\</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">KEYWORD_HANDLER(half)\</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">KEYWORD_HANDLER(Hullshader)\</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">KEYWORD_HANDLER(in)\</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">KEYWORD_HANDLER(inline)\</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">KEYWORD_HANDLER(inout)\</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">KEYWORD_HANDLER(InputPatch)\</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">KEYWORD_HANDLER(interface)\</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">KEYWORD_HANDLER(line)\</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">KEYWORD_HANDLER(lineadj)\</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">KEYWORD_HANDLER(linear)\</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">KEYWORD_HANDLER(LineStream)\</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">KEYWORD_HANDLER(namespace)\</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">KEYWORD_HANDLER(nointerpolation)\</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">KEYWORD_HANDLER(noperspective)\</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">KEYWORD_HANDLER(NULL)\</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">KEYWORD_HANDLER(out)\</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">KEYWORD_HANDLER(OutputPatch)\</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">KEYWORD_HANDLER(packoffset)\</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">KEYWORD_HANDLER(pass)\</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">KEYWORD_HANDLER(pixelfragment)\</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">KEYWORD_HANDLER(PixelShader)\</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">KEYWORD_HANDLER(point)\</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">KEYWORD_HANDLER(PointStream)\</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">KEYWORD_HANDLER(precise)\</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">KEYWORD_HANDLER(RasterizerState)\</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">KEYWORD_HANDLER(RenderTargetView)\</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">KEYWORD_HANDLER(register)\</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">KEYWORD_HANDLER(row_major)\</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">KEYWORD_HANDLER(RWBuffer)\</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">KEYWORD_HANDLER(RWByteAddressBuffer)\</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">KEYWORD_HANDLER(RWStructuredBuffer)\</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">KEYWORD_HANDLER(RWTexture1D)\</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">KEYWORD_HANDLER(RWTexture1DArray)\</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">KEYWORD_HANDLER(RWTexture2D)\</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">KEYWORD_HANDLER(RWTexture2DArray)\</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">KEYWORD_HANDLER(RWTexture3D)\</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">KEYWORD_HANDLER(sample)\</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">KEYWORD_HANDLER(sampler)\</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">KEYWORD_HANDLER(SamplerState)\</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">KEYWORD_HANDLER(SamplerComparisonState)\</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">KEYWORD_HANDLER(shared)\</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">KEYWORD_HANDLER(snorm)\</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">KEYWORD_HANDLER(stateblock)\</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">KEYWORD_HANDLER(stateblock_state)\</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">KEYWORD_HANDLER(static)\</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor">KEYWORD_HANDLER(string)\</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">KEYWORD_HANDLER(struct)\</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor">KEYWORD_HANDLER(StructuredBuffer)\</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor">KEYWORD_HANDLER(tbuffer)\</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">KEYWORD_HANDLER(technique)\</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">KEYWORD_HANDLER(technique10)\</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">KEYWORD_HANDLER(technique11)\</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">KEYWORD_HANDLER(texture)\</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">KEYWORD_HANDLER(Texture1D)\</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">KEYWORD_HANDLER(Texture1DArray)\</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor">KEYWORD_HANDLER(Texture2D)\</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">KEYWORD_HANDLER(Texture2DArray)\</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor">KEYWORD_HANDLER(Texture2DMS)\</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">KEYWORD_HANDLER(Texture2DMSArray)\</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">KEYWORD_HANDLER(Texture3D)\</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">KEYWORD_HANDLER(TextureCube)\</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">KEYWORD_HANDLER(TextureCubeArray)\</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">KEYWORD_HANDLER(true)\</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">KEYWORD_HANDLER(typedef)\</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">KEYWORD_HANDLER(triangle)\</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">KEYWORD_HANDLER(triangleadj)\</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">KEYWORD_HANDLER(TriangleStream)\</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">KEYWORD_HANDLER(uniform)\</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">KEYWORD_HANDLER(unorm)\</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">KEYWORD_HANDLER(unsigned)\</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">KEYWORD_HANDLER(vector)\</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">KEYWORD_HANDLER(vertexfragment)\</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">KEYWORD_HANDLER(VertexShader)\</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">KEYWORD_HANDLER(volatile)</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_hash_utils_8h_source.html b/doc/html/_hash_utils_8h_source.html index 883a1f43..0c86980c 100644 --- a/doc/html/_hash_utils_8h_source.html +++ b/doc/html/_hash_utils_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">HashUtils.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <functional></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define LOG_HASH_CONFLICTS 1</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// http://www.boost.org/doc/libs/1_35_0/doc/html/hash/combine.html</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">void</span> HashCombine(std::size_t &Seed, <span class="keyword">const</span> T& Val)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  Seed ^= std::hash<T>()(Val) + 0x9e3779b9 + (Seed << 6) + (Seed >> 2);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">template</span><<span class="keyword">typename</span> FirstArgType, <span class="keyword">typename</span>... RestArgsType></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span> HashCombine( std::size_t &Seed, <span class="keyword">const</span> FirstArgType& FirstArg, <span class="keyword">const</span> RestArgsType&... RestArgs )</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  HashCombine( Seed, FirstArg );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  HashCombine( Seed, RestArgs... ); <span class="comment">// recursive call using pack expansion syntax</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">template</span><<span class="keyword">typename</span>... ArgsType></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::size_t ComputeHash( <span class="keyword">const</span> ArgsType&... Args )</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  std::size_t Seed = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  HashCombine( Seed, Args... );</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> Seed;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">template</span><<span class="keyword">typename</span> CharType></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">struct </span>CStringHash</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> CharType *str )<span class="keyword"> const</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// http://www.cse.yorku.ca/~oz/hash.html</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::size_t Seed = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">while</span>( <span class="keywordtype">size_t</span> Ch = *(str++) )</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Seed = Seed * 65599 + Ch;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> Seed;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">template</span><<span class="keyword">typename</span> CharType></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">struct </span>CStringCompare</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">bool</span> operator()( <span class="keyword">const</span> CharType *str1, <span class="keyword">const</span> CharType *str2 )<span class="keyword">const</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  UNSUPPORTED( <span class="stringliteral">"Template specialization is not implemented"</span> );</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">struct </span>CStringCompare<Char></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">bool</span> operator()( <span class="keyword">const</span> Char *str1, <span class="keyword">const</span> Char *str2 )<span class="keyword">const</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> strcmp( str1, str2 ) == 0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  };</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_hash_map_string_key.html"> 93</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// This constructor can perform implicit const Char* -> HashMapStringKey</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// conversion without copying the string</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>(<span class="keyword">const</span> Char* Str, <span class="keywordtype">bool</span> bMakeCopy = <span class="keyword">false</span>) :</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  StrPtr(<span class="keyword">nullptr</span>),</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  Hash(0)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  VERIFY( Str, <span class="stringliteral">"String pointer cannot be null"</span> );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>( bMakeCopy )</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  MakeCopy( Str );</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  StrPtr = Str;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">explicit</span> <span class="comment">// Make this constructor explicit to avoid unintentional string copies </span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>(<span class="keyword">const</span> String &Str) :</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  StrPtr( <span class="keyword">nullptr</span> ),</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Hash(0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  MakeCopy( Str.c_str() );</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>(<a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a> &&Key) :</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  StringBuff( std::move(Key.StringBuff) ),</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  StrPtr( std::move(Key.StrPtr) ),</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  Hash(0)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  Key.StrPtr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  Key.Hash = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// Disable copy constuctor and assignments. The struct is designed</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// to be initialized at creation time only</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>& operator = ( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>& operator = ( <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>&& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// Comparison operator</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>( StrPtr == RHS.StrPtr )</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Hash member might not have been initialized</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>( (Hash != 0 && RHS.Hash !=0 && Hash != RHS.Hash) || StrPtr == <span class="keyword">nullptr</span> || RHS.StrPtr == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">bool</span> IsEqual = strcmp( StrPtr, RHS.StrPtr ) == 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#if LOG_HASH_CONFLICTS</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span>( Hash != 0 && RHS.Hash !=0 && Hash == RHS.Hash && !IsEqual )</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Unequal strings \""</span>, StrPtr, <span class="stringliteral">"\" and \""</span>, RHS.StrPtr, <span class="stringliteral">"\" hashed to the same bucket. "</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="stringliteral">"You may want to use better hash function. You may disable this warning by defining LOG_HASH_CONFLICTS to 0"</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> IsEqual;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordtype">size_t</span> GetHash()<span class="keyword">const</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span>( Hash == 0 )</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  Hash = CStringHash<Char>()(StrPtr);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> Hash;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">const</span> Char* GetStr()<span class="keyword">const</span>{ <span class="keywordflow">return</span> StrPtr; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordtype">void</span> MakeCopy( <span class="keyword">const</span> Char* Str )</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">auto</span> LenWithZeroTerm = strlen( Str ) + 1;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  StringBuff.reset( <span class="keyword">new</span> <span class="keywordtype">char</span>[ LenWithZeroTerm ] );</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  memcpy( StringBuff.get(), Str, LenWithZeroTerm );</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  StrPtr = StringBuff.get();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// !!! WARNING !!! </span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// We can't use String to store the buffer, because String default </span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// constructor always allocates memory even when the string is empty, </span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// nor can we use vector for the same reason</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  std::unique_ptr< Char[] > StringBuff; <span class="comment">// Must be declared first</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">const</span> Char* StrPtr;<span class="comment">// Must be declared after StringBuff</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">mutable</span> <span class="keywordtype">size_t</span> Hash;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  };</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::HashMapStringKey></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">Diligent::HashMapStringKey</a> &Key )<span class="keyword"> const</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">return</span> Key.GetHash();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  } </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  };</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <functional></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define LOG_HASH_CONFLICTS 1</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// http://www.boost.org/doc/libs/1_35_0/doc/html/hash/combine.html</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">void</span> HashCombine(std::size_t &Seed, <span class="keyword">const</span> T& Val)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  Seed ^= std::hash<T>()(Val) + 0x9e3779b9 + (Seed << 6) + (Seed >> 2);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">template</span><<span class="keyword">typename</span> FirstArgType, <span class="keyword">typename</span>... RestArgsType></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span> HashCombine( std::size_t &Seed, <span class="keyword">const</span> FirstArgType& FirstArg, <span class="keyword">const</span> RestArgsType&... RestArgs )</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  HashCombine( Seed, FirstArg );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  HashCombine( Seed, RestArgs... ); <span class="comment">// recursive call using pack expansion syntax</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">template</span><<span class="keyword">typename</span>... ArgsType></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::size_t ComputeHash( <span class="keyword">const</span> ArgsType&... Args )</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  std::size_t Seed = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  HashCombine( Seed, Args... );</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> Seed;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">template</span><<span class="keyword">typename</span> CharType></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">struct </span>CStringHash</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> CharType *str )<span class="keyword"> const</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// http://www.cse.yorku.ca/~oz/hash.html</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::size_t Seed = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">while</span>( <span class="keywordtype">size_t</span> Ch = *(str++) )</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Seed = Seed * 65599 + Ch;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> Seed;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">template</span><<span class="keyword">typename</span> CharType></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">struct </span>CStringCompare</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">bool</span> operator()( <span class="keyword">const</span> CharType *str1, <span class="keyword">const</span> CharType *str2 )<span class="keyword">const</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  UNSUPPORTED( <span class="stringliteral">"Template specialization is not implemented"</span> );</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">struct </span>CStringCompare<Char></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">bool</span> operator()( <span class="keyword">const</span> Char *str1, <span class="keyword">const</span> Char *str2 )<span class="keyword">const</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> strcmp( str1, str2 ) == 0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  };</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_hash_map_string_key.html"> 93</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// This constructor can perform implicit const Char* -> HashMapStringKey</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// conversion without copying the string</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>(<span class="keyword">const</span> Char* Str, <span class="keywordtype">bool</span> bMakeCopy = <span class="keyword">false</span>) :</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  StrPtr(<span class="keyword">nullptr</span>),</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  Hash(0)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  VERIFY( Str, <span class="stringliteral">"String pointer cannot be null"</span> );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>( bMakeCopy )</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  MakeCopy( Str );</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  StrPtr = Str;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">explicit</span> <span class="comment">// Make this constructor explicit to avoid unintentional string copies </span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>(<span class="keyword">const</span> String &Str) :</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  StrPtr( <span class="keyword">nullptr</span> ),</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Hash(0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  MakeCopy( Str.c_str() );</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>(<a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a> &&Key) :</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  StringBuff( std::move(Key.StringBuff) ),</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  StrPtr( std::move(Key.StrPtr) ),</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  Hash(0)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  Key.StrPtr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  Key.Hash = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// Disable copy constuctor and assignments. The struct is designed</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// to be initialized at creation time only</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>& operator = ( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>& operator = ( <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>&& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// Comparison operator</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">HashMapStringKey</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>( StrPtr == RHS.StrPtr )</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Hash member might not have been initialized</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>( (Hash != 0 && RHS.Hash !=0 && Hash != RHS.Hash) || StrPtr == <span class="keyword">nullptr</span> || RHS.StrPtr == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">bool</span> IsEqual = strcmp( StrPtr, RHS.StrPtr ) == 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#if LOG_HASH_CONFLICTS</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span>( Hash != 0 && RHS.Hash !=0 && Hash == RHS.Hash && !IsEqual )</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Unequal strings \""</span>, StrPtr, <span class="stringliteral">"\" and \""</span>, RHS.StrPtr, <span class="stringliteral">"\" hashed to the same bucket. "</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="stringliteral">"You may want to use better hash function. You may disable this warning by defining LOG_HASH_CONFLICTS to 0"</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> IsEqual;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordtype">size_t</span> GetHash()<span class="keyword">const</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span>( Hash == 0 )</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  Hash = CStringHash<Char>()(StrPtr);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> Hash;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">const</span> Char* GetStr()<span class="keyword">const</span>{ <span class="keywordflow">return</span> StrPtr; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordtype">void</span> MakeCopy( <span class="keyword">const</span> Char* Str )</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">auto</span> LenWithZeroTerm = strlen( Str ) + 1;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  StringBuff.reset( <span class="keyword">new</span> <span class="keywordtype">char</span>[ LenWithZeroTerm ] );</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  memcpy( StringBuff.get(), Str, LenWithZeroTerm );</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  StrPtr = StringBuff.get();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// !!! WARNING !!! </span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// We can't use String to store the buffer, because String default </span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// constructor always allocates memory even when the string is empty, </span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// nor can we use vector for the same reason</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  std::unique_ptr< Char[] > StringBuff; <span class="comment">// Must be declared first</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">const</span> Char* StrPtr;<span class="comment">// Must be declared after StringBuff</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">mutable</span> <span class="keywordtype">size_t</span> Hash;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  };</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::HashMapStringKey></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_hash_map_string_key.html">Diligent::HashMapStringKey</a> &Key )<span class="keyword"> const</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">return</span> Key.GetHash();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  } </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  };</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> <div class="ttc" id="struct_diligent_1_1_hash_map_string_key_html"><div class="ttname"><a href="struct_diligent_1_1_hash_map_string_key.html">Diligent::HashMapStringKey</a></div><div class="ttdoc">This helper structure is intended to facilitate using strings as a hash table key. It provides constructors that can make a copy of the source string or just keep pointer to it, which enables searching in the hash using raw const Char* pointers. </div><div class="ttdef"><b>Definition:</b> HashUtils.h:93</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_input_layout_8h_source.html b/doc/html/_input_layout_8h_source.html index 3152acf3..60ba4d99 100644 --- a/doc/html/_input_layout_8h_source.html +++ b/doc/html/_input_layout_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">InputLayout.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">static</span> constexpr Uint32 iMaxLayoutElements = 16;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html"> 37</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_layout_element.html">LayoutElement</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#add2a1cf886367647a6b5897793328ba9"> 40</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_layout_element.html#add2a1cf886367647a6b5897793328ba9">InputIndex</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#abeef86e4713b4345f1b11887f4be5eb8"> 43</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_layout_element.html#abeef86e4713b4345f1b11887f4be5eb8">BufferSlot</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#ab3e9d89fa173939af8b440d597a3ff49"> 46</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_layout_element.html#ab3e9d89fa173939af8b440d597a3ff49">NumComponents</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#ac271843df1d7e276a504c12b4315e6e0"> 49</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> <a class="code" href="struct_diligent_1_1_layout_element.html#ac271843df1d7e276a504c12b4315e6e0">ValueType</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#abd37625caf1c0490740517b662a8a1ae"> 56</a></span>  Bool <a class="code" href="struct_diligent_1_1_layout_element.html#abd37625caf1c0490740517b662a8a1ae">IsNormalized</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#af3f43010e8ffcd1a9b92e500ae0eefaf"> 62</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_layout_element.html#af3f43010e8ffcd1a9b92e500ae0eefaf">RelativeOffset</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804f"> 65</a></span>  <span class="keyword">enum</span> <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804f">FREQUENCY</a> : Int32</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa2787941ec89050988624688469c067f4"> 68</a></span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa2787941ec89050988624688469c067f4">FREQUENCY_UNDEFINED</a> = 0,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa82c41371a1ea79eb28874bdda04b24b7"> 71</a></span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa82c41371a1ea79eb28874bdda04b24b7">FREQUENCY_PER_VERTEX</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804faac2a458944ea8bbfec153847ad93abe3"> 74</a></span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804faac2a458944ea8bbfec153847ad93abe3">FREQUENCY_PER_INSTANCE</a>,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa5ed3dc2a2aade6d8b7fbc222599dff33"> 77</a></span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa5ed3dc2a2aade6d8b7fbc222599dff33">FREQUENCY_NUM_FREQUENCIES</a></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }Frequency;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a7d7ba6ee279ffdb1ab101c164b32a203"> 82</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_layout_element.html#a7d7ba6ee279ffdb1ab101c164b32a203">InstanceDataStepRate</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#ab26b2052508c0af9bc3020a466b95016"> 85</a></span>  <a class="code" href="struct_diligent_1_1_layout_element.html#ab26b2052508c0af9bc3020a466b95016">LayoutElement</a>(Uint32 _InputIndex = 0, </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  Uint32 _BufferSlot = 0, </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  Uint32 _NumComponents = 0, </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> _ValueType = <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a>,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Bool _IsNormalized = True, </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  Uint32 _RelativeOffset = 0, </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804f">FREQUENCY</a> _Frequency = <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa82c41371a1ea79eb28874bdda04b24b7">FREQUENCY_PER_VERTEX</a>,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  Uint32 _InstanceDataStepRate = 1) : </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#add2a1cf886367647a6b5897793328ba9">InputIndex</a>(_InputIndex),</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#abeef86e4713b4345f1b11887f4be5eb8">BufferSlot</a>(_BufferSlot),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#ab3e9d89fa173939af8b440d597a3ff49">NumComponents</a>(_NumComponents),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#ac271843df1d7e276a504c12b4315e6e0">ValueType</a>(_ValueType),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#abd37625caf1c0490740517b662a8a1ae">IsNormalized</a>(_IsNormalized),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#af3f43010e8ffcd1a9b92e500ae0eefaf">RelativeOffset</a>(_RelativeOffset),</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  Frequency(_Frequency),</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a7d7ba6ee279ffdb1ab101c164b32a203">InstanceDataStepRate</a>(_InstanceDataStepRate)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> };</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_input_layout_desc.html"> 107</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_input_layout_desc.html">InputLayoutDesc</a> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_input_layout_desc.html#a3b6e3b8fcc1557ac07c78320c6ac399a"> 110</a></span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_layout_element.html">LayoutElement</a> *<a class="code" href="struct_diligent_1_1_input_layout_desc.html#a3b6e3b8fcc1557ac07c78320c6ac399a">LayoutElements</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_input_layout_desc.html#a22b13cfa930507a76b6025ee6bf05553"> 112</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_input_layout_desc.html#a22b13cfa930507a76b6025ee6bf05553">NumElements</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="struct_diligent_1_1_input_layout_desc.html">InputLayoutDesc</a>() : </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="struct_diligent_1_1_input_layout_desc.html#a3b6e3b8fcc1557ac07c78320c6ac399a">LayoutElements</a>(nullptr),</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="struct_diligent_1_1_input_layout_desc.html#a22b13cfa930507a76b6025ee6bf05553">NumElements</a>(0)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> }</div><div class="ttc" id="struct_diligent_1_1_layout_element_html_ab3e9d89fa173939af8b440d597a3ff49"><div class="ttname"><a href="struct_diligent_1_1_layout_element.html#ab3e9d89fa173939af8b440d597a3ff49">Diligent::LayoutElement::NumComponents</a></div><div class="ttdeci">Uint32 NumComponents</div><div class="ttdoc">Number of components in the element. Allowed values are 1, 2, 3, and 4. </div><div class="ttdef"><b>Definition:</b> InputLayout.h:46</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">static</span> constexpr Uint32 iMaxLayoutElements = 16;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html"> 37</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_layout_element.html">LayoutElement</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#add2a1cf886367647a6b5897793328ba9"> 40</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_layout_element.html#add2a1cf886367647a6b5897793328ba9">InputIndex</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#abeef86e4713b4345f1b11887f4be5eb8"> 43</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_layout_element.html#abeef86e4713b4345f1b11887f4be5eb8">BufferSlot</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#ab3e9d89fa173939af8b440d597a3ff49"> 46</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_layout_element.html#ab3e9d89fa173939af8b440d597a3ff49">NumComponents</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#ac271843df1d7e276a504c12b4315e6e0"> 49</a></span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> <a class="code" href="struct_diligent_1_1_layout_element.html#ac271843df1d7e276a504c12b4315e6e0">ValueType</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#abd37625caf1c0490740517b662a8a1ae"> 56</a></span>  Bool <a class="code" href="struct_diligent_1_1_layout_element.html#abd37625caf1c0490740517b662a8a1ae">IsNormalized</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#af3f43010e8ffcd1a9b92e500ae0eefaf"> 62</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_layout_element.html#af3f43010e8ffcd1a9b92e500ae0eefaf">RelativeOffset</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804f"> 65</a></span>  <span class="keyword">enum</span> <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804f">FREQUENCY</a> : Int32</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa2787941ec89050988624688469c067f4"> 68</a></span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa2787941ec89050988624688469c067f4">FREQUENCY_UNDEFINED</a> = 0,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa82c41371a1ea79eb28874bdda04b24b7"> 71</a></span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa82c41371a1ea79eb28874bdda04b24b7">FREQUENCY_PER_VERTEX</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804faac2a458944ea8bbfec153847ad93abe3"> 74</a></span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804faac2a458944ea8bbfec153847ad93abe3">FREQUENCY_PER_INSTANCE</a>,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa5ed3dc2a2aade6d8b7fbc222599dff33"> 77</a></span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa5ed3dc2a2aade6d8b7fbc222599dff33">FREQUENCY_NUM_FREQUENCIES</a></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }Frequency;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#a7d7ba6ee279ffdb1ab101c164b32a203"> 82</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_layout_element.html#a7d7ba6ee279ffdb1ab101c164b32a203">InstanceDataStepRate</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_layout_element.html#ab26b2052508c0af9bc3020a466b95016"> 85</a></span>  <a class="code" href="struct_diligent_1_1_layout_element.html#ab26b2052508c0af9bc3020a466b95016">LayoutElement</a>(Uint32 _InputIndex = 0, </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  Uint32 _BufferSlot = 0, </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  Uint32 _NumComponents = 0, </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957a">VALUE_TYPE</a> _ValueType = <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a>,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Bool _IsNormalized = True, </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  Uint32 _RelativeOffset = 0, </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804f">FREQUENCY</a> _Frequency = <a class="code" href="struct_diligent_1_1_layout_element.html#a0e0d75c026027999ed229831f721804fa82c41371a1ea79eb28874bdda04b24b7">FREQUENCY_PER_VERTEX</a>,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  Uint32 _InstanceDataStepRate = 1) : </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#add2a1cf886367647a6b5897793328ba9">InputIndex</a>(_InputIndex),</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#abeef86e4713b4345f1b11887f4be5eb8">BufferSlot</a>(_BufferSlot),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#ab3e9d89fa173939af8b440d597a3ff49">NumComponents</a>(_NumComponents),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#ac271843df1d7e276a504c12b4315e6e0">ValueType</a>(_ValueType),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#abd37625caf1c0490740517b662a8a1ae">IsNormalized</a>(_IsNormalized),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#af3f43010e8ffcd1a9b92e500ae0eefaf">RelativeOffset</a>(_RelativeOffset),</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  Frequency(_Frequency),</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="struct_diligent_1_1_layout_element.html#a7d7ba6ee279ffdb1ab101c164b32a203">InstanceDataStepRate</a>(_InstanceDataStepRate)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> };</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_input_layout_desc.html"> 107</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_input_layout_desc.html">InputLayoutDesc</a> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_input_layout_desc.html#a3b6e3b8fcc1557ac07c78320c6ac399a"> 110</a></span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_layout_element.html">LayoutElement</a> *<a class="code" href="struct_diligent_1_1_input_layout_desc.html#a3b6e3b8fcc1557ac07c78320c6ac399a">LayoutElements</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_input_layout_desc.html#a22b13cfa930507a76b6025ee6bf05553"> 112</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_input_layout_desc.html#a22b13cfa930507a76b6025ee6bf05553">NumElements</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="struct_diligent_1_1_input_layout_desc.html">InputLayoutDesc</a>() : </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="struct_diligent_1_1_input_layout_desc.html#a3b6e3b8fcc1557ac07c78320c6ac399a">LayoutElements</a>(nullptr),</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="struct_diligent_1_1_input_layout_desc.html#a22b13cfa930507a76b6025ee6bf05553">NumElements</a>(0)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> }</div><div class="ttc" id="struct_diligent_1_1_layout_element_html_ab3e9d89fa173939af8b440d597a3ff49"><div class="ttname"><a href="struct_diligent_1_1_layout_element.html#ab3e9d89fa173939af8b440d597a3ff49">Diligent::LayoutElement::NumComponents</a></div><div class="ttdeci">Uint32 NumComponents</div><div class="ttdoc">Number of components in the element. Allowed values are 1, 2, 3, and 4. </div><div class="ttdef"><b>Definition:</b> InputLayout.h:46</div></div> <div class="ttc" id="struct_diligent_1_1_input_layout_desc_html_a22b13cfa930507a76b6025ee6bf05553"><div class="ttname"><a href="struct_diligent_1_1_input_layout_desc.html#a22b13cfa930507a76b6025ee6bf05553">Diligent::InputLayoutDesc::NumElements</a></div><div class="ttdeci">Uint32 NumElements</div><div class="ttdoc">Number of layout elements. </div><div class="ttdef"><b>Definition:</b> InputLayout.h:112</div></div> <div class="ttc" id="struct_diligent_1_1_layout_element_html_abd37625caf1c0490740517b662a8a1ae"><div class="ttname"><a href="struct_diligent_1_1_layout_element.html#abd37625caf1c0490740517b662a8a1ae">Diligent::LayoutElement::IsNormalized</a></div><div class="ttdeci">Bool IsNormalized</div><div class="ttdoc">For signed and unsigned integer value types (VT_INT8, VT_INT16, VT_INT32, VT_UINT8, VT_UINT16, VT_UINT32) indicates if the value should be normalized to [-1,+1] or [0, 1] range respectively. For floating point types (VT_FLOAT16 and VT_FLOAT32), this member is ignored. </div><div class="ttdef"><b>Definition:</b> InputLayout.h:56</div></div> <div class="ttc" id="struct_diligent_1_1_layout_element_html_add2a1cf886367647a6b5897793328ba9"><div class="ttname"><a href="struct_diligent_1_1_layout_element.html#add2a1cf886367647a6b5897793328ba9">Diligent::LayoutElement::InputIndex</a></div><div class="ttdeci">Uint32 InputIndex</div><div class="ttdoc">Input index of the element, which is specified in the vertex shader. </div><div class="ttdef"><b>Definition:</b> InputLayout.h:40</div></div> @@ -94,7 +94,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_interface_i_d_8h_source.html b/doc/html/_interface_i_d_8h_source.html index 897c9925..e69152e2 100644 --- a/doc/html/_interface_i_d_8h_source.html +++ b/doc/html/_interface_i_d_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">InterfaceID.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstring></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html"> 33</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">INTERFACE_ID</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Data1;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> Data2;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> Data3;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db">Uint8</a> Data4[8];</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">INTERFACE_ID</a>& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> Data1 == rhs.Data1 && </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  Data2 == rhs.Data2 &&</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  Data3 == rhs.Data3 &&</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  std::memcmp(Data4, rhs.Data4, <span class="keyword">sizeof</span>(Data4)) == 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a662bf4fe08440024626cf689ac183b0b"> 50</a></span>  <span class="keyword">static</span> constexpr <a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">INTERFACE_ID</a> <a class="code" href="namespace_diligent.html#a662bf4fe08440024626cf689ac183b0b">IID_Unknown</a> = { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstring></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html"> 33</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">INTERFACE_ID</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Data1;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> Data2;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> Data3;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db">Uint8</a> Data4[8];</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">INTERFACE_ID</a>& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> Data1 == rhs.Data1 && </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  Data2 == rhs.Data2 &&</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  Data3 == rhs.Data3 &&</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  std::memcmp(Data4, rhs.Data4, <span class="keyword">sizeof</span>(Data4)) == 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a662bf4fe08440024626cf689ac183b0b"> 50</a></span>  <span class="keyword">static</span> constexpr <a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">INTERFACE_ID</a> <a class="code" href="namespace_diligent.html#a662bf4fe08440024626cf689ac183b0b">IID_Unknown</a> = { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a3392c10112f826c3bcc60366e0f533db"><div class="ttname"><a href="namespace_diligent.html#a3392c10112f826c3bcc60366e0f533db">Diligent::Uint8</a></div><div class="ttdeci">uint8_t Uint8</div><div class="ttdoc">8-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:41</div></div> <div class="ttc" id="namespace_diligent_html_aed4157b3402532cf891c93eac3b41479"><div class="ttname"><a href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Diligent::Uint16</a></div><div class="ttdeci">uint16_t Uint16</div><div class="ttdoc">16-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:40</div></div> <div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> diff --git a/doc/html/_linux_debug_8h_source.html b/doc/html/_linux_debug_8h_source.html index 1d71c91a..487f4f9e 100644 --- a/doc/html/_linux_debug_8h_source.html +++ b/doc/html/_linux_debug_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">LinuxDebug.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformDebug.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>LinuxDebug : <span class="keyword">public</span> BasicPlatformDebug</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> AssertionFailed( <span class="keyword">const</span> Diligent::Char *Message, <span class="keyword">const</span> <span class="keywordtype">char</span> *Function, <span class="keyword">const</span> <span class="keywordtype">char</span> *File, <span class="keywordtype">int</span> Line );</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> OutputDebugMessage( DebugMessageSeverity Severity, <span class="keyword">const</span> Diligent::Char *Message );</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> };</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformDebug.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>LinuxDebug : <span class="keyword">public</span> BasicPlatformDebug</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> AssertionFailed( <span class="keyword">const</span> Diligent::Char *Message, <span class="keyword">const</span> <span class="keywordtype">char</span> *Function, <span class="keyword">const</span> <span class="keywordtype">char</span> *File, <span class="keywordtype">int</span> Line );</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> OutputDebugMessage( DebugMessageSeverity Severity, <span class="keyword">const</span> Diligent::Char *Message );</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> };</div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_linux_file_system_8h_source.html b/doc/html/_linux_file_system_8h_source.html index 12db6534..0898ecb0 100644 --- a/doc/html/_linux_file_system_8h_source.html +++ b/doc/html/_linux_file_system_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">LinuxFileSystem.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicFileSystem.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "StandardFile.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">using</span> LinuxFile = StandardFile;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">struct </span>LinuxFileSystem : <span class="keyword">public</span> BasicFileSystem</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">static</span> LinuxFile* OpenFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Diligent::Char GetSlashSymbol(){ <span class="keywordflow">return</span> <span class="charliteral">'/'</span>; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> FileExists( <span class="keyword">const</span> Diligent::Char *strFilePath );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> PathExists( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> CreateDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ClearDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> DeleteFile( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">static</span> std::vector<std::unique_ptr<FindFileData>> Search(<span class="keyword">const</span> Diligent::Char *SearchPattern);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicFileSystem.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "StandardFile.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">using</span> LinuxFile = StandardFile;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">struct </span>LinuxFileSystem : <span class="keyword">public</span> BasicFileSystem</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">static</span> LinuxFile* OpenFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Diligent::Char GetSlashSymbol(){ <span class="keywordflow">return</span> <span class="charliteral">'/'</span>; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> FileExists( <span class="keyword">const</span> Diligent::Char *strFilePath );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> PathExists( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> CreateDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ClearDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> DeleteFile( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">static</span> std::vector<std::unique_ptr<FindFileData>> Search(<span class="keyword">const</span> Diligent::Char *SearchPattern);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_linux_platform_definitions_8h_source.html b/doc/html/_linux_platform_definitions_8h_source.html index ee3fb658..cbe1fa8e 100644 --- a/doc/html/_linux_platform_definitions_8h_source.html +++ b/doc/html/_linux_platform_definitions_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">LinuxPlatformDefinitions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstddef></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">template</span> <<span class="keyword">typename</span> _CountofType, std::<span class="keywordtype">size_t</span> _SizeOfArray></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> char (*__countof_helper(_CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define _countof(_Array) (sizeof(*__countof_helper(_Array)) + 0)</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstddef></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">template</span> <<span class="keyword">typename</span> _CountofType, std::<span class="keywordtype">size_t</span> _SizeOfArray></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> char (*__countof_helper(_CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define _countof(_Array) (sizeof(*__countof_helper(_Array)) + 0)</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_linux_platform_misc_8h_source.html b/doc/html/_linux_platform_misc_8h_source.html index 7534ef0b..b485a44e 100644 --- a/doc/html/_linux_platform_misc_8h_source.html +++ b/doc/html/_linux_platform_misc_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">LinuxPlatformMisc.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformMisc.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">struct </span>LinuxMisc : <span class="keyword">public</span> BasicPlatformMisc</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetMSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Returns the number of leading 0-bits in x, starting at the </span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// most significant bit position. If x is 0, the result is undefined.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">auto</span> LeadingZeros = __builtin_clz(Val);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">auto</span> MSB = 31 - LeadingZeros;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  VERIFY_EXPR(MSB == BasicPlatformMisc::GetMSB(Val));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> MSB;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformMisc.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">struct </span>LinuxMisc : <span class="keyword">public</span> BasicPlatformMisc</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetMSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Returns the number of leading 0-bits in x, starting at the </span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// most significant bit position. If x is 0, the result is undefined.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">auto</span> LeadingZeros = __builtin_clz(Val);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">auto</span> MSB = 31 - LeadingZeros;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  VERIFY_EXPR(MSB == BasicPlatformMisc::GetMSB(Val));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> MSB;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_lock_helper_8h_source.html b/doc/html/_lock_helper_8h_source.html index 2e1664d5..22a68ff6 100644 --- a/doc/html/_lock_helper_8h_source.html +++ b/doc/html/_lock_helper_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">LockHelper.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <thread></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <mutex></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <condition_variable></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Atomics.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_threading_tools.html">ThreadingTools</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>LockFlag</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">enum</span> {LOCK_FLAG_UNLOCKED = 0, LOCK_FLAG_LOCKED = 1};</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  LockFlag(Atomics::Long InitFlag = LOCK_FLAG_UNLOCKED)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">//m_Flag.store(InitFlag);</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_Flag = InitFlag;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">operator</span> Atomics::Long()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_Flag;}</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">friend</span> <span class="keyword">class </span>LockHelper;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  Atomics::AtomicLong m_Flag;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">class </span>LockHelper</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  LockHelper() :</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_pLockFlag(nullptr)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  LockHelper(LockFlag &LockFlag) :</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_pLockFlag(nullptr)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  Lock(LockFlag);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  LockHelper( LockHelper &&LockHelper ) :</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_pLockFlag( <a class="code" href="namespacestd.html">std</a>::move(LockHelper.m_pLockFlag) )</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  LockHelper.m_pLockFlag = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">const</span> LockHelper& operator = (LockHelper &&LockHelper)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_pLockFlag = std::move( LockHelper.m_pLockFlag );</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  LockHelper.m_pLockFlag = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  ~LockHelper()</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Unlock();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> UnsafeTryLock(LockFlag &LockFlag)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> Atomics::AtomicCompareExchange( LockFlag.m_Flag, </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  static_cast<Atomics::Long>( LockFlag::LOCK_FLAG_LOCKED ), </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  static_cast<Atomics::Long>( LockFlag::LOCK_FLAG_UNLOCKED) ) == LockFlag::LOCK_FLAG_UNLOCKED;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">bool</span> TryLock(LockFlag &LockFlag)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span>( UnsafeTryLock( LockFlag) )</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_pLockFlag = &LockFlag;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">else</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> UnsafeLock(LockFlag &LockFlag)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">while</span>( !UnsafeTryLock( LockFlag ) )</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  std::this_thread::yield();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">void</span> Lock(LockFlag &LockFlag)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  VERIFY( m_pLockFlag == NULL, <span class="stringliteral">"Object already locked"</span> );</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// Wait for the flag to become unlocked and lock it</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">while</span>( !TryLock( LockFlag ) )</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  std::this_thread::yield();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> UnsafeUnlock(LockFlag &LockFlag)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  LockFlag.m_Flag = LockFlag::LOCK_FLAG_UNLOCKED;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> Unlock()</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span>( m_pLockFlag )</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  UnsafeUnlock(*m_pLockFlag);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_pLockFlag = NULL;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  LockFlag *m_pLockFlag;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  LockHelper( <span class="keyword">const</span> LockHelper &LockHelper );</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">const</span> LockHelper& operator = ( <span class="keyword">const</span> LockHelper &LockHelper );</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> };</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">class </span>Signal</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  Signal() {}</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// http://en.cppreference.com/w/cpp/thread/condition_variable</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">void</span> Trigger()</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// The thread that intends to modify the variable has to</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// * acquire a std::mutex (typically via std::lock_guard)</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// * perform the modification while the lock is held</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// * execute notify_one or notify_all on the std::condition_variable (the lock does not need to be held for notification) </span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// std::condition_variable works only with std::unique_lock<std::mutex></span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  std::lock_guard<std::mutex> Lock(m_Mutex);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_bIsTriggered = <span class="keyword">true</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// Unlocking is done before notifying, to avoid waking up the waiting </span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// thread only to block again (see notify_one for details)</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_CondVar.notify_one();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">void</span> Wait()</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// Any thread that intends to wait on std::condition_variable has to</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// * acquire a std::unique_lock<std::mutex>, on the SAME MUTEX as used to protect the shared variable</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// * execute wait, wait_for, or wait_until. The wait operations atomically release the mutex </span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// and suspend the execution of the thread.</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// * When the condition variable is notified, a timeout expires, or a spurious wakeup occurs, </span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// the thread is awakened, and the mutex is atomically reacquired: </span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// - The thread should then check the condition and resume waiting if the wake up was spurious.</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  std::unique_lock<std::mutex> Lock(m_Mutex);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span> (!m_bIsTriggered)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_CondVar.wait(Lock, [&] {<span class="keywordflow">return</span> m_bIsTriggered; });</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordtype">void</span> Reset()</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  std::lock_guard<std::mutex> Lock(m_Mutex);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_bIsTriggered = <span class="keyword">false</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">volatile</span> <span class="keywordtype">bool</span> IsTriggered()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_bIsTriggered; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  std::mutex m_Mutex;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  std::condition_variable m_CondVar;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">volatile</span> <span class="keywordtype">bool</span> m_bIsTriggered = <span class="keyword">false</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  Signal(<span class="keyword">const</span> Signal&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  Signal& operator = (<span class="keyword">const</span> Signal&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> };</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div><div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <thread></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <mutex></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <condition_variable></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Atomics.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_threading_tools.html">ThreadingTools</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>LockFlag</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">enum</span> {LOCK_FLAG_UNLOCKED = 0, LOCK_FLAG_LOCKED = 1};</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  LockFlag(Atomics::Long InitFlag = LOCK_FLAG_UNLOCKED)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">//m_Flag.store(InitFlag);</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_Flag = InitFlag;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">operator</span> Atomics::Long()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_Flag;}</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">friend</span> <span class="keyword">class </span>LockHelper;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  Atomics::AtomicLong m_Flag;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">class </span>LockHelper</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  LockHelper() :</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_pLockFlag(nullptr)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  LockHelper(LockFlag &LockFlag) :</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_pLockFlag(nullptr)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  Lock(LockFlag);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  LockHelper( LockHelper &&LockHelper ) :</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_pLockFlag( <a class="code" href="namespacestd.html">std</a>::move(LockHelper.m_pLockFlag) )</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  LockHelper.m_pLockFlag = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">const</span> LockHelper& operator = (LockHelper &&LockHelper)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_pLockFlag = std::move( LockHelper.m_pLockFlag );</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  LockHelper.m_pLockFlag = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  ~LockHelper()</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Unlock();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> UnsafeTryLock(LockFlag &LockFlag)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> Atomics::AtomicCompareExchange( LockFlag.m_Flag, </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  static_cast<Atomics::Long>( LockFlag::LOCK_FLAG_LOCKED ), </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  static_cast<Atomics::Long>( LockFlag::LOCK_FLAG_UNLOCKED) ) == LockFlag::LOCK_FLAG_UNLOCKED;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">bool</span> TryLock(LockFlag &LockFlag)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span>( UnsafeTryLock( LockFlag) )</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_pLockFlag = &LockFlag;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">else</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> UnsafeLock(LockFlag &LockFlag)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">while</span>( !UnsafeTryLock( LockFlag ) )</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  std::this_thread::yield();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">void</span> Lock(LockFlag &LockFlag)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  VERIFY( m_pLockFlag == NULL, <span class="stringliteral">"Object already locked"</span> );</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// Wait for the flag to become unlocked and lock it</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">while</span>( !TryLock( LockFlag ) )</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  std::this_thread::yield();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> UnsafeUnlock(LockFlag &LockFlag)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  LockFlag.m_Flag = LockFlag::LOCK_FLAG_UNLOCKED;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> Unlock()</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span>( m_pLockFlag )</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  UnsafeUnlock(*m_pLockFlag);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_pLockFlag = NULL;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  LockFlag *m_pLockFlag;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  LockHelper( <span class="keyword">const</span> LockHelper &LockHelper );</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">const</span> LockHelper& operator = ( <span class="keyword">const</span> LockHelper &LockHelper );</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> };</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">class </span>Signal</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  Signal() {}</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// http://en.cppreference.com/w/cpp/thread/condition_variable</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">void</span> Trigger()</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// The thread that intends to modify the variable has to</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// * acquire a std::mutex (typically via std::lock_guard)</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// * perform the modification while the lock is held</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// * execute notify_one or notify_all on the std::condition_variable (the lock does not need to be held for notification) </span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// std::condition_variable works only with std::unique_lock<std::mutex></span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  std::lock_guard<std::mutex> Lock(m_Mutex);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_bIsTriggered = <span class="keyword">true</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// Unlocking is done before notifying, to avoid waking up the waiting </span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// thread only to block again (see notify_one for details)</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_CondVar.notify_one();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">void</span> Wait()</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// Any thread that intends to wait on std::condition_variable has to</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// * acquire a std::unique_lock<std::mutex>, on the SAME MUTEX as used to protect the shared variable</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// * execute wait, wait_for, or wait_until. The wait operations atomically release the mutex </span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// and suspend the execution of the thread.</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// * When the condition variable is notified, a timeout expires, or a spurious wakeup occurs, </span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// the thread is awakened, and the mutex is atomically reacquired: </span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// - The thread should then check the condition and resume waiting if the wake up was spurious.</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  std::unique_lock<std::mutex> Lock(m_Mutex);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span> (!m_bIsTriggered)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_CondVar.wait(Lock, [&] {<span class="keywordflow">return</span> m_bIsTriggered; });</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordtype">void</span> Reset()</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  std::lock_guard<std::mutex> Lock(m_Mutex);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_bIsTriggered = <span class="keyword">false</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">volatile</span> <span class="keywordtype">bool</span> IsTriggered()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_bIsTriggered; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  std::mutex m_Mutex;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  std::condition_variable m_CondVar;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">volatile</span> <span class="keywordtype">bool</span> m_bIsTriggered = <span class="keyword">false</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  Signal(<span class="keyword">const</span> Signal&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  Signal& operator = (<span class="keyword">const</span> Signal&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> };</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div><div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> <div class="ttc" id="namespace_threading_tools_html"><div class="ttname"><a href="namespace_threading_tools.html">ThreadingTools</a></div><div class="ttdef"><b>Definition:</b> LockHelper.h:32</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_map_helper_8h_source.html b/doc/html/_map_helper_8h_source.html index 14410dc0..42dfefb6 100644 --- a/doc/html/_map_helper_8h_source.html +++ b/doc/html/_map_helper_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">MapHelper.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">template</span><<span class="keyword">typename</span> DataType, <span class="keywordtype">bool</span> KeepStrongReferences = false></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a7efa028a961444e46cac1af58308878e"> 52</a></span>  <a class="code" href="class_diligent_1_1_map_helper.html#a7efa028a961444e46cac1af58308878e">MapHelper</a>() : </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_pMappedData(nullptr),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_pBuffer(nullptr),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_pContext(nullptr),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_MapType(static_cast<<a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a>>(-1)),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_MapFlags(static_cast<Uint32>(-1))</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a6bd2d032fc46a306e03bcaa09e07faf3"> 63</a></span>  <a class="code" href="class_diligent_1_1_map_helper.html#a6bd2d032fc46a306e03bcaa09e07faf3">MapHelper</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags ) :</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>()</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_map_helper.html#a29122efd373088345e38593b72f00145">Map</a>(pContext, pBuffer, MapType, MapFlags);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a05fa3d2538dacb300390d213ae2b1e40"> 70</a></span>  <a class="code" href="class_diligent_1_1_map_helper.html#a05fa3d2538dacb300390d213ae2b1e40">MapHelper</a>(<a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>&& Helper) :</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_pBuffer( <a class="code" href="namespacestd.html">std</a>::move(Helper.m_pBuffer) ),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_pMappedData( <a class="code" href="namespacestd.html">std</a>::move(Helper.m_pMappedData) ),</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_pContext( <a class="code" href="namespacestd.html">std</a>::move(Helper.m_pContext) ),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_MapType( <a class="code" href="namespacestd.html">std</a>::move(Helper.m_MapType) ),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_MapFlags( <a class="code" href="namespacestd.html">std</a>::move(Helper.m_MapFlags) )</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  Helper.m_pBuffer = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  Helper.m_pContext = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  Helper.m_pMappedData = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Helper.m_MapType = <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a><span class="keyword">></span>(-1);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Helper.m_MapFlags = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#aa99d9b36bc35fe2c5d3f87f9fcab6571"> 85</a></span>  <a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>& <a class="code" href="class_diligent_1_1_map_helper.html#aa99d9b36bc35fe2c5d3f87f9fcab6571">operator = </a>(<a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>&& Helper)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_pBuffer = std::move(Helper.m_pBuffer);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_pMappedData = std::move(Helper.m_pMappedData);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_pContext = std::move( Helper.m_pContext );</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_MapType = std::move(Helper.m_MapType);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_MapFlags = std::move(Helper.m_MapFlags);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  Helper.m_pBuffer = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  Helper.m_pContext = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  Helper.m_pMappedData = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  Helper.m_MapType = <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a><span class="keyword">></span>(-1);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  Helper.m_MapFlags = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a29122efd373088345e38593b72f00145"> 106</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_map_helper.html#a29122efd373088345e38593b72f00145">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  VERIFY(!m_pBuffer && !m_pMappedData && !m_pContext, <span class="stringliteral">"Object already mapped"</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="class_diligent_1_1_map_helper.html#a62664e78fcdd9778302ff19f1c4c0ac6">Unmap</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">auto</span> &BuffDesc = pBuffer-><a class="code" href="class_diligent_1_1_i_buffer.html#a7c88d0d7059bea7d530e112579cef1e2">GetDesc</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  VERIFY(<span class="keyword">sizeof</span>(DataType) <= BuffDesc.uiSizeInBytes, <span class="stringliteral">"Data type size exceeds buffer size"</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_pContext = pContext;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_pBuffer = pBuffer;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_MapType = MapType;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_MapFlags = MapFlags;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_pBuffer->Map(m_pContext, MapType, MapFlags, (PVoid&)m_pMappedData);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  VERIFY( m_pMappedData, <span class="stringliteral">"Map failed"</span> );</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a62664e78fcdd9778302ff19f1c4c0ac6"> 123</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_map_helper.html#a62664e78fcdd9778302ff19f1c4c0ac6">Unmap</a>()</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span>( m_pBuffer )</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_pBuffer->Unmap(m_pContext, m_MapType, m_MapFlags);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_pBuffer = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_MapType = <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a><span class="keyword">></span>(-1);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_MapFlags = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_pContext = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_pMappedData = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#ae6173cf9a43e72ec1f2d2cf3f6b56021"> 137</a></span>  <span class="keyword">operator</span> DataType* (){<span class="keywordflow">return</span> m_pMappedData;}</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a336fde9123de98e6cef49e46b3416896"> 140</a></span>  <span class="keyword">operator</span> <span class="keyword">const</span> DataType* ()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pMappedData;}</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a9a03b852a44669d4f08aa12cc4fa4f7c"> 143</a></span>  DataType* <a class="code" href="class_diligent_1_1_map_helper.html#a9a03b852a44669d4f08aa12cc4fa4f7c">operator-></a>() {<span class="keywordflow">return</span> m_pMappedData;}</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a468bff3eea36a37271053ba0feb7cd49"> 146</a></span>  <span class="keyword">const</span> DataType* <a class="code" href="class_diligent_1_1_map_helper.html#a468bff3eea36a37271053ba0feb7cd49">operator-></a>()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_pMappedData;}</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a029c5809ad62fe02fd7b8453bff4208a"> 149</a></span>  <a class="code" href="class_diligent_1_1_map_helper.html#a029c5809ad62fe02fd7b8453bff4208a">~MapHelper</a>()</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="class_diligent_1_1_map_helper.html#a62664e78fcdd9778302ff19f1c4c0ac6">Unmap</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="class_diligent_1_1_map_helper.html#a7efa028a961444e46cac1af58308878e">MapHelper</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>&);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>& <a class="code" href="class_diligent_1_1_map_helper.html#aa99d9b36bc35fe2c5d3f87f9fcab6571">operator=</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>&);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">template</span><<span class="keyword">typename</span> PtrType, <span class="keywordtype">bool</span> UseStrongReference></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">struct </span>PtrTypeSelector{};</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">template</span><<span class="keyword">typename</span> PtrType></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">struct </span>PtrTypeSelector<PtrType, true></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">typedef</span> RefCntAutoPtr<PtrType> Type;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">template</span><<span class="keyword">typename</span> PtrType></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">struct </span>PtrTypeSelector<PtrType, false></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">typedef</span> PtrType* Type;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  };</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">typename</span> PtrTypeSelector<IBuffer, KeepStrongReferences>::Type m_pBuffer;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">typename</span> PtrTypeSelector<IDeviceContext, KeepStrongReferences>::Type m_pContext;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  DataType *m_pMappedData;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> m_MapType;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  Uint32 m_MapFlags;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> };</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="ttc" id="class_diligent_1_1_map_helper_html_a468bff3eea36a37271053ba0feb7cd49"><div class="ttname"><a href="class_diligent_1_1_map_helper.html#a468bff3eea36a37271053ba0feb7cd49">Diligent::MapHelper::operator-></a></div><div class="ttdeci">const DataType * operator->() const</div><div class="ttdoc">Operator const -> </div><div class="ttdef"><b>Definition:</b> MapHelper.h:146</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">template</span><<span class="keyword">typename</span> DataType, <span class="keywordtype">bool</span> KeepStrongReferences = false></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a7efa028a961444e46cac1af58308878e"> 52</a></span>  <a class="code" href="class_diligent_1_1_map_helper.html#a7efa028a961444e46cac1af58308878e">MapHelper</a>() : </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_pMappedData(nullptr),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_pBuffer(nullptr),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_pContext(nullptr),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_MapType(static_cast<<a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a>>(-1)),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_MapFlags(static_cast<Uint32>(-1))</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a6bd2d032fc46a306e03bcaa09e07faf3"> 63</a></span>  <a class="code" href="class_diligent_1_1_map_helper.html#a6bd2d032fc46a306e03bcaa09e07faf3">MapHelper</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags ) :</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>()</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_map_helper.html#a29122efd373088345e38593b72f00145">Map</a>(pContext, pBuffer, MapType, MapFlags);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a05fa3d2538dacb300390d213ae2b1e40"> 70</a></span>  <a class="code" href="class_diligent_1_1_map_helper.html#a05fa3d2538dacb300390d213ae2b1e40">MapHelper</a>(<a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>&& Helper) :</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_pBuffer( <a class="code" href="namespacestd.html">std</a>::move(Helper.m_pBuffer) ),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_pMappedData( <a class="code" href="namespacestd.html">std</a>::move(Helper.m_pMappedData) ),</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_pContext( <a class="code" href="namespacestd.html">std</a>::move(Helper.m_pContext) ),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_MapType( <a class="code" href="namespacestd.html">std</a>::move(Helper.m_MapType) ),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_MapFlags( <a class="code" href="namespacestd.html">std</a>::move(Helper.m_MapFlags) )</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  Helper.m_pBuffer = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  Helper.m_pContext = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  Helper.m_pMappedData = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Helper.m_MapType = <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a><span class="keyword">></span>(-1);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Helper.m_MapFlags = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#aa99d9b36bc35fe2c5d3f87f9fcab6571"> 85</a></span>  <a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>& <a class="code" href="class_diligent_1_1_map_helper.html#aa99d9b36bc35fe2c5d3f87f9fcab6571">operator = </a>(<a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>&& Helper)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_pBuffer = std::move(Helper.m_pBuffer);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_pMappedData = std::move(Helper.m_pMappedData);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_pContext = std::move( Helper.m_pContext );</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_MapType = std::move(Helper.m_MapType);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_MapFlags = std::move(Helper.m_MapFlags);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  Helper.m_pBuffer = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  Helper.m_pContext = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  Helper.m_pMappedData = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  Helper.m_MapType = <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a><span class="keyword">></span>(-1);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  Helper.m_MapFlags = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a29122efd373088345e38593b72f00145"> 106</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_map_helper.html#a29122efd373088345e38593b72f00145">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  VERIFY(!m_pBuffer && !m_pMappedData && !m_pContext, <span class="stringliteral">"Object already mapped"</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="class_diligent_1_1_map_helper.html#a62664e78fcdd9778302ff19f1c4c0ac6">Unmap</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">auto</span> &BuffDesc = pBuffer-><a class="code" href="class_diligent_1_1_i_buffer.html#a7c88d0d7059bea7d530e112579cef1e2">GetDesc</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  VERIFY(<span class="keyword">sizeof</span>(DataType) <= BuffDesc.uiSizeInBytes, <span class="stringliteral">"Data type size exceeds buffer size"</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_pContext = pContext;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_pBuffer = pBuffer;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_MapType = MapType;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_MapFlags = MapFlags;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_pBuffer->Map(m_pContext, MapType, MapFlags, (PVoid&)m_pMappedData);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  VERIFY( m_pMappedData, <span class="stringliteral">"Map failed"</span> );</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a62664e78fcdd9778302ff19f1c4c0ac6"> 123</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_map_helper.html#a62664e78fcdd9778302ff19f1c4c0ac6">Unmap</a>()</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span>( m_pBuffer )</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_pBuffer->Unmap(m_pContext, m_MapType, m_MapFlags);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_pBuffer = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_MapType = <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a><span class="keyword">></span>(-1);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_MapFlags = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_pContext = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_pMappedData = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#ae6173cf9a43e72ec1f2d2cf3f6b56021"> 137</a></span>  <span class="keyword">operator</span> DataType* (){<span class="keywordflow">return</span> m_pMappedData;}</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a336fde9123de98e6cef49e46b3416896"> 140</a></span>  <span class="keyword">operator</span> <span class="keyword">const</span> DataType* ()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pMappedData;}</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a9a03b852a44669d4f08aa12cc4fa4f7c"> 143</a></span>  DataType* <a class="code" href="class_diligent_1_1_map_helper.html#a9a03b852a44669d4f08aa12cc4fa4f7c">operator-></a>() {<span class="keywordflow">return</span> m_pMappedData;}</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a468bff3eea36a37271053ba0feb7cd49"> 146</a></span>  <span class="keyword">const</span> DataType* <a class="code" href="class_diligent_1_1_map_helper.html#a468bff3eea36a37271053ba0feb7cd49">operator-></a>()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_pMappedData;}</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="class_diligent_1_1_map_helper.html#a029c5809ad62fe02fd7b8453bff4208a"> 149</a></span>  <a class="code" href="class_diligent_1_1_map_helper.html#a029c5809ad62fe02fd7b8453bff4208a">~MapHelper</a>()</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="class_diligent_1_1_map_helper.html#a62664e78fcdd9778302ff19f1c4c0ac6">Unmap</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="class_diligent_1_1_map_helper.html#a7efa028a961444e46cac1af58308878e">MapHelper</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>&);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>& <a class="code" href="class_diligent_1_1_map_helper.html#aa99d9b36bc35fe2c5d3f87f9fcab6571">operator=</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_map_helper.html">MapHelper</a>&);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">template</span><<span class="keyword">typename</span> PtrType, <span class="keywordtype">bool</span> UseStrongReference></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">struct </span>PtrTypeSelector{};</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">template</span><<span class="keyword">typename</span> PtrType></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">struct </span>PtrTypeSelector<PtrType, true></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">typedef</span> RefCntAutoPtr<PtrType> Type;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">template</span><<span class="keyword">typename</span> PtrType></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">struct </span>PtrTypeSelector<PtrType, false></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">typedef</span> PtrType* Type;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  };</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">typename</span> PtrTypeSelector<IBuffer, KeepStrongReferences>::Type m_pBuffer;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">typename</span> PtrTypeSelector<IDeviceContext, KeepStrongReferences>::Type m_pContext;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  DataType *m_pMappedData;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> m_MapType;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  Uint32 m_MapFlags;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> };</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="ttc" id="class_diligent_1_1_map_helper_html_a468bff3eea36a37271053ba0feb7cd49"><div class="ttname"><a href="class_diligent_1_1_map_helper.html#a468bff3eea36a37271053ba0feb7cd49">Diligent::MapHelper::operator-></a></div><div class="ttdeci">const DataType * operator->() const</div><div class="ttdoc">Operator const -> </div><div class="ttdef"><b>Definition:</b> MapHelper.h:146</div></div> <div class="ttc" id="class_diligent_1_1_map_helper_html"><div class="ttname"><a href="class_diligent_1_1_map_helper.html">Diligent::MapHelper</a></div><div class="ttdoc">Facilitates resource mapping. </div><div class="ttdef"><b>Definition:</b> MapHelper.h:47</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_map_helper_html_a62664e78fcdd9778302ff19f1c4c0ac6"><div class="ttname"><a href="class_diligent_1_1_map_helper.html#a62664e78fcdd9778302ff19f1c4c0ac6">Diligent::MapHelper::Unmap</a></div><div class="ttdeci">void Unmap()</div><div class="ttdoc">Unamps the resource and resets the object state to default. </div><div class="ttdef"><b>Definition:</b> MapHelper.h:123</div></div> @@ -90,7 +90,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_memory_allocator_8h_source.html b/doc/html/_memory_allocator_8h_source.html index c03f4d1b..1456bf28 100644 --- a/doc/html/_memory_allocator_8h_source.html +++ b/doc/html/_memory_allocator_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">MemoryAllocator.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_memory_allocator.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_i_memory_allocator.html#ae549f54650388662281dfbfaf3a4f36d">Allocate</a>( <span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a> dbgLineNumber) = 0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_memory_allocator.html#ae1c455e7ad0f4e80b0f1bf49eb2fd8de">Free</a>(<span class="keywordtype">void</span> *Ptr) = 0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="class_diligent_1_1_i_memory_allocator_html_ae549f54650388662281dfbfaf3a4f36d"><div class="ttname"><a href="class_diligent_1_1_i_memory_allocator.html#ae549f54650388662281dfbfaf3a4f36d">Diligent::IMemoryAllocator::Allocate</a></div><div class="ttdeci">virtual void * Allocate(size_t Size, const Char *dbgDescription, const char *dbgFileName, const Int32 dbgLineNumber)=0</div><div class="ttdoc">Allocates block of memory. </div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_memory_allocator.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_i_memory_allocator.html#ae549f54650388662281dfbfaf3a4f36d">Allocate</a>( <span class="keywordtype">size_t</span> Size, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a645a22e6073f4b6d0c46d95b9bc11fdb">Int32</a> dbgLineNumber) = 0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_memory_allocator.html#ae1c455e7ad0f4e80b0f1bf49eb2fd8de">Free</a>(<span class="keywordtype">void</span> *Ptr) = 0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="class_diligent_1_1_i_memory_allocator_html_ae549f54650388662281dfbfaf3a4f36d"><div class="ttname"><a href="class_diligent_1_1_i_memory_allocator.html#ae549f54650388662281dfbfaf3a4f36d">Diligent::IMemoryAllocator::Allocate</a></div><div class="ttdeci">virtual void * Allocate(size_t Size, const Char *dbgDescription, const char *dbgFileName, const Int32 dbgLineNumber)=0</div><div class="ttdoc">Allocates block of memory. </div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="class_diligent_1_1_i_memory_allocator_html"><div class="ttname"><a href="class_diligent_1_1_i_memory_allocator.html">Diligent::IMemoryAllocator</a></div><div class="ttdoc">Base interface for a raw memory allocator. </div><div class="ttdef"><b>Definition:</b> MemoryAllocator.h:35</div></div> <div class="ttc" id="class_diligent_1_1_i_memory_allocator_html_ae1c455e7ad0f4e80b0f1bf49eb2fd8de"><div class="ttname"><a href="class_diligent_1_1_i_memory_allocator.html#ae1c455e7ad0f4e80b0f1bf49eb2fd8de">Diligent::IMemoryAllocator::Free</a></div><div class="ttdeci">virtual void Free(void *Ptr)=0</div><div class="ttdoc">Releases memory. </div></div> diff --git a/doc/html/_object_8h_source.html b/doc/html/_object_8h_source.html index 52fc9092..6516b209 100644 --- a/doc/html/_object_8h_source.html +++ b/doc/html/_object_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">Object.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "InterfaceID.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ReferenceCounters.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_object.html"> 36</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_object.html">IObject</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">using</span> CounterValueType = IReferenceCounters::CounterValueType;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_object.html#a3fd6c6410ae725203d808a31b2638450">QueryInterface</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">Diligent::INTERFACE_ID</a> &IID, <a class="code" href="class_diligent_1_1_i_object.html">IObject</a> **ppInterface ) = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_object.html#a266214a25c23708df6ccdb04de6ecb9b">AddRef</a>() = 0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_object.html#a9c50774a7024e9e833267b7ee30c4853">Release</a>() = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_reference_counters.html">IReferenceCounters</a>* <a class="code" href="class_diligent_1_1_i_object.html#aea6c7b63a8ca0bab24d7f8b0bcfbb745">GetReferenceCounters</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }</div><div class="ttc" id="class_diligent_1_1_i_object_html_a266214a25c23708df6ccdb04de6ecb9b"><div class="ttname"><a href="class_diligent_1_1_i_object.html#a266214a25c23708df6ccdb04de6ecb9b">Diligent::IObject::AddRef</a></div><div class="ttdeci">virtual CounterValueType AddRef()=0</div><div class="ttdoc">Increments the number of strong references by 1. </div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "InterfaceID.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ReferenceCounters.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_object.html"> 36</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_object.html">IObject</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">using</span> CounterValueType = IReferenceCounters::CounterValueType;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_object.html#a3fd6c6410ae725203d808a31b2638450">QueryInterface</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_i_n_t_e_r_f_a_c_e___i_d.html">Diligent::INTERFACE_ID</a> &IID, <a class="code" href="class_diligent_1_1_i_object.html">IObject</a> **ppInterface ) = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_object.html#a266214a25c23708df6ccdb04de6ecb9b">AddRef</a>() = 0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_object.html#a9c50774a7024e9e833267b7ee30c4853">Release</a>() = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_reference_counters.html">IReferenceCounters</a>* <a class="code" href="class_diligent_1_1_i_object.html#aea6c7b63a8ca0bab24d7f8b0bcfbb745">GetReferenceCounters</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }</div><div class="ttc" id="class_diligent_1_1_i_object_html_a266214a25c23708df6ccdb04de6ecb9b"><div class="ttname"><a href="class_diligent_1_1_i_object.html#a266214a25c23708df6ccdb04de6ecb9b">Diligent::IObject::AddRef</a></div><div class="ttdeci">virtual CounterValueType AddRef()=0</div><div class="ttdoc">Increments the number of strong references by 1. </div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="class_diligent_1_1_i_object_html_aea6c7b63a8ca0bab24d7f8b0bcfbb745"><div class="ttname"><a href="class_diligent_1_1_i_object.html#aea6c7b63a8ca0bab24d7f8b0bcfbb745">Diligent::IObject::GetReferenceCounters</a></div><div class="ttdeci">virtual IReferenceCounters * GetReferenceCounters() const =0</div><div class="ttdoc">Returns the pointer to IReferenceCounters interface of the associated reference counters object...</div></div> <div class="ttc" id="class_diligent_1_1_i_reference_counters_html"><div class="ttname"><a href="class_diligent_1_1_i_reference_counters.html">Diligent::IReferenceCounters</a></div><div class="ttdoc">Base interface for a reference counter object that stores the number of strong and weak references an...</div><div class="ttdef"><b>Definition:</b> ReferenceCounters.h:37</div></div> diff --git a/doc/html/_object_base_8h_source.html b/doc/html/_object_base_8h_source.html index 6462ef11..f5d2a0c8 100644 --- a/doc/html/_object_base_8h_source.html +++ b/doc/html/_object_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ObjectBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RefCountedObjectImpl.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#define IMPLEMENT_QUERY_INTERFACE_BODY(InterfaceID, ParentClassName) \</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor"> if( ppInterface == nullptr ) \</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor"> return; \</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"> if( IID == InterfaceID ) \</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> *ppInterface = this; \</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"> (*ppInterface)->AddRef(); \</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"> else \</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"> ParentClassName::QueryInterface( IID, ppInterface ); \</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define IMPLEMENT_QUERY_INTERFACE(ClassName, InterfaceID, ParentClassName) \</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"> void ClassName :: QueryInterface(const Diligent::INTERFACE_ID &IID, IObject **ppInterface) \</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor"> IMPLEMENT_QUERY_INTERFACE_BODY(InterfaceID, ParentClassName)</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define IMPLEMENT_QUERY_INTERFACE_IN_PLACE(InterfaceID, ParentClassName) \</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"> virtual void QueryInterface(const Diligent::INTERFACE_ID &IID, IObject **ppInterface)override \</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor"> IMPLEMENT_QUERY_INTERFACE_BODY(InterfaceID, ParentClassName)</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="class_diligent_1_1_object_base.html"> 62</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_ref_counted_object.html">RefCountedObject</a><BaseInterface></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a>(IReferenceCounters *pRefCounters) : </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_ref_counted_object.html">RefCountedObject<BaseInterface></a>( pRefCounters )</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span>( ppInterface == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  *ppInterface = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>( IID == Diligent::IID_Unknown )</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  *ppInterface = <span class="keyword">this</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  (*ppInterface)->AddRef();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> };</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div><div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RefCountedObjectImpl.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#define IMPLEMENT_QUERY_INTERFACE_BODY(InterfaceID, ParentClassName) \</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor"> if( ppInterface == nullptr ) \</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor"> return; \</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"> if( IID == InterfaceID ) \</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> *ppInterface = this; \</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"> (*ppInterface)->AddRef(); \</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"> else \</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"> ParentClassName::QueryInterface( IID, ppInterface ); \</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define IMPLEMENT_QUERY_INTERFACE(ClassName, InterfaceID, ParentClassName) \</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"> void ClassName :: QueryInterface(const Diligent::INTERFACE_ID &IID, IObject **ppInterface) \</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor"> IMPLEMENT_QUERY_INTERFACE_BODY(InterfaceID, ParentClassName)</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define IMPLEMENT_QUERY_INTERFACE_IN_PLACE(InterfaceID, ParentClassName) \</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"> virtual void QueryInterface(const Diligent::INTERFACE_ID &IID, IObject **ppInterface)override \</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor"> IMPLEMENT_QUERY_INTERFACE_BODY(InterfaceID, ParentClassName)</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="class_diligent_1_1_object_base.html"> 62</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_ref_counted_object.html">RefCountedObject</a><BaseInterface></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a>(IReferenceCounters *pRefCounters) : </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_ref_counted_object.html">RefCountedObject<BaseInterface></a>( pRefCounters )</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span>( ppInterface == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  *ppInterface = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>( IID == Diligent::IID_Unknown )</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  *ppInterface = <span class="keyword">this</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  (*ppInterface)->AddRef();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> };</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div><div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_ref_counted_object_html"><div class="ttname"><a href="class_diligent_1_1_ref_counted_object.html">Diligent::RefCountedObject</a></div><div class="ttdoc">Base class for all reference counting objects. </div><div class="ttdef"><b>Definition:</b> RefCountedObjectImpl.h:470</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_pipeline_state_8h_source.html b/doc/html/_pipeline_state_8h_source.html index af337cb2..ef7f2eb5 100644 --- a/doc/html/_pipeline_state_8h_source.html +++ b/doc/html/_pipeline_state_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">PipelineState.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BlendState.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "RasterizerState.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "DepthStencilState.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "InputLayout.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "ShaderResourceBinding.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094"> 47</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094">PRIMITIVE_TOPOLOGY_TYPE</a> : Int32</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a87b55988e035b78978809914fbeceeb4"> 50</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a87b55988e035b78978809914fbeceeb4">PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED</a> = 0,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a1672e494693357f88375ce4df38a3e0c"> 53</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a1672e494693357f88375ce4df38a3e0c">PRIMITIVE_TOPOLOGY_TYPE_POINT</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094ad131024e4a7404656eb622ff9be6c601"> 56</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094ad131024e4a7404656eb622ff9be6c601">PRIMITIVE_TOPOLOGY_TYPE_LINE</a>,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094abc916aeed560a57e484623c409c48d8f"> 59</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094abc916aeed560a57e484623c409c48d8f">PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a71000b83d328f3d03ec828944aac5836"> 62</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a71000b83d328f3d03ec828944aac5836">PRIMITIVE_TOPOLOGY_TYPE_PATCH</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094af497bdd7a40a5102cdbb3d20c573f5be"> 65</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094af497bdd7a40a5102cdbb3d20c573f5be">PRIMITIVE_TOPOLOGY_TYPE_NUM_TYPES</a></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sample_desc.html"> 71</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_sample_desc.html">SampleDesc</a></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sample_desc.html#a809d7d8a62bc2a6dc2f5eca51a9298a2"> 74</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_sample_desc.html#a809d7d8a62bc2a6dc2f5eca51a9298a2">Count</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sample_desc.html#afb1004a448b0019aed45a3fcf72afeb8"> 77</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_sample_desc.html#afb1004a448b0019aed45a3fcf72afeb8">Quality</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="struct_diligent_1_1_sample_desc.html">SampleDesc</a>() : </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="struct_diligent_1_1_sample_desc.html#a809d7d8a62bc2a6dc2f5eca51a9298a2">Count</a>(1),</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="struct_diligent_1_1_sample_desc.html#afb1004a448b0019aed45a3fcf72afeb8">Quality</a>(0)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {}</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> };</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html"> 89</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html">GraphicsPipelineDesc</a></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#aa91ba617bd9f5b1feed4d6ccccf0cfdb"> 92</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#aa91ba617bd9f5b1feed4d6ccccf0cfdb">pVS</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#aab5ed20f36ab8e2c715eced91b420ca3"> 95</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#aab5ed20f36ab8e2c715eced91b420ca3">pPS</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#af5545df4251e77b506173ee4c1de0849"> 98</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#af5545df4251e77b506173ee4c1de0849">pDS</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a4c624af6f5113cbaa2a082d4191ab317"> 101</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a4c624af6f5113cbaa2a082d4191ab317">pHS</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#ae16271d03446561e726323f42c9a4a39"> 104</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ae16271d03446561e726323f42c9a4a39">pGS</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">//D3D12_STREAM_OUTPUT_DESC StreamOutput;</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#ad86efecf9af6740b15aa2858d11d4ead"> 109</a></span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html">BlendStateDesc</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ad86efecf9af6740b15aa2858d11d4ead">BlendDesc</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a48362f4ab2fc255d29bdf4c1c6d527f4"> 115</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a48362f4ab2fc255d29bdf4c1c6d527f4">SampleMask</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a03e5103a65698b8adc75ad0bd8fba27e"> 118</a></span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html">RasterizerStateDesc</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a03e5103a65698b8adc75ad0bd8fba27e">RasterizerDesc</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#ac88b622f9d8305a39e5098abb3f1868b"> 121</a></span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html">DepthStencilStateDesc</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ac88b622f9d8305a39e5098abb3f1868b">DepthStencilDesc</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a1fc9bf9fa965b6c4b666e016e754c180"> 124</a></span>  <a class="code" href="struct_diligent_1_1_input_layout_desc.html">InputLayoutDesc</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a1fc9bf9fa965b6c4b666e016e754c180">InputLayout</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">//D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a958649ac80956180b9ee7f3f6311e05d"> 128</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094">PRIMITIVE_TOPOLOGY_TYPE</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a958649ac80956180b9ee7f3f6311e05d">PrimitiveTopologyType</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#acd646619226f2300e70e5c03bd5af7fc"> 131</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#acd646619226f2300e70e5c03bd5af7fc">NumRenderTargets</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a8264e6f6d226faf9f648d32c05c93592"> 134</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a8264e6f6d226faf9f648d32c05c93592">RTVFormats</a>[8];</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#ab64cc07f80b8ab677c34b4a17d445bf5"> 137</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ab64cc07f80b8ab677c34b4a17d445bf5">DSVFormat</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#aa505cde7293c238fb23664b412da1388"> 140</a></span>  <a class="code" href="struct_diligent_1_1_sample_desc.html">SampleDesc</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#aa505cde7293c238fb23664b412da1388">SmplDesc</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#adb8ecb078c4e457b37ba2e01fbbecb34"> 143</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#adb8ecb078c4e457b37ba2e01fbbecb34">NodeMask</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">//D3D12_CACHED_PIPELINE_STATE CachedPSO;</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">//D3D12_PIPELINE_STATE_FLAGS Flags;</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html">GraphicsPipelineDesc</a>() : </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#aa91ba617bd9f5b1feed4d6ccccf0cfdb">pVS</a>(nullptr),</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#aab5ed20f36ab8e2c715eced91b420ca3">pPS</a>(nullptr),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#af5545df4251e77b506173ee4c1de0849">pDS</a>(nullptr),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a4c624af6f5113cbaa2a082d4191ab317">pHS</a>(nullptr),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ae16271d03446561e726323f42c9a4a39">pGS</a>(nullptr),</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a958649ac80956180b9ee7f3f6311e05d">PrimitiveTopologyType</a>(<a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094abc916aeed560a57e484623c409c48d8f">PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE</a>),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a48362f4ab2fc255d29bdf4c1c6d527f4">SampleMask</a>(0xFFFFFFFF),</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#acd646619226f2300e70e5c03bd5af7fc">NumRenderTargets</a>(0),</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#adb8ecb078c4e457b37ba2e01fbbecb34">NodeMask</a>(0)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> rt = 0; rt < _countof(<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a8264e6f6d226faf9f648d32c05c93592">RTVFormats</a>); ++rt)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a8264e6f6d226faf9f648d32c05c93592">RTVFormats</a>[rt] = <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ab64cc07f80b8ab677c34b4a17d445bf5">DSVFormat</a> = <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  };</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> };</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_compute_pipeline_desc.html"> 169</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_compute_pipeline_desc.html">ComputePipelineDesc</a></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_compute_pipeline_desc.html#a8fda9c722e19f615786f3bad1596d1d9"> 172</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_compute_pipeline_desc.html#a8fda9c722e19f615786f3bad1596d1d9">pCS</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="struct_diligent_1_1_compute_pipeline_desc.html">ComputePipelineDesc</a>() : </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="struct_diligent_1_1_compute_pipeline_desc.html#a8fda9c722e19f615786f3bad1596d1d9">pCS</a>(nullptr)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {}</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> };</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_pipeline_state_desc.html"> 179</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_pipeline_state_desc.html#adbfcafcd303218af1c0123d0362dfe46"> 182</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#adbfcafcd303218af1c0123d0362dfe46">IsComputePipeline</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_pipeline_state_desc.html#ae92c6751af3487c12a3158ecc864b21f"> 185</a></span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html">GraphicsPipelineDesc</a> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ae92c6751af3487c12a3158ecc864b21f">GraphicsPipeline</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_pipeline_state_desc.html#ab5a386c636c28e6b18c618a7cc86c9a5"> 188</a></span>  <a class="code" href="struct_diligent_1_1_compute_pipeline_desc.html">ComputePipelineDesc</a> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ab5a386c636c28e6b18c618a7cc86c9a5">ComputePipeline</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  </div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_pipeline_state_desc.html#ad33e5797ce9cdb50dc5703511cff6ac6"> 194</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ad33e5797ce9cdb50dc5703511cff6ac6">SRBAllocationGranularity</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a>() : </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#adbfcafcd303218af1c0123d0362dfe46">IsComputePipeline</a>(false),</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ad33e5797ce9cdb50dc5703511cff6ac6">SRBAllocationGranularity</a>(1)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {}</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> };</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment">// {06084AE5-6A71-4FE8-84B9-395DD489A28C}</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_PipelineState =</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> { 0x6084ae5, 0x6a71, 0x4fe8, { 0x84, 0xb9, 0x39, 0x5d, 0xd4, 0x89, 0xa2, 0x8c } };</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_pipeline_state.html"> 209</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html#a9e96684e976426af31a29c9ff6d10902">QueryInterface</a>( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a>& <a class="code" href="class_diligent_1_1_i_pipeline_state.html#a7807cc8508d41b81fc2a580e7e53fbcb">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html#a8f8652f7f9437c40ab34db20f419fa1f">BindShaderResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResourceMapping, Uint32 Flags ) = 0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html#a1500049f597cda22b862b5d967fceab5">CreateShaderResourceBinding</a>( <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> **ppShaderResourceBinding ) = 0;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> };</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div><div class="ttc" id="struct_diligent_1_1_graphics_pipeline_desc_html_ac88b622f9d8305a39e5098abb3f1868b"><div class="ttname"><a href="struct_diligent_1_1_graphics_pipeline_desc.html#ac88b622f9d8305a39e5098abb3f1868b">Diligent::GraphicsPipelineDesc::DepthStencilDesc</a></div><div class="ttdeci">DepthStencilStateDesc DepthStencilDesc</div><div class="ttdoc">Depth-stencil state description. </div><div class="ttdef"><b>Definition:</b> PipelineState.h:121</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "BlendState.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "RasterizerState.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "DepthStencilState.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "InputLayout.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "ShaderResourceBinding.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094"> 47</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094">PRIMITIVE_TOPOLOGY_TYPE</a> : Int32</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a87b55988e035b78978809914fbeceeb4"> 50</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a87b55988e035b78978809914fbeceeb4">PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED</a> = 0,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a1672e494693357f88375ce4df38a3e0c"> 53</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a1672e494693357f88375ce4df38a3e0c">PRIMITIVE_TOPOLOGY_TYPE_POINT</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094ad131024e4a7404656eb622ff9be6c601"> 56</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094ad131024e4a7404656eb622ff9be6c601">PRIMITIVE_TOPOLOGY_TYPE_LINE</a>,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094abc916aeed560a57e484623c409c48d8f"> 59</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094abc916aeed560a57e484623c409c48d8f">PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a71000b83d328f3d03ec828944aac5836"> 62</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094a71000b83d328f3d03ec828944aac5836">PRIMITIVE_TOPOLOGY_TYPE_PATCH</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094af497bdd7a40a5102cdbb3d20c573f5be"> 65</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094af497bdd7a40a5102cdbb3d20c573f5be">PRIMITIVE_TOPOLOGY_TYPE_NUM_TYPES</a></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sample_desc.html"> 71</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_sample_desc.html">SampleDesc</a></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sample_desc.html#a809d7d8a62bc2a6dc2f5eca51a9298a2"> 74</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_sample_desc.html#a809d7d8a62bc2a6dc2f5eca51a9298a2">Count</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sample_desc.html#afb1004a448b0019aed45a3fcf72afeb8"> 77</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_sample_desc.html#afb1004a448b0019aed45a3fcf72afeb8">Quality</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="struct_diligent_1_1_sample_desc.html">SampleDesc</a>() : </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="struct_diligent_1_1_sample_desc.html#a809d7d8a62bc2a6dc2f5eca51a9298a2">Count</a>(1),</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="struct_diligent_1_1_sample_desc.html#afb1004a448b0019aed45a3fcf72afeb8">Quality</a>(0)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {}</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> };</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html"> 89</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html">GraphicsPipelineDesc</a></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#aa91ba617bd9f5b1feed4d6ccccf0cfdb"> 92</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#aa91ba617bd9f5b1feed4d6ccccf0cfdb">pVS</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#aab5ed20f36ab8e2c715eced91b420ca3"> 95</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#aab5ed20f36ab8e2c715eced91b420ca3">pPS</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#af5545df4251e77b506173ee4c1de0849"> 98</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#af5545df4251e77b506173ee4c1de0849">pDS</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a4c624af6f5113cbaa2a082d4191ab317"> 101</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a4c624af6f5113cbaa2a082d4191ab317">pHS</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#ae16271d03446561e726323f42c9a4a39"> 104</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ae16271d03446561e726323f42c9a4a39">pGS</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">//D3D12_STREAM_OUTPUT_DESC StreamOutput;</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#ad86efecf9af6740b15aa2858d11d4ead"> 109</a></span>  <a class="code" href="struct_diligent_1_1_blend_state_desc.html">BlendStateDesc</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ad86efecf9af6740b15aa2858d11d4ead">BlendDesc</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a48362f4ab2fc255d29bdf4c1c6d527f4"> 115</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a48362f4ab2fc255d29bdf4c1c6d527f4">SampleMask</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a03e5103a65698b8adc75ad0bd8fba27e"> 118</a></span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html">RasterizerStateDesc</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a03e5103a65698b8adc75ad0bd8fba27e">RasterizerDesc</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#ac88b622f9d8305a39e5098abb3f1868b"> 121</a></span>  <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html">DepthStencilStateDesc</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ac88b622f9d8305a39e5098abb3f1868b">DepthStencilDesc</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a1fc9bf9fa965b6c4b666e016e754c180"> 124</a></span>  <a class="code" href="struct_diligent_1_1_input_layout_desc.html">InputLayoutDesc</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a1fc9bf9fa965b6c4b666e016e754c180">InputLayout</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">//D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a958649ac80956180b9ee7f3f6311e05d"> 128</a></span>  <a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094">PRIMITIVE_TOPOLOGY_TYPE</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a958649ac80956180b9ee7f3f6311e05d">PrimitiveTopologyType</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#acd646619226f2300e70e5c03bd5af7fc"> 131</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#acd646619226f2300e70e5c03bd5af7fc">NumRenderTargets</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#a8264e6f6d226faf9f648d32c05c93592"> 134</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a8264e6f6d226faf9f648d32c05c93592">RTVFormats</a>[8];</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#ab64cc07f80b8ab677c34b4a17d445bf5"> 137</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ab64cc07f80b8ab677c34b4a17d445bf5">DSVFormat</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#aa505cde7293c238fb23664b412da1388"> 140</a></span>  <a class="code" href="struct_diligent_1_1_sample_desc.html">SampleDesc</a> <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#aa505cde7293c238fb23664b412da1388">SmplDesc</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_graphics_pipeline_desc.html#adb8ecb078c4e457b37ba2e01fbbecb34"> 143</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#adb8ecb078c4e457b37ba2e01fbbecb34">NodeMask</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">//D3D12_CACHED_PIPELINE_STATE CachedPSO;</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">//D3D12_PIPELINE_STATE_FLAGS Flags;</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html">GraphicsPipelineDesc</a>() : </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#aa91ba617bd9f5b1feed4d6ccccf0cfdb">pVS</a>(nullptr),</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#aab5ed20f36ab8e2c715eced91b420ca3">pPS</a>(nullptr),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#af5545df4251e77b506173ee4c1de0849">pDS</a>(nullptr),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a4c624af6f5113cbaa2a082d4191ab317">pHS</a>(nullptr),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ae16271d03446561e726323f42c9a4a39">pGS</a>(nullptr),</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a958649ac80956180b9ee7f3f6311e05d">PrimitiveTopologyType</a>(<a class="code" href="namespace_diligent.html#a2966e113686e1311912fd7b350721094abc916aeed560a57e484623c409c48d8f">PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE</a>),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a48362f4ab2fc255d29bdf4c1c6d527f4">SampleMask</a>(0xFFFFFFFF),</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#acd646619226f2300e70e5c03bd5af7fc">NumRenderTargets</a>(0),</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#adb8ecb078c4e457b37ba2e01fbbecb34">NodeMask</a>(0)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> rt = 0; rt < _countof(<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a8264e6f6d226faf9f648d32c05c93592">RTVFormats</a>); ++rt)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a8264e6f6d226faf9f648d32c05c93592">RTVFormats</a>[rt] = <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#ab64cc07f80b8ab677c34b4a17d445bf5">DSVFormat</a> = <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  };</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> };</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_compute_pipeline_desc.html"> 169</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_compute_pipeline_desc.html">ComputePipelineDesc</a></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_compute_pipeline_desc.html#a8fda9c722e19f615786f3bad1596d1d9"> 172</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="struct_diligent_1_1_compute_pipeline_desc.html#a8fda9c722e19f615786f3bad1596d1d9">pCS</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="struct_diligent_1_1_compute_pipeline_desc.html">ComputePipelineDesc</a>() : </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="struct_diligent_1_1_compute_pipeline_desc.html#a8fda9c722e19f615786f3bad1596d1d9">pCS</a>(nullptr)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {}</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> };</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_pipeline_state_desc.html"> 179</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_pipeline_state_desc.html#adbfcafcd303218af1c0123d0362dfe46"> 182</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#adbfcafcd303218af1c0123d0362dfe46">IsComputePipeline</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_pipeline_state_desc.html#ae92c6751af3487c12a3158ecc864b21f"> 185</a></span>  <a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html">GraphicsPipelineDesc</a> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ae92c6751af3487c12a3158ecc864b21f">GraphicsPipeline</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_pipeline_state_desc.html#ab5a386c636c28e6b18c618a7cc86c9a5"> 188</a></span>  <a class="code" href="struct_diligent_1_1_compute_pipeline_desc.html">ComputePipelineDesc</a> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ab5a386c636c28e6b18c618a7cc86c9a5">ComputePipeline</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  </div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_pipeline_state_desc.html#ad33e5797ce9cdb50dc5703511cff6ac6"> 194</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ad33e5797ce9cdb50dc5703511cff6ac6">SRBAllocationGranularity</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a>() : </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#adbfcafcd303218af1c0123d0362dfe46">IsComputePipeline</a>(false),</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ad33e5797ce9cdb50dc5703511cff6ac6">SRBAllocationGranularity</a>(1)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {}</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> };</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment">// {06084AE5-6A71-4FE8-84B9-395DD489A28C}</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_PipelineState =</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> { 0x6084ae5, 0x6a71, 0x4fe8, { 0x84, 0xb9, 0x39, 0x5d, 0xd4, 0x89, 0xa2, 0x8c } };</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_pipeline_state.html"> 209</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html#a9e96684e976426af31a29c9ff6d10902">QueryInterface</a>( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a>& <a class="code" href="class_diligent_1_1_i_pipeline_state.html#a7807cc8508d41b81fc2a580e7e53fbcb">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html#a8f8652f7f9437c40ab34db20f419fa1f">BindShaderResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResourceMapping, Uint32 Flags ) = 0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html#a1500049f597cda22b862b5d967fceab5">CreateShaderResourceBinding</a>( <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> **ppShaderResourceBinding ) = 0;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> };</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div><div class="ttc" id="struct_diligent_1_1_graphics_pipeline_desc_html_ac88b622f9d8305a39e5098abb3f1868b"><div class="ttname"><a href="struct_diligent_1_1_graphics_pipeline_desc.html#ac88b622f9d8305a39e5098abb3f1868b">Diligent::GraphicsPipelineDesc::DepthStencilDesc</a></div><div class="ttdeci">DepthStencilStateDesc DepthStencilDesc</div><div class="ttdoc">Depth-stencil state description. </div><div class="ttdef"><b>Definition:</b> PipelineState.h:121</div></div> <div class="ttc" id="struct_diligent_1_1_graphics_pipeline_desc_html_aa91ba617bd9f5b1feed4d6ccccf0cfdb"><div class="ttname"><a href="struct_diligent_1_1_graphics_pipeline_desc.html#aa91ba617bd9f5b1feed4d6ccccf0cfdb">Diligent::GraphicsPipelineDesc::pVS</a></div><div class="ttdeci">IShader * pVS</div><div class="ttdoc">Vertex shader to be used with the pipeline. </div><div class="ttdef"><b>Definition:</b> PipelineState.h:92</div></div> <div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> @@ -125,7 +125,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_pipeline_state_base_8h_source.html b/doc/html/_pipeline_state_base_8h_source.html index 40700f56..2797aadf 100644 --- a/doc/html/_pipeline_state_base_8h_source.html +++ b/doc/html/_pipeline_state_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">PipelineStateBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "EngineMemory.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> RenderDeviceBaseInterface></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, PipelineStateDesc></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, PipelineStateDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase < RenderDeviceBaseInterface ></a> <a class="code" href="class_diligent_1_1_render_device_base.html">TRenderDeviceBase</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#a1e862710d0fbc29755b3c7059dd7a570"> 57</a></span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a1e862710d0fbc29755b3c7059dd7a570">PipelineStateBase</a>( IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a>& PSODesc, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, PSODesc, bIsDeviceInternal ),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_LayoutElements( PSODesc.GraphicsPipeline.InputLayout.NumElements, <a class="code" href="struct_diligent_1_1_layout_element.html">LayoutElement</a>(), STD_ALLOCATOR_RAW_MEM(<a class="code" href="struct_diligent_1_1_layout_element.html">LayoutElement</a>, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<LayoutElement>"</span> ) ),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>(0)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  memset(<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span> (this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#adbfcafcd303218af1c0123d0362dfe46">IsComputePipeline</a>)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &ComputePipeline = PSODesc.<a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ab5a386c636c28e6b18c618a7cc86c9a5">ComputePipeline</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span> (ComputePipeline.pCS == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  LOG_ERROR_AND_THROW( <span class="stringliteral">"Compute shader is not provided"</span> );</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#define VALIDATE_SHADER_TYPE(Shader, ExpectedType, ShaderName)\</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> if (Shader && Shader->GetDesc().ShaderType != ExpectedType) \</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> LOG_ERROR_AND_THROW( GetShaderTypeLiteralName(Shader->GetDesc().ShaderType), " is not valid type for ", ShaderName, " shader" );\</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"> }</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  VALIDATE_SHADER_TYPE(ComputePipeline.pCS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a>, <span class="stringliteral">"compute"</span>)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad9c448280c41c57d8c745edbde788063">m_pCS</a> = ComputePipeline.pCS;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[0] = ComputePipeline.pCS;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a> = 1;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &GraphicsPipeline = PSODesc.<a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ae92c6751af3487c12a3158ecc864b21f">GraphicsPipeline</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  VALIDATE_SHADER_TYPE(GraphicsPipeline.pVS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>, <span class="stringliteral">"vertex"</span>)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  VALIDATE_SHADER_TYPE(GraphicsPipeline.pPS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a>, <span class="stringliteral">"pixel"</span>)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  VALIDATE_SHADER_TYPE(GraphicsPipeline.pGS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a>, <span class="stringliteral">"geometry"</span>)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  VALIDATE_SHADER_TYPE(GraphicsPipeline.pHS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a>, <span class="stringliteral">"hull"</span>)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  VALIDATE_SHADER_TYPE(GraphicsPipeline.pDS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a>, <span class="stringliteral">"domain"</span>)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#undef VALIDATE_SHADER_TYPE</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#af66a7c20dc9251400779cf17cdbb4e87">m_pVS</a> = GraphicsPipeline.pVS;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad3a1941b976b6c84a6dbb1b9b4d9a080">m_pPS</a> = GraphicsPipeline.pPS;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#adf8c72e092b514fb745cee9033343357">m_pGS</a> = GraphicsPipeline.pGS;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a06bf5019d7ff2def707cc81bb79c3cee">m_pDS</a> = GraphicsPipeline.pDS;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a55066c8c3a861cf409f6e6535753372d">m_pHS</a> = GraphicsPipeline.pHS;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>( GraphicsPipeline.pVS )<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>++] = GraphicsPipeline.pVS;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>( GraphicsPipeline.pPS )<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>++] = GraphicsPipeline.pPS;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span>( GraphicsPipeline.pGS )<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>++] = GraphicsPipeline.pGS;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>( GraphicsPipeline.pHS )<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>++] = GraphicsPipeline.pHS;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>( GraphicsPipeline.pDS )<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>++] = GraphicsPipeline.pDS;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &InputLayout = PSODesc.<a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ae92c6751af3487c12a3158ecc864b21f">GraphicsPipeline</a>.<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a1fc9bf9fa965b6c4b666e016e754c180">InputLayout</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span>( <span class="keywordtype">size_t</span> Elem = 0; Elem < InputLayout.NumElements; ++Elem )</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_LayoutElements[Elem] = InputLayout.LayoutElements[Elem];</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  this->m_Desc.GraphicsPipeline.InputLayout.LayoutElements = m_LayoutElements.data();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// Correct description and compute offsets and tight strides</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">for</span>( <span class="keyword">auto</span> It = m_LayoutElements.begin(); It != m_LayoutElements.end(); ++It )</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>( It->ValueType == <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a> || It->ValueType == <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa655c4d977016936a18aa460c739d65e4">VT_FLOAT16</a> )</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  It->IsNormalized = <span class="keyword">false</span>; <span class="comment">// Floating point values cannot be normalized</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">auto</span> BuffSlot = It->BufferSlot;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>( BuffSlot >= _countof(m_TightStrides) )</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  UNEXPECTED(<span class="stringliteral">"Buffer slot ("</span>, BuffSlot, <span class="stringliteral">") exceeds the limit ("</span>, _countof(m_TightStrides), <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">auto</span> &CurrStride = m_TightStrides[BuffSlot];</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>( It->RelativeOffset < CurrStride )</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span>( It->RelativeOffset == 0 )</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  It->RelativeOffset = CurrStride;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  UNEXPECTED( <span class="stringliteral">"Overlapping layout elements"</span> );</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  CurrStride += It->NumComponents * GetValueSize( It->ValueType );</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  ~<a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase</a>()</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">/*</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment"> auto &PipelineStateRegistry = static_cast<TRenderDeviceBase*>(this->GetDevice())->GetBSRegistry();</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment"> auto &RasterizerStateRegistry = static_cast<TRenderDeviceBase*>(this->GetDevice())->GetRSRegistry();</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment"> auto &DSSRegistry = static_cast<TRenderDeviceBase*>(this->GetDevice())->GetDSSRegistry();</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment"> // StateObjectsRegistry::ReportDeletedObject() does not lock the registry, but only </span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment"> // atomically increments the outstanding deleted objects counter.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment"> PipelineStateRegistry.ReportDeletedObject();</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="comment"> RasterizerStateRegistry.ReportDeletedObject();</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment"> DSSRegistry.ReportDeletedObject();</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment"> */</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_PipelineState, TDeviceObjectBase )</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> Uint32* GetTightStrides()<span class="keyword">const</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keyword"> </span>{ </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> m_TightStrides;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  IShader* GetVS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#af66a7c20dc9251400779cf17cdbb4e87">m_pVS</a>;}</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  IShader* GetPS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad3a1941b976b6c84a6dbb1b9b4d9a080">m_pPS</a>;}</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  IShader* GetGS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#adf8c72e092b514fb745cee9033343357">m_pGS</a>;}</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  IShader* GetDS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a06bf5019d7ff2def707cc81bb79c3cee">m_pDS</a>;}</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  IShader* GetHS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a55066c8c3a861cf409f6e6535753372d">m_pHS</a>;}</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  IShader* GetCS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad9c448280c41c57d8c745edbde788063">m_pCS</a>;}</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  IShader* <span class="keyword">const</span>* GetShaders()<span class="keyword">const</span>{<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>;}</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  Uint32 GetNumShaders()<span class="keyword">const</span>{<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>;}</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  std::vector<LayoutElement, STDAllocatorRawMem<LayoutElement> > m_LayoutElements;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// The size of this array must be equal to the</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// maximum number of buffer slots, because a layout </span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// element can refer to any input slot</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  Uint32 m_TightStrides[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>] = {};</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#af66a7c20dc9251400779cf17cdbb4e87"> 184</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#af66a7c20dc9251400779cf17cdbb4e87">m_pVS</a>; </div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#ad3a1941b976b6c84a6dbb1b9b4d9a080"> 185</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad3a1941b976b6c84a6dbb1b9b4d9a080">m_pPS</a>; </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#adf8c72e092b514fb745cee9033343357"> 186</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#adf8c72e092b514fb745cee9033343357">m_pGS</a>; </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#a06bf5019d7ff2def707cc81bb79c3cee"> 187</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a06bf5019d7ff2def707cc81bb79c3cee">m_pDS</a>; </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#a55066c8c3a861cf409f6e6535753372d"> 188</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a55066c8c3a861cf409f6e6535753372d">m_pHS</a>; </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#ad9c448280c41c57d8c745edbde788063"> 189</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad9c448280c41c57d8c745edbde788063">m_pCS</a>; </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500"> 190</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[5]; </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85"> 191</a></span>  Uint32 <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>; </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> };</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="ttc" id="namespace_diligent_html_a9d3d207f6d44cb2988a2748e4dc97722"><div class="ttname"><a href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">Diligent::MaxBufferSlots</a></div><div class="ttdeci">static constexpr Uint32 MaxBufferSlots</div><div class="ttdoc">Maximum number of input buffer slots. D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT == 32...</div><div class="ttdef"><b>Definition:</b> Constants.h:33</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "EngineMemory.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> RenderDeviceBaseInterface></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, PipelineStateDesc></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, PipelineStateDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase < RenderDeviceBaseInterface ></a> <a class="code" href="class_diligent_1_1_render_device_base.html">TRenderDeviceBase</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#a1e862710d0fbc29755b3c7059dd7a570"> 57</a></span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a1e862710d0fbc29755b3c7059dd7a570">PipelineStateBase</a>( IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a>& PSODesc, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, PSODesc, bIsDeviceInternal ),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_LayoutElements( PSODesc.GraphicsPipeline.InputLayout.NumElements, <a class="code" href="struct_diligent_1_1_layout_element.html">LayoutElement</a>(), STD_ALLOCATOR_RAW_MEM(<a class="code" href="struct_diligent_1_1_layout_element.html">LayoutElement</a>, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<LayoutElement>"</span> ) ),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>(0)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  memset(<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span> (this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#adbfcafcd303218af1c0123d0362dfe46">IsComputePipeline</a>)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &ComputePipeline = PSODesc.<a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ab5a386c636c28e6b18c618a7cc86c9a5">ComputePipeline</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span> (ComputePipeline.pCS == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  LOG_ERROR_AND_THROW( <span class="stringliteral">"Compute shader is not provided"</span> );</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#define VALIDATE_SHADER_TYPE(Shader, ExpectedType, ShaderName)\</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> if (Shader && Shader->GetDesc().ShaderType != ExpectedType) \</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> LOG_ERROR_AND_THROW( GetShaderTypeLiteralName(Shader->GetDesc().ShaderType), " is not valid type for ", ShaderName, " shader" );\</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"> }</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  VALIDATE_SHADER_TYPE(ComputePipeline.pCS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a>, <span class="stringliteral">"compute"</span>)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad9c448280c41c57d8c745edbde788063">m_pCS</a> = ComputePipeline.pCS;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[0] = ComputePipeline.pCS;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a> = 1;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &GraphicsPipeline = PSODesc.<a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ae92c6751af3487c12a3158ecc864b21f">GraphicsPipeline</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  VALIDATE_SHADER_TYPE(GraphicsPipeline.pVS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>, <span class="stringliteral">"vertex"</span>)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  VALIDATE_SHADER_TYPE(GraphicsPipeline.pPS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a>, <span class="stringliteral">"pixel"</span>)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  VALIDATE_SHADER_TYPE(GraphicsPipeline.pGS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a>, <span class="stringliteral">"geometry"</span>)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  VALIDATE_SHADER_TYPE(GraphicsPipeline.pHS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a>, <span class="stringliteral">"hull"</span>)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  VALIDATE_SHADER_TYPE(GraphicsPipeline.pDS, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a>, <span class="stringliteral">"domain"</span>)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#undef VALIDATE_SHADER_TYPE</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#af66a7c20dc9251400779cf17cdbb4e87">m_pVS</a> = GraphicsPipeline.pVS;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad3a1941b976b6c84a6dbb1b9b4d9a080">m_pPS</a> = GraphicsPipeline.pPS;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#adf8c72e092b514fb745cee9033343357">m_pGS</a> = GraphicsPipeline.pGS;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a06bf5019d7ff2def707cc81bb79c3cee">m_pDS</a> = GraphicsPipeline.pDS;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a55066c8c3a861cf409f6e6535753372d">m_pHS</a> = GraphicsPipeline.pHS;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>( GraphicsPipeline.pVS )<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>++] = GraphicsPipeline.pVS;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>( GraphicsPipeline.pPS )<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>++] = GraphicsPipeline.pPS;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span>( GraphicsPipeline.pGS )<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>++] = GraphicsPipeline.pGS;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>( GraphicsPipeline.pHS )<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>++] = GraphicsPipeline.pHS;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>( GraphicsPipeline.pDS )<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>++] = GraphicsPipeline.pDS;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &InputLayout = PSODesc.<a class="code" href="struct_diligent_1_1_pipeline_state_desc.html#ae92c6751af3487c12a3158ecc864b21f">GraphicsPipeline</a>.<a class="code" href="struct_diligent_1_1_graphics_pipeline_desc.html#a1fc9bf9fa965b6c4b666e016e754c180">InputLayout</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span>( <span class="keywordtype">size_t</span> Elem = 0; Elem < InputLayout.NumElements; ++Elem )</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_LayoutElements[Elem] = InputLayout.LayoutElements[Elem];</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  this->m_Desc.GraphicsPipeline.InputLayout.LayoutElements = m_LayoutElements.data();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// Correct description and compute offsets and tight strides</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">for</span>( <span class="keyword">auto</span> It = m_LayoutElements.begin(); It != m_LayoutElements.end(); ++It )</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>( It->ValueType == <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aafa7b5254b72dfc30886aa0578d783f94">VT_FLOAT32</a> || It->ValueType == <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa655c4d977016936a18aa460c739d65e4">VT_FLOAT16</a> )</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  It->IsNormalized = <span class="keyword">false</span>; <span class="comment">// Floating point values cannot be normalized</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">auto</span> BuffSlot = It->BufferSlot;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>( BuffSlot >= _countof(m_TightStrides) )</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  UNEXPECTED(<span class="stringliteral">"Buffer slot ("</span>, BuffSlot, <span class="stringliteral">") exceeds the limit ("</span>, _countof(m_TightStrides), <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">auto</span> &CurrStride = m_TightStrides[BuffSlot];</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>( It->RelativeOffset < CurrStride )</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span>( It->RelativeOffset == 0 )</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  It->RelativeOffset = CurrStride;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  UNEXPECTED( <span class="stringliteral">"Overlapping layout elements"</span> );</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  CurrStride += It->NumComponents * GetValueSize( It->ValueType );</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  ~<a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase</a>()</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">/*</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment"> auto &PipelineStateRegistry = static_cast<TRenderDeviceBase*>(this->GetDevice())->GetBSRegistry();</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment"> auto &RasterizerStateRegistry = static_cast<TRenderDeviceBase*>(this->GetDevice())->GetRSRegistry();</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment"> auto &DSSRegistry = static_cast<TRenderDeviceBase*>(this->GetDevice())->GetDSSRegistry();</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment"> // StateObjectsRegistry::ReportDeletedObject() does not lock the registry, but only </span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment"> // atomically increments the outstanding deleted objects counter.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment"> PipelineStateRegistry.ReportDeletedObject();</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="comment"> RasterizerStateRegistry.ReportDeletedObject();</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment"> DSSRegistry.ReportDeletedObject();</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment"> */</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_PipelineState, TDeviceObjectBase )</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> Uint32* GetTightStrides()<span class="keyword">const</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keyword"> </span>{ </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> m_TightStrides;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  IShader* GetVS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#af66a7c20dc9251400779cf17cdbb4e87">m_pVS</a>;}</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  IShader* GetPS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad3a1941b976b6c84a6dbb1b9b4d9a080">m_pPS</a>;}</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  IShader* GetGS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#adf8c72e092b514fb745cee9033343357">m_pGS</a>;}</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  IShader* GetDS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a06bf5019d7ff2def707cc81bb79c3cee">m_pDS</a>;}</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  IShader* GetHS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a55066c8c3a861cf409f6e6535753372d">m_pHS</a>;}</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  IShader* GetCS(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad9c448280c41c57d8c745edbde788063">m_pCS</a>;}</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  IShader* <span class="keyword">const</span>* GetShaders()<span class="keyword">const</span>{<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>;}</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  Uint32 GetNumShaders()<span class="keyword">const</span>{<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>;}</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  std::vector<LayoutElement, STDAllocatorRawMem<LayoutElement> > m_LayoutElements;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// The size of this array must be equal to the</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// maximum number of buffer slots, because a layout </span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// element can refer to any input slot</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  Uint32 m_TightStrides[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>] = {};</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#af66a7c20dc9251400779cf17cdbb4e87"> 184</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#af66a7c20dc9251400779cf17cdbb4e87">m_pVS</a>; </div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#ad3a1941b976b6c84a6dbb1b9b4d9a080"> 185</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad3a1941b976b6c84a6dbb1b9b4d9a080">m_pPS</a>; </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#adf8c72e092b514fb745cee9033343357"> 186</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#adf8c72e092b514fb745cee9033343357">m_pGS</a>; </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#a06bf5019d7ff2def707cc81bb79c3cee"> 187</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a06bf5019d7ff2def707cc81bb79c3cee">m_pDS</a>; </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#a55066c8c3a861cf409f6e6535753372d"> 188</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a55066c8c3a861cf409f6e6535753372d">m_pHS</a>; </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#ad9c448280c41c57d8c745edbde788063"> 189</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IShader></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html#ad9c448280c41c57d8c745edbde788063">m_pCS</a>; </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500"> 190</a></span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> *<a class="code" href="class_diligent_1_1_pipeline_state_base.html#a74528c3a0f9bf38b38775a272addd500">m_ppShaders</a>[5]; </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85"> 191</a></span>  Uint32 <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>; </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> };</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="ttc" id="namespace_diligent_html_a9d3d207f6d44cb2988a2748e4dc97722"><div class="ttname"><a href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">Diligent::MaxBufferSlots</a></div><div class="ttdeci">static constexpr Uint32 MaxBufferSlots</div><div class="ttdoc">Maximum number of input buffer slots. D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT == 32...</div><div class="ttdef"><b>Definition:</b> Constants.h:33</div></div> <div class="ttc" id="class_diligent_1_1_pipeline_state_base_html_a06bf5019d7ff2def707cc81bb79c3cee"><div class="ttname"><a href="class_diligent_1_1_pipeline_state_base.html#a06bf5019d7ff2def707cc81bb79c3cee">Diligent::PipelineStateBase::m_pDS</a></div><div class="ttdeci">RefCntAutoPtr< IShader > m_pDS</div><div class="ttdoc">Strong reference to the domain shader. </div><div class="ttdef"><b>Definition:</b> PipelineStateBase.h:187</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> @@ -107,7 +107,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_pipeline_state_d3_d11_8h_source.html b/doc/html/_pipeline_state_d3_d11_8h_source.html index 50797742..932e2b49 100644 --- a/doc/html/_pipeline_state_d3_d11_8h_source.html +++ b/doc/html/_pipeline_state_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">PipelineStateD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {3EA6E3F4-9966-47FC-8CE8-0EB3E2273061}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_PipelineStateD3D11 = </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x3ea6e3f4, 0x9966, 0x47fc, { 0x8c, 0xe8, 0xe, 0xb3, 0xe2, 0x27, 0x30, 0x61 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_pipeline_state_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html">IPipelineStateD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11BlendState* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#a03914b983206cad1d9ffbc3fe90c7989">GetD3D11BlendState</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> ID3D11RasterizerState* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#a18b05eded32311719512a503137d7eef">GetD3D11RasterizerState</a>() = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> ID3D11DepthStencilState* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#acc1542437873ce8a215825bbfcf59574">GetD3D11DepthStencilState</a>() = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> ID3D11InputLayout* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#afe166b49b73df0741e258cfb57bb59f3">GetD3D11InputLayout</a>() = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> ID3D11VertexShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#aa33d69c253d3d77d8af8bc6ca5a868f6">GetD3D11VertexShader</a>() = 0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> ID3D11PixelShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#a1e40b46d555f5fab691f094c362ec8ae">GetD3D11PixelShader</a>() = 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> ID3D11GeometryShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#a96adf695b5e0a5a1830c4b043e603db4">GetD3D11GeometryShader</a>() = 0;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">virtual</span> ID3D11DomainShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#ab18f28189e255fc59fa080809d25417d">GetD3D11DomainShader</a>() = 0;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> ID3D11HullShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#ab5b55de97ddb78146bccbeb16107276a">GetD3D11HullShader</a>() = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">virtual</span> ID3D11ComputeShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#ac863591fe920e226840e699057c0442c">GetD3D11ComputeShader</a>() = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {3EA6E3F4-9966-47FC-8CE8-0EB3E2273061}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_PipelineStateD3D11 = </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x3ea6e3f4, 0x9966, 0x47fc, { 0x8c, 0xe8, 0xe, 0xb3, 0xe2, 0x27, 0x30, 0x61 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_pipeline_state_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html">IPipelineStateD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11BlendState* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#a03914b983206cad1d9ffbc3fe90c7989">GetD3D11BlendState</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> ID3D11RasterizerState* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#a18b05eded32311719512a503137d7eef">GetD3D11RasterizerState</a>() = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> ID3D11DepthStencilState* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#acc1542437873ce8a215825bbfcf59574">GetD3D11DepthStencilState</a>() = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> ID3D11InputLayout* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#afe166b49b73df0741e258cfb57bb59f3">GetD3D11InputLayout</a>() = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> ID3D11VertexShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#aa33d69c253d3d77d8af8bc6ca5a868f6">GetD3D11VertexShader</a>() = 0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> ID3D11PixelShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#a1e40b46d555f5fab691f094c362ec8ae">GetD3D11PixelShader</a>() = 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> ID3D11GeometryShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#a96adf695b5e0a5a1830c4b043e603db4">GetD3D11GeometryShader</a>() = 0;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">virtual</span> ID3D11DomainShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#ab18f28189e255fc59fa080809d25417d">GetD3D11DomainShader</a>() = 0;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> ID3D11HullShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#ab5b55de97ddb78146bccbeb16107276a">GetD3D11HullShader</a>() = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">virtual</span> ID3D11ComputeShader* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d11.html#ac863591fe920e226840e699057c0442c">GetD3D11ComputeShader</a>() = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_pipeline_state_d3_d11_html_a1e40b46d555f5fab691f094c362ec8ae"><div class="ttname"><a href="class_diligent_1_1_i_pipeline_state_d3_d11.html#a1e40b46d555f5fab691f094c362ec8ae">Diligent::IPipelineStateD3D11::GetD3D11PixelShader</a></div><div class="ttdeci">virtual ID3D11PixelShader * GetD3D11PixelShader()=0</div><div class="ttdoc">Returns a pointer to the ID3D11PixelShader interface of the internal pixel shader object...</div></div> <div class="ttc" id="class_diligent_1_1_i_pipeline_state_d3_d11_html_a18b05eded32311719512a503137d7eef"><div class="ttname"><a href="class_diligent_1_1_i_pipeline_state_d3_d11.html#a18b05eded32311719512a503137d7eef">Diligent::IPipelineStateD3D11::GetD3D11RasterizerState</a></div><div class="ttdeci">virtual ID3D11RasterizerState * GetD3D11RasterizerState()=0</div><div class="ttdoc">Returns a pointer to the ID3D11RasterizerState interface of the internal Direct3D11 object...</div></div> <div class="ttc" id="class_diligent_1_1_i_pipeline_state_d3_d11_html_afe166b49b73df0741e258cfb57bb59f3"><div class="ttname"><a href="class_diligent_1_1_i_pipeline_state_d3_d11.html#afe166b49b73df0741e258cfb57bb59f3">Diligent::IPipelineStateD3D11::GetD3D11InputLayout</a></div><div class="ttdeci">virtual ID3D11InputLayout * GetD3D11InputLayout()=0</div><div class="ttdoc">Returns a pointer to the ID3D11InputLayout interface of the internal Direct3D11 object. </div></div> @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_pipeline_state_d3_d11_impl_8h_source.html b/doc/html/_pipeline_state_d3_d11_impl_8h_source.html index 5b0f2853..7525e0f3 100644 --- a/doc/html/_pipeline_state_d3_d11_impl_8h_source.html +++ b/doc/html/_pipeline_state_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">PipelineStateD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "PipelineStateD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "PipelineStateBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ShaderD3D11Impl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "AdaptiveFixedBlockAllocator.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html">PipelineStateD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase</a><IPipelineStateD3D11, IRenderDeviceD3D11></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase<IPipelineStateD3D11, IRenderDeviceD3D11></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">TPipelineStateBase</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html">PipelineStateD3D11Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a>& PipelineDesc);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ~<a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html">PipelineStateD3D11Impl</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> ID3D11BlendState* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a6df29e1fec4bf908d858d7cfbf0aa36d">GetD3D11BlendState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> ID3D11RasterizerState* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a02aad253fbd57d902bc28b138d69b8c7">GetD3D11RasterizerState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> ID3D11DepthStencilState* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#aef97ddf86eee72e03245321d3b203258">GetD3D11DepthStencilState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> ID3D11InputLayout* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a1735873b92d8f398437d4a1af55df98f">GetD3D11InputLayout</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> ID3D11VertexShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a6be0ba4e66ccf28590e35cd7d18925d9">GetD3D11VertexShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> ID3D11PixelShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a9315cb9cdcdf87d2a4d482847b3adaac">GetD3D11PixelShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> ID3D11GeometryShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a2afdb86a96525af3c827ef4b5ed6c2b1">GetD3D11GeometryShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> ID3D11DomainShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#ab7826f5dc1b510c7285e02042542913f">GetD3D11DomainShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> ID3D11HullShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a3ce9a4f0f421421448d8a9c0a15fe183">GetD3D11HullShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> ID3D11ComputeShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#af0f01462446e3f23aca49904458b4bad">GetD3D11ComputeShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#acb20b58acad55035d1ea8bab1537c471">BindShaderResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResourceMapping, Uint32 Flags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#afcbe1925e337ad27541d908eff08d5f8">CreateShaderResourceBinding</a>( <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> **ppShaderResourceBinding )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html">ShaderResourceBindingD3D11Impl</a>* GetDefaultResourceBinding(){<span class="keywordflow">return</span> m_pDefaultShaderResBinding.get();}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  IMemoryAllocator &GetResourceCacheDataAllocator(Uint32 ActiveShaderInd)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  VERIFY_EXPR(ActiveShaderInd < <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">auto</span> *pAllocator = m_Allocators.GetResourceCacheDataAllocator(ActiveShaderInd);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> pAllocator != <span class="keyword">nullptr</span> ? *pAllocator : <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  IMemoryAllocator &GetShaderResLayoutDataAllocators(Uint32 ActiveShaderInd)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  VERIFY_EXPR(ActiveShaderInd < <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">auto</span> *pAllocator = m_Allocators.GetShaderResLayoutDataAllocator(ActiveShaderInd);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> pAllocator != <span class="keyword">nullptr</span> ? *pAllocator : <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* GetDummyShaderVariable(){<span class="keywordflow">return</span> &m_DummyShaderVar;}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  CComPtr<ID3D11BlendState> m_pd3d11BlendState;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  CComPtr<ID3D11RasterizerState> m_pd3d11RasterizerState;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  CComPtr<ID3D11DepthStencilState> m_pd3d11DepthStencilState;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  CComPtr<ID3D11InputLayout> m_pd3d11InputLayout;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">class </span>DataAllocators</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  ~DataAllocators();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">void</span> Init(<span class="keywordtype">size_t</span> NumActiveShaders, Uint32 SRBAllocationGranularity);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  AdaptiveFixedBlockAllocator* GetShaderResLayoutDataAllocator(Uint32 Ind)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  VERIFY_EXPR(Ind < _countof(m_pShaderResLayoutDataAllocators));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> m_pShaderResLayoutDataAllocators[Ind];</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  AdaptiveFixedBlockAllocator* GetResourceCacheDataAllocator(Uint32 Ind)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  VERIFY_EXPR(Ind < _countof(m_pResourceCacheDataAllocators));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> m_pResourceCacheDataAllocators[Ind];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  AdaptiveFixedBlockAllocator* m_pShaderResLayoutDataAllocators[5] = {}; <span class="comment">// Use separate allocator for every shader stage</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  AdaptiveFixedBlockAllocator* m_pResourceCacheDataAllocators[5] = {}; <span class="comment">// Use separate allocator for every shader stage</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }m_Allocators; <span class="comment">// Allocators must be defined before the default shader res binding</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Do not use strong reference to avoid cyclic references</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Must be declared after the data allocators</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  std::unique_ptr<class ShaderResourceBindingD3D11Impl, STDDeleter<ShaderResourceBindingD3D11Impl, FixedBlockMemoryAllocator> > m_pDefaultShaderResBinding;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a> m_DummyShaderVar; </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "PipelineStateD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "PipelineStateBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ShaderD3D11Impl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "AdaptiveFixedBlockAllocator.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html">PipelineStateD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase</a><IPipelineStateD3D11, IRenderDeviceD3D11></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase<IPipelineStateD3D11, IRenderDeviceD3D11></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">TPipelineStateBase</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html">PipelineStateD3D11Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a>& PipelineDesc);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ~<a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html">PipelineStateD3D11Impl</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> ID3D11BlendState* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a6df29e1fec4bf908d858d7cfbf0aa36d">GetD3D11BlendState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> ID3D11RasterizerState* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a02aad253fbd57d902bc28b138d69b8c7">GetD3D11RasterizerState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> ID3D11DepthStencilState* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#aef97ddf86eee72e03245321d3b203258">GetD3D11DepthStencilState</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> ID3D11InputLayout* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a1735873b92d8f398437d4a1af55df98f">GetD3D11InputLayout</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> ID3D11VertexShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a6be0ba4e66ccf28590e35cd7d18925d9">GetD3D11VertexShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> ID3D11PixelShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a9315cb9cdcdf87d2a4d482847b3adaac">GetD3D11PixelShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> ID3D11GeometryShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a2afdb86a96525af3c827ef4b5ed6c2b1">GetD3D11GeometryShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> ID3D11DomainShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#ab7826f5dc1b510c7285e02042542913f">GetD3D11DomainShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> ID3D11HullShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a3ce9a4f0f421421448d8a9c0a15fe183">GetD3D11HullShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> ID3D11ComputeShader* <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#af0f01462446e3f23aca49904458b4bad">GetD3D11ComputeShader</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#acb20b58acad55035d1ea8bab1537c471">BindShaderResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResourceMapping, Uint32 Flags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#afcbe1925e337ad27541d908eff08d5f8">CreateShaderResourceBinding</a>( <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> **ppShaderResourceBinding )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html">ShaderResourceBindingD3D11Impl</a>* GetDefaultResourceBinding(){<span class="keywordflow">return</span> m_pDefaultShaderResBinding.get();}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  IMemoryAllocator &GetResourceCacheDataAllocator(Uint32 ActiveShaderInd)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  VERIFY_EXPR(ActiveShaderInd < <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">auto</span> *pAllocator = m_Allocators.GetResourceCacheDataAllocator(ActiveShaderInd);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> pAllocator != <span class="keyword">nullptr</span> ? *pAllocator : <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  IMemoryAllocator &GetShaderResLayoutDataAllocators(Uint32 ActiveShaderInd)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  VERIFY_EXPR(ActiveShaderInd < <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">auto</span> *pAllocator = m_Allocators.GetShaderResLayoutDataAllocator(ActiveShaderInd);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> pAllocator != <span class="keyword">nullptr</span> ? *pAllocator : <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* GetDummyShaderVariable(){<span class="keywordflow">return</span> &m_DummyShaderVar;}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  CComPtr<ID3D11BlendState> m_pd3d11BlendState;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  CComPtr<ID3D11RasterizerState> m_pd3d11RasterizerState;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  CComPtr<ID3D11DepthStencilState> m_pd3d11DepthStencilState;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  CComPtr<ID3D11InputLayout> m_pd3d11InputLayout;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">class </span>DataAllocators</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  ~DataAllocators();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">void</span> Init(<span class="keywordtype">size_t</span> NumActiveShaders, Uint32 SRBAllocationGranularity);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  AdaptiveFixedBlockAllocator* GetShaderResLayoutDataAllocator(Uint32 Ind)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  VERIFY_EXPR(Ind < _countof(m_pShaderResLayoutDataAllocators));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> m_pShaderResLayoutDataAllocators[Ind];</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  AdaptiveFixedBlockAllocator* GetResourceCacheDataAllocator(Uint32 Ind)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  VERIFY_EXPR(Ind < _countof(m_pResourceCacheDataAllocators));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> m_pResourceCacheDataAllocators[Ind];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  AdaptiveFixedBlockAllocator* m_pShaderResLayoutDataAllocators[5] = {}; <span class="comment">// Use separate allocator for every shader stage</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  AdaptiveFixedBlockAllocator* m_pResourceCacheDataAllocators[5] = {}; <span class="comment">// Use separate allocator for every shader stage</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }m_Allocators; <span class="comment">// Allocators must be defined before the default shader res binding</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Do not use strong reference to avoid cyclic references</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Must be declared after the data allocators</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  std::unique_ptr<class ShaderResourceBindingD3D11Impl, STDDeleter<ShaderResourceBindingD3D11Impl, FixedBlockMemoryAllocator> > m_pDefaultShaderResBinding;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a> m_DummyShaderVar; </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> <div class="ttc" id="class_diligent_1_1_pipeline_state_base_html"><div class="ttname"><a href="class_diligent_1_1_pipeline_state_base.html">Diligent::PipelineStateBase</a></div><div class="ttdoc">Template class implementing base functionality for a pipeline state object. </div><div class="ttdef"><b>Definition:</b> PipelineStateBase.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_pipeline_state_d3_d11_impl_html_a6df29e1fec4bf908d858d7cfbf0aa36d"><div class="ttname"><a href="class_diligent_1_1_pipeline_state_d3_d11_impl.html#a6df29e1fec4bf908d858d7cfbf0aa36d">Diligent::PipelineStateD3D11Impl::GetD3D11BlendState</a></div><div class="ttdeci">virtual ID3D11BlendState * GetD3D11BlendState() override final</div><div class="ttdoc">Implementation of the IPipelineStateD3D11::GetD3D11BlendState() method. </div><div class="ttdef"><b>Definition:</b> PipelineStateD3D11Impl.cpp:145</div></div> @@ -98,7 +98,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_pipeline_state_d3_d12_8h_source.html b/doc/html/_pipeline_state_d3_d12_8h_source.html index d952479d..19b3cfcc 100644 --- a/doc/html/_pipeline_state_d3_d12_8h_source.html +++ b/doc/html/_pipeline_state_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">PipelineStateD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {33C9BE4B-6F23-4F83-A665-5AC1836DF35A}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_PipelineStateD3D12 = </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x33c9be4b, 0x6f23, 0x4f83, { 0xa6, 0x65, 0x5a, 0xc1, 0x83, 0x6d, 0xf3, 0x5a } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_pipeline_state_d3_d12.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d12.html">IPipelineStateD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> ID3D12PipelineState* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d12.html#ae40fb301da3c8dc1a48e7d32e3e8ffd7">GetD3D12PipelineState</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> ID3D12RootSignature* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d12.html#a4020f566e718c9300c5963b4b82a10b7">GetD3D12RootSignature</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="ttc" id="class_diligent_1_1_i_pipeline_state_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_pipeline_state_d3_d12.html">Diligent::IPipelineStateD3D12</a></div><div class="ttdoc">Interface to the blend state object implemented in D3D12. </div><div class="ttdef"><b>Definition:</b> PipelineStateD3D12.h:40</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {33C9BE4B-6F23-4F83-A665-5AC1836DF35A}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_PipelineStateD3D12 = </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x33c9be4b, 0x6f23, 0x4f83, { 0xa6, 0x65, 0x5a, 0xc1, 0x83, 0x6d, 0xf3, 0x5a } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_pipeline_state_d3_d12.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d12.html">IPipelineStateD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> ID3D12PipelineState* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d12.html#ae40fb301da3c8dc1a48e7d32e3e8ffd7">GetD3D12PipelineState</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> ID3D12RootSignature* <a class="code" href="class_diligent_1_1_i_pipeline_state_d3_d12.html#a4020f566e718c9300c5963b4b82a10b7">GetD3D12RootSignature</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="ttc" id="class_diligent_1_1_i_pipeline_state_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_pipeline_state_d3_d12.html">Diligent::IPipelineStateD3D12</a></div><div class="ttdoc">Interface to the blend state object implemented in D3D12. </div><div class="ttdef"><b>Definition:</b> PipelineStateD3D12.h:40</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_pipeline_state_d3_d12_html_ae40fb301da3c8dc1a48e7d32e3e8ffd7"><div class="ttname"><a href="class_diligent_1_1_i_pipeline_state_d3_d12.html#ae40fb301da3c8dc1a48e7d32e3e8ffd7">Diligent::IPipelineStateD3D12::GetD3D12PipelineState</a></div><div class="ttdeci">virtual ID3D12PipelineState * GetD3D12PipelineState() const =0</div><div class="ttdoc">Returns ID3D12PipelineState interface of the internal D3D12 pipeline state object object...</div></div> <div class="ttc" id="class_diligent_1_1_i_pipeline_state_html"><div class="ttname"><a href="class_diligent_1_1_i_pipeline_state.html">Diligent::IPipelineState</a></div><div class="ttdef"><b>Definition:</b> PipelineState.h:209</div></div> @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_pipeline_state_d3_d12_impl_8h_source.html b/doc/html/_pipeline_state_d3_d12_impl_8h_source.html index 965a1af8..41bdefdb 100644 --- a/doc/html/_pipeline_state_d3_d12_impl_8h_source.html +++ b/doc/html/_pipeline_state_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">PipelineStateD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "PipelineStateD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "PipelineStateBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "RootSignature.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D12.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "AdaptiveFixedBlockAllocator.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase</a><IPipelineStateD3D12, IRenderDeviceD3D12></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase<IPipelineStateD3D12, IRenderDeviceD3D12></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">TPipelineStateBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a>( IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc );</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ~<a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a32a0d2074411a1b761105047edb4a664"> 52</a></span>  <span class="keyword">virtual</span> ID3D12PipelineState *<a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a32a0d2074411a1b761105047edb4a664">GetD3D12PipelineState</a>()const override final{<span class="keywordflow">return</span> m_pd3d12PSO;}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a972d662c2a94bb00707bf5f143f34e82">BindShaderResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResourceMapping, Uint32 Flags )<span class="keyword">override</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a3130cea7dfb9bd18a368e77b4281f7f8">CreateShaderResourceBinding</a>( <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> **ppShaderResourceBinding )<span class="keyword">override</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a36c5b54e1750182c185fff98deac0efa"> 58</a></span>  <span class="keyword">virtual</span> ID3D12RootSignature *<a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a36c5b54e1750182c185fff98deac0efa">GetD3D12RootSignature</a>()const override final{<span class="keywordflow">return</span> m_RootSig.GetD3D12RootSignature(); }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ShaderResourceCacheD3D12* CommitAndTransitionShaderResources(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">class</span> CommandContext &Ctx,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> CommitResources,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">bool</span> TransitionResources)<span class="keyword">const</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a>& GetRootSignature()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_RootSig;}</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">const</span> ShaderResourceLayoutD3D12& GetShaderResLayout(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType)<span class="keyword">const</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">bool</span> dbgContainsShaderResources()<span class="keyword">const</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  IMemoryAllocator &GetResourceCacheDataAllocator(){<span class="keywordflow">return</span> m_ResourceCacheDataAllocator;}</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  IMemoryAllocator &GetShaderResourceLayoutDataAllocator(Uint32 ActiveShaderInd)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  VERIFY_EXPR(ActiveShaderInd < <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">auto</span> *pAllocator = m_ResLayoutDataAllocators.GetAllocator(ActiveShaderInd);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> pAllocator != <span class="keyword">nullptr</span> ? *pAllocator : <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  IShaderVariable *GetDummyShaderVar(){<span class="keywordflow">return</span> &m_DummyVar;}</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">void</span> ParseShaderResourceLayout(IShader *pShader);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  CComPtr<ID3D12PipelineState> m_pd3d12PSO;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  RootSignature m_RootSig;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  DummyShaderVariable m_DummyVar;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Looks like there may be a bug in msvc: when allocators are declared as </span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// an array and if an exception is thrown from constructor, the app crashes</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">class </span>ResLayoutDataAllocators</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  ~ResLayoutDataAllocators()</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i=0; i < _countof(m_pAllocators); ++i)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(m_pAllocators[i] != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  DESTROY_POOL_OBJECT(m_pAllocators[i]);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">void</span> Init(Uint32 NumActiveShaders, Uint32 SRBAllocationGranularity)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  VERIFY_EXPR(NumActiveShaders <= _countof(m_pAllocators) );</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">for</span>(Uint32 i=0; i < NumActiveShaders; ++i)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_pAllocators[i] = NEW_POOL_OBJECT(AdaptiveFixedBlockAllocator, <span class="stringliteral">"Shader resource layout data allocator"</span>, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), SRBAllocationGranularity);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  AdaptiveFixedBlockAllocator *GetAllocator(Uint32 ActiveShaderInd)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  VERIFY_EXPR(ActiveShaderInd < _countof(m_pAllocators) );</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> m_pAllocators[ActiveShaderInd];</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  AdaptiveFixedBlockAllocator *m_pAllocators[5] = {};</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }m_ResLayoutDataAllocators; <span class="comment">// Allocators must be defined before default SRB</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  ShaderResourceLayoutD3D12* m_pShaderResourceLayouts[6] = {};</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  AdaptiveFixedBlockAllocator m_ResourceCacheDataAllocator; <span class="comment">// Use separate allocator for every shader stage</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Do not use strong reference to avoid cyclic references</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// Default SRB must be defined after allocators</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  std::unique_ptr<class ShaderResourceBindingD3D12Impl, STDDeleter<ShaderResourceBindingD3D12Impl, FixedBlockMemoryAllocator> > m_pDefaultShaderResBinding;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> };</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="ttc" id="class_diligent_1_1_pipeline_state_base_html"><div class="ttname"><a href="class_diligent_1_1_pipeline_state_base.html">Diligent::PipelineStateBase</a></div><div class="ttdoc">Template class implementing base functionality for a pipeline state object. </div><div class="ttdef"><b>Definition:</b> PipelineStateBase.h:46</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "PipelineStateD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "PipelineStateBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "RootSignature.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D12.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "AdaptiveFixedBlockAllocator.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase</a><IPipelineStateD3D12, IRenderDeviceD3D12></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase<IPipelineStateD3D12, IRenderDeviceD3D12></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">TPipelineStateBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a>( IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc );</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ~<a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a32a0d2074411a1b761105047edb4a664"> 52</a></span>  <span class="keyword">virtual</span> ID3D12PipelineState *<a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a32a0d2074411a1b761105047edb4a664">GetD3D12PipelineState</a>()const override final{<span class="keywordflow">return</span> m_pd3d12PSO;}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a972d662c2a94bb00707bf5f143f34e82">BindShaderResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResourceMapping, Uint32 Flags )<span class="keyword">override</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a3130cea7dfb9bd18a368e77b4281f7f8">CreateShaderResourceBinding</a>( <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> **ppShaderResourceBinding )<span class="keyword">override</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a36c5b54e1750182c185fff98deac0efa"> 58</a></span>  <span class="keyword">virtual</span> ID3D12RootSignature *<a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a36c5b54e1750182c185fff98deac0efa">GetD3D12RootSignature</a>()const override final{<span class="keywordflow">return</span> m_RootSig.GetD3D12RootSignature(); }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ShaderResourceCacheD3D12* CommitAndTransitionShaderResources(<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> *pShaderResourceBinding, </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">class</span> CommandContext &Ctx,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> CommitResources,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">bool</span> TransitionResources)<span class="keyword">const</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a>& GetRootSignature()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_RootSig;}</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">const</span> ShaderResourceLayoutD3D12& GetShaderResLayout(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType)<span class="keyword">const</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">bool</span> dbgContainsShaderResources()<span class="keyword">const</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  IMemoryAllocator &GetResourceCacheDataAllocator(){<span class="keywordflow">return</span> m_ResourceCacheDataAllocator;}</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  IMemoryAllocator &GetShaderResourceLayoutDataAllocator(Uint32 ActiveShaderInd)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  VERIFY_EXPR(ActiveShaderInd < <a class="code" href="class_diligent_1_1_pipeline_state_base.html#a901b298592cced3a12082de676704d85">m_NumShaders</a>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">auto</span> *pAllocator = m_ResLayoutDataAllocators.GetAllocator(ActiveShaderInd);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> pAllocator != <span class="keyword">nullptr</span> ? *pAllocator : <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  IShaderVariable *GetDummyShaderVar(){<span class="keywordflow">return</span> &m_DummyVar;}</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">void</span> ParseShaderResourceLayout(IShader *pShader);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  CComPtr<ID3D12PipelineState> m_pd3d12PSO;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  RootSignature m_RootSig;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  DummyShaderVariable m_DummyVar;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Looks like there may be a bug in msvc: when allocators are declared as </span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// an array and if an exception is thrown from constructor, the app crashes</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">class </span>ResLayoutDataAllocators</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  ~ResLayoutDataAllocators()</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i=0; i < _countof(m_pAllocators); ++i)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(m_pAllocators[i] != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  DESTROY_POOL_OBJECT(m_pAllocators[i]);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">void</span> Init(Uint32 NumActiveShaders, Uint32 SRBAllocationGranularity)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  VERIFY_EXPR(NumActiveShaders <= _countof(m_pAllocators) );</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">for</span>(Uint32 i=0; i < NumActiveShaders; ++i)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_pAllocators[i] = NEW_POOL_OBJECT(AdaptiveFixedBlockAllocator, <span class="stringliteral">"Shader resource layout data allocator"</span>, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), SRBAllocationGranularity);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  AdaptiveFixedBlockAllocator *GetAllocator(Uint32 ActiveShaderInd)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  VERIFY_EXPR(ActiveShaderInd < _countof(m_pAllocators) );</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> m_pAllocators[ActiveShaderInd];</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  AdaptiveFixedBlockAllocator *m_pAllocators[5] = {};</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }m_ResLayoutDataAllocators; <span class="comment">// Allocators must be defined before default SRB</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  ShaderResourceLayoutD3D12* m_pShaderResourceLayouts[6] = {};</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  AdaptiveFixedBlockAllocator m_ResourceCacheDataAllocator; <span class="comment">// Use separate allocator for every shader stage</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Do not use strong reference to avoid cyclic references</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// Default SRB must be defined after allocators</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  std::unique_ptr<class ShaderResourceBindingD3D12Impl, STDDeleter<ShaderResourceBindingD3D12Impl, FixedBlockMemoryAllocator> > m_pDefaultShaderResBinding;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> };</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="ttc" id="class_diligent_1_1_pipeline_state_base_html"><div class="ttname"><a href="class_diligent_1_1_pipeline_state_base.html">Diligent::PipelineStateBase</a></div><div class="ttdoc">Template class implementing base functionality for a pipeline state object. </div><div class="ttdef"><b>Definition:</b> PipelineStateBase.h:46</div></div> <div class="ttc" id="class_diligent_1_1_pipeline_state_d3_d12_impl_html_a3130cea7dfb9bd18a368e77b4281f7f8"><div class="ttname"><a href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a3130cea7dfb9bd18a368e77b4281f7f8">Diligent::PipelineStateD3D12Impl::CreateShaderResourceBinding</a></div><div class="ttdeci">virtual void CreateShaderResourceBinding(IShaderResourceBinding **ppShaderResourceBinding) override</div><div class="ttdoc">Creates a shader resource binding object. </div><div class="ttdef"><b>Definition:</b> PipelineStateD3D12Impl.cpp:260</div></div> <div class="ttc" id="class_diligent_1_1_pipeline_state_d3_d12_impl_html_a32a0d2074411a1b761105047edb4a664"><div class="ttname"><a href="class_diligent_1_1_pipeline_state_d3_d12_impl.html#a32a0d2074411a1b761105047edb4a664">Diligent::PipelineStateD3D12Impl::GetD3D12PipelineState</a></div><div class="ttdeci">virtual ID3D12PipelineState * GetD3D12PipelineState() const override final</div><div class="ttdoc">Returns ID3D12PipelineState interface of the internal D3D12 pipeline state object object...</div><div class="ttdef"><b>Definition:</b> PipelineStateD3D12Impl.h:52</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> @@ -89,7 +89,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_pipeline_state_g_l_8h_source.html b/doc/html/_pipeline_state_g_l_8h_source.html index e5777a1d..ad253d08 100644 --- a/doc/html/_pipeline_state_g_l_8h_source.html +++ b/doc/html/_pipeline_state_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">PipelineStateGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {80666BE3-318A-4403-AEE1-6E61A5B7A0F9}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_PipelineStateGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x80666be3, 0x318a, 0x4403, { 0xae, 0xe1, 0x6e, 0x61, 0xa5, 0xb7, 0xa0, 0xf9 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_pipeline_state_g_l.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_pipeline_state_g_l.html">IPipelineStateGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {80666BE3-318A-4403-AEE1-6E61A5B7A0F9}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_PipelineStateGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x80666be3, 0x318a, 0x4403, { 0xae, 0xe1, 0x6e, 0x61, 0xa5, 0xb7, 0xa0, 0xf9 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_pipeline_state_g_l.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_pipeline_state_g_l.html">IPipelineStateGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_pipeline_state_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_pipeline_state_g_l.html">Diligent::IPipelineStateGL</a></div><div class="ttdoc">Interface to the PipelineState object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> PipelineStateGL.h:40</div></div> <div class="ttc" id="class_diligent_1_1_i_pipeline_state_html"><div class="ttname"><a href="class_diligent_1_1_i_pipeline_state.html">Diligent::IPipelineState</a></div><div class="ttdef"><b>Definition:</b> PipelineState.h:209</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_pipeline_state_g_l_impl_8h_source.html b/doc/html/_pipeline_state_g_l_impl_8h_source.html index 353a07ce..c49bbf18 100644 --- a/doc/html/_pipeline_state_g_l_impl_8h_source.html +++ b/doc/html/_pipeline_state_g_l_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">PipelineStateGLImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "PipelineStateGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "PipelineStateBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GLProgram.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GLContext.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_g_l_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase</a><IPipelineStateGL, IGLDeviceBaseInterface></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase<IPipelineStateGL, IGLDeviceBaseInterface></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">TPipelineStateBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a>& PipelineDesc, <span class="keywordtype">bool</span> IsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html#add03e8cc624a0b5e30e7ecc343921df9">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html#aca1a687586f5f706fa6491c8b7c9cbc1">BindShaderResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResourceMapping, Uint32 Flags )<span class="keyword">override</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html#ab6ada7fa88085ec29af09c0ee04d730d">CreateShaderResourceBinding</a>( <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> **ppShaderResourceBinding )<span class="keyword">override</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GLProgram &GetGLProgram(){<span class="keywordflow">return</span> m_GLProgram;}</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  GLObjectWrappers::GLPipelineObj &GetGLProgramPipeline(GLContext::NativeGLContextType Context);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> LinkGLProgram(<span class="keywordtype">bool</span> bIsProgramPipelineSupported);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLProgram m_GLProgram;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  ThreadingTools::LockFlag m_ProgPipelineLockFlag;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  std::unordered_map<GLContext::NativeGLContextType, GLObjectWrappers::GLPipelineObj> m_GLProgPipelines;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="ttc" id="class_diligent_1_1_pipeline_state_base_html"><div class="ttname"><a href="class_diligent_1_1_pipeline_state_base.html">Diligent::PipelineStateBase</a></div><div class="ttdoc">Template class implementing base functionality for a pipeline state object. </div><div class="ttdef"><b>Definition:</b> PipelineStateBase.h:46</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "PipelineStateGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "PipelineStateBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GLProgram.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GLContext.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_pipeline_state_g_l_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase</a><IPipelineStateGL, IGLDeviceBaseInterface></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">PipelineStateBase<IPipelineStateGL, IGLDeviceBaseInterface></a> <a class="code" href="class_diligent_1_1_pipeline_state_base.html">TPipelineStateBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a>& PipelineDesc, <span class="keywordtype">bool</span> IsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html#add03e8cc624a0b5e30e7ecc343921df9">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html#aca1a687586f5f706fa6491c8b7c9cbc1">BindShaderResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResourceMapping, Uint32 Flags )<span class="keyword">override</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html#ab6ada7fa88085ec29af09c0ee04d730d">CreateShaderResourceBinding</a>( <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> **ppShaderResourceBinding )<span class="keyword">override</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GLProgram &GetGLProgram(){<span class="keywordflow">return</span> m_GLProgram;}</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  GLObjectWrappers::GLPipelineObj &GetGLProgramPipeline(GLContext::NativeGLContextType Context);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> LinkGLProgram(<span class="keywordtype">bool</span> bIsProgramPipelineSupported);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLProgram m_GLProgram;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  ThreadingTools::LockFlag m_ProgPipelineLockFlag;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  std::unordered_map<GLContext::NativeGLContextType, GLObjectWrappers::GLPipelineObj> m_GLProgPipelines;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="ttc" id="class_diligent_1_1_pipeline_state_base_html"><div class="ttname"><a href="class_diligent_1_1_pipeline_state_base.html">Diligent::PipelineStateBase</a></div><div class="ttdoc">Template class implementing base functionality for a pipeline state object. </div><div class="ttdef"><b>Definition:</b> PipelineStateBase.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_resource_mapping_html"><div class="ttname"><a href="class_diligent_1_1_i_resource_mapping.html">Diligent::IResourceMapping</a></div><div class="ttdoc">Resouce mapping. </div><div class="ttdef"><b>Definition:</b> ResourceMapping.h:80</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_resource_binding_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_resource_binding.html">Diligent::IShaderResourceBinding</a></div><div class="ttdoc">Shader resource binding interface. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBinding.h:40</div></div> @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_platform_debug_8h_source.html b/doc/html/_platform_debug_8h_source.html index e2311e66..ab04ad5b 100644 --- a/doc/html/_platform_debug_8h_source.html +++ b/doc/html/_platform_debug_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">PlatformDebug.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#if defined( PLATFORM_WIN32 )</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"> #include "Win32Debug.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">typedef</span> WindowsDebug PlatformDebug;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#elif defined( PLATFORM_UNIVERSAL_WINDOWS )</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"> #include "UWPDebug.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">typedef</span> WindowsStoreDebug PlatformDebug;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#elif defined ( PLATFORM_ANDROID )</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor"> #include "AndroidDebug.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> AndroidDebug PlatformDebug;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#elif defined ( PLATFORM_LINUX )</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"> #include "LinuxDebug.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> LinuxDebug PlatformDebug;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"> #error Unsupported platform</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#if defined( PLATFORM_WIN32 )</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"> #include "Win32Debug.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">typedef</span> WindowsDebug PlatformDebug;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#elif defined( PLATFORM_UNIVERSAL_WINDOWS )</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"> #include "UWPDebug.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">typedef</span> WindowsStoreDebug PlatformDebug;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#elif defined ( PLATFORM_ANDROID )</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor"> #include "AndroidDebug.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> AndroidDebug PlatformDebug;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#elif defined ( PLATFORM_LINUX )</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"> #include "LinuxDebug.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> LinuxDebug PlatformDebug;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"> #error Unsupported platform</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_platform_definitions_8h_source.html b/doc/html/_platform_definitions_8h_source.html index 9b2a6da5..bee99d25 100644 --- a/doc/html/_platform_definitions_8h_source.html +++ b/doc/html/_platform_definitions_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">PlatformDefinitions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#if defined(ANDROID)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"># ifndef PLATFORM_ANDROID</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor"># define PLATFORM_ANDROID</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#if !defined(PLATFORM_WIN32) && !defined(PLATFORM_UNIVERSAL_WINDOWS) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"> #error Platform is not defined</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#if defined( PLATFORM_WIN32 )</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor"># if defined(PLATFORM_UNIVERSAL_WINDOWS) || defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX) </span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor"># error Conflicting platform macros</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"># include "Win32PlatformDefinitions.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"># define OPENGL_SUPPORTED 1</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define D3D11_SUPPORTED 1</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"># define D3D12_SUPPORTED 1</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#elif defined( PLATFORM_UNIVERSAL_WINDOWS )</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor"># if defined(PLATFORM_WIN32) || defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX) </span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"># error Conflicting platform macros</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor"># include "UWPDefinitions.h"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"># define OPENGL_SUPPORTED 0</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor"># define D3D11_SUPPORTED 1</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor"># define D3D12_SUPPORTED 1</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#elif defined( PLATFORM_ANDROID )</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"># if defined (PLATFORM_WIN32) || defined(PLATFORM_UNIVERSAL_WINDOWS) || defined (PLATFORM_LINUX) </span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"># error Conflicting platform macros</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"># include "AndroidPlatformDefinitions.h"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"># define OPENGL_SUPPORTED 1</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"># define D3D11_SUPPORTED 0</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"># define D3D12_SUPPORTED 0</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#elif defined( PLATFORM_LINUX )</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"># if defined(PLATFORM_WIN32) || defined(PLATFORM_UNIVERSAL_WINDOWS) || defined(PLATFORM_ANDROID) </span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"># error Conflicting platform macros</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"># include "LinuxPlatformDefinitions.h"</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"># define OPENGL_SUPPORTED 1</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"># define D3D11_SUPPORTED 0</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"># define D3D12_SUPPORTED 0</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"># error Unsupported platform</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#if defined(ANDROID)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"># ifndef PLATFORM_ANDROID</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor"># define PLATFORM_ANDROID</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#if !defined(PLATFORM_WIN32) && !defined(PLATFORM_UNIVERSAL_WINDOWS) && !defined(PLATFORM_ANDROID) && !defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"> #error Platform is not defined</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#if defined( PLATFORM_WIN32 )</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor"># if defined(PLATFORM_UNIVERSAL_WINDOWS) || defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX) </span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor"># error Conflicting platform macros</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"># include "Win32PlatformDefinitions.h"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"># define OPENGL_SUPPORTED 1</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define D3D11_SUPPORTED 1</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"># define D3D12_SUPPORTED 1</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#elif defined( PLATFORM_UNIVERSAL_WINDOWS )</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor"># if defined(PLATFORM_WIN32) || defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX) </span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"># error Conflicting platform macros</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor"># include "UWPDefinitions.h"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"># define OPENGL_SUPPORTED 0</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor"># define D3D11_SUPPORTED 1</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor"># define D3D12_SUPPORTED 1</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#elif defined( PLATFORM_ANDROID )</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"># if defined (PLATFORM_WIN32) || defined(PLATFORM_UNIVERSAL_WINDOWS) || defined (PLATFORM_LINUX) </span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"># error Conflicting platform macros</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"># include "AndroidPlatformDefinitions.h"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"># define OPENGL_SUPPORTED 1</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"># define D3D11_SUPPORTED 0</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"># define D3D12_SUPPORTED 0</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#elif defined( PLATFORM_LINUX )</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"># if defined(PLATFORM_WIN32) || defined(PLATFORM_UNIVERSAL_WINDOWS) || defined(PLATFORM_ANDROID) </span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"># error Conflicting platform macros</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"># include "LinuxPlatformDefinitions.h"</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"># define OPENGL_SUPPORTED 1</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"># define D3D11_SUPPORTED 0</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"># define D3D12_SUPPORTED 0</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"># error Unsupported platform</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_platform_misc_8h_source.html b/doc/html/_platform_misc_8h_source.html index 9b606139..a63ae0c9 100644 --- a/doc/html/_platform_misc_8h_source.html +++ b/doc/html/_platform_misc_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">PlatformMisc.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#if defined( PLATFORM_WIN32 ) || defined( PLATFORM_UNIVERSAL_WINDOWS )</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"> #include "Win32PlatformMisc.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">typedef</span> WindowsMisc PlatformMisc;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#elif defined ( PLATFORM_ANDROID )</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"> #include "AndroidPlatformMisc.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">typedef</span> AndroidMisc PlatformMisc;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#elif defined ( PLATFORM_LINUX )</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor"> #include "LinuxPlatformMisc.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> LinuxMisc PlatformMisc;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"> #error Unsupported platform</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#if defined( PLATFORM_WIN32 ) || defined( PLATFORM_UNIVERSAL_WINDOWS )</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"> #include "Win32PlatformMisc.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">typedef</span> WindowsMisc PlatformMisc;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#elif defined ( PLATFORM_ANDROID )</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"> #include "AndroidPlatformMisc.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">typedef</span> AndroidMisc PlatformMisc;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#elif defined ( PLATFORM_LINUX )</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor"> #include "LinuxPlatformMisc.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typedef</span> LinuxMisc PlatformMisc;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"> #error Unsupported platform</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#endif</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_platforms_2_win32_2include_2pch_8h_source.html b/doc/html/_platforms_2_win32_2include_2pch_8h_source.html index 2b09b494..abfea379 100644 --- a/doc/html/_platforms_2_win32_2include_2pch_8h_source.html +++ b/doc/html/_platforms_2_win32_2include_2pch_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">pch.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Do not include <Windows.h> here as this will</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// mess up names in file system implementation!</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Do not include <Windows.h> here as this will</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// mess up names in file system implementation!</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "PlatformDefinitions.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_rasterizer_state_8h_source.html b/doc/html/_rasterizer_state_8h_source.html index 4399c257..25a0caae 100644 --- a/doc/html/_rasterizer_state_8h_source.html +++ b/doc/html/_rasterizer_state_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RasterizerState.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9"> 40</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> : Int32</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> { </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4f9c2dce719b61de78321d1742ad4dd3"> 43</a></span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4f9c2dce719b61de78321d1742ad4dd3">FILL_MODE_UNDEFINED</a> = 0,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a"> 47</a></span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a">FILL_MODE_WIREFRAME</a>, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf"> 51</a></span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf">FILL_MODE_SOLID</a>, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4c5785c082fe9c9ab08c2558882af04f"> 54</a></span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4c5785c082fe9c9ab08c2558882af04f">FILL_MODE_NUM_MODES</a> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896"> 63</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> : Int32</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aceb414f364000c13d75a7a17fa0416ca"> 66</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aceb414f364000c13d75a7a17fa0416ca">CULL_MODE_UNDEFINED</a> = 0,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a88bffa666bf1f0913c785f5adcc51a3c"> 70</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a88bffa666bf1f0913c785f5adcc51a3c">CULL_MODE_NONE</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a573069ffcc465c046134a3fc51a52d1b"> 75</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a573069ffcc465c046134a3fc51a52d1b">CULL_MODE_FRONT</a>,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aea9b199b178f12075d4d5df882043269"> 80</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aea9b199b178f12075d4d5df882043269">CULL_MODE_BACK</a>,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a0b91e2f89b17819acce7200fbdf87d8d"> 83</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a0b91e2f89b17819acce7200fbdf87d8d">CULL_MODE_NUM_MODES</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> };</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html"> 90</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html">RasterizerStateDesc</a></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969"> 93</a></span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969">FillMode</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842"> 96</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842">CullMode</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0"> 102</a></span>  Bool <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0">FrontCounterClockwise</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a"> 105</a></span>  Int32 <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">DepthBias</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef"> 109</a></span>  Float32 <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef">DepthBiasClamp</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86"> 112</a></span>  Float32 <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86">SlopeScaledDepthBias</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64"> 117</a></span>  Bool <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64">DepthClipEnable</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8"> 120</a></span>  Bool <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8">ScissorEnable</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94"> 123</a></span>  Bool <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94">AntialiasedLineEnable</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a2eeb4d6f52d0746c733bb86fa0cac9f8"> 138</a></span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2eeb4d6f52d0746c733bb86fa0cac9f8">RasterizerStateDesc</a>(<a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> _FillMode = <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf">FILL_MODE_SOLID</a>,</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> _CullMode = <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aea9b199b178f12075d4d5df882043269">CULL_MODE_BACK</a>,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  Bool _FrontCounterClockwise = False,</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  Int32 _DepthBias = 0,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  Float32 _DepthBiasClamp = 0.f,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  Float32 _SlopeScaledDepthBias = 0.f,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  Bool _DepthClipEnable = True,</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  Bool _ScissorEnable = False,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  Bool _AntialiasedLineEnable = False) : </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969">FillMode</a> ( _FillMode ),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842">CullMode</a> ( _CullMode ),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0">FrontCounterClockwise</a>( _FrontCounterClockwise ),</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">DepthBias</a> ( _DepthBias ),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef">DepthBiasClamp</a> ( _DepthBiasClamp ),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86">SlopeScaledDepthBias</a> ( _SlopeScaledDepthBias ),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64">DepthClipEnable</a> ( _DepthClipEnable ),</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8">ScissorEnable</a> ( _ScissorEnable ),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94">AntialiasedLineEnable</a>( _AntialiasedLineEnable )</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#ac4f37d73250fb4c82fd731ad991ae9ed"> 166</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ac4f37d73250fb4c82fd731ad991ae9ed">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html">RasterizerStateDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969">FillMode</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969">FillMode</a> &&</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842">CullMode</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842">CullMode</a> &&</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0">FrontCounterClockwise</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0">FrontCounterClockwise</a> &&</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">DepthBias</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">DepthBias</a> &&</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef">DepthBiasClamp</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef">DepthBiasClamp</a> &&</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86">SlopeScaledDepthBias</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86">SlopeScaledDepthBias</a> &&</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64">DepthClipEnable</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64">DepthClipEnable</a> &&</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8">ScissorEnable</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8">ScissorEnable</a> &&</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94">AntialiasedLineEnable</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94">AntialiasedLineEnable</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> };</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="ttc" id="namespace_diligent_html_a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a"><div class="ttname"><a href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a">Diligent::FILL_MODE_WIREFRAME</a></div><div class="ttdoc">Rasterize triangles using wireframe fill. Direct3D counterpart: D3D11_FILL_WIREFRAME/D3D12_FILL_MOD...</div><div class="ttdef"><b>Definition:</b> RasterizerState.h:47</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9"> 40</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> : Int32</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> { </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4f9c2dce719b61de78321d1742ad4dd3"> 43</a></span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4f9c2dce719b61de78321d1742ad4dd3">FILL_MODE_UNDEFINED</a> = 0,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a"> 47</a></span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a">FILL_MODE_WIREFRAME</a>, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf"> 51</a></span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf">FILL_MODE_SOLID</a>, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4c5785c082fe9c9ab08c2558882af04f"> 54</a></span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4c5785c082fe9c9ab08c2558882af04f">FILL_MODE_NUM_MODES</a> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896"> 63</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> : Int32</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aceb414f364000c13d75a7a17fa0416ca"> 66</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aceb414f364000c13d75a7a17fa0416ca">CULL_MODE_UNDEFINED</a> = 0,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a88bffa666bf1f0913c785f5adcc51a3c"> 70</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a88bffa666bf1f0913c785f5adcc51a3c">CULL_MODE_NONE</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a573069ffcc465c046134a3fc51a52d1b"> 75</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a573069ffcc465c046134a3fc51a52d1b">CULL_MODE_FRONT</a>,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aea9b199b178f12075d4d5df882043269"> 80</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aea9b199b178f12075d4d5df882043269">CULL_MODE_BACK</a>,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a0b91e2f89b17819acce7200fbdf87d8d"> 83</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896a0b91e2f89b17819acce7200fbdf87d8d">CULL_MODE_NUM_MODES</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> };</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html"> 90</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html">RasterizerStateDesc</a></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969"> 93</a></span>  <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969">FillMode</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842"> 96</a></span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842">CullMode</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0"> 102</a></span>  Bool <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0">FrontCounterClockwise</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a"> 105</a></span>  Int32 <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">DepthBias</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef"> 109</a></span>  Float32 <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef">DepthBiasClamp</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86"> 112</a></span>  Float32 <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86">SlopeScaledDepthBias</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64"> 117</a></span>  Bool <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64">DepthClipEnable</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8"> 120</a></span>  Bool <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8">ScissorEnable</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94"> 123</a></span>  Bool <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94">AntialiasedLineEnable</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#a2eeb4d6f52d0746c733bb86fa0cac9f8"> 138</a></span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2eeb4d6f52d0746c733bb86fa0cac9f8">RasterizerStateDesc</a>(<a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9">FILL_MODE</a> _FillMode = <a class="code" href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a384ecd536cf5805995b7f7e2732ee0bf">FILL_MODE_SOLID</a>,</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896">CULL_MODE</a> _CullMode = <a class="code" href="namespace_diligent.html#aeeda8d41835aaaca5142122552880896aea9b199b178f12075d4d5df882043269">CULL_MODE_BACK</a>,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  Bool _FrontCounterClockwise = False,</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  Int32 _DepthBias = 0,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  Float32 _DepthBiasClamp = 0.f,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  Float32 _SlopeScaledDepthBias = 0.f,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  Bool _DepthClipEnable = True,</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  Bool _ScissorEnable = False,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  Bool _AntialiasedLineEnable = False) : </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969">FillMode</a> ( _FillMode ),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842">CullMode</a> ( _CullMode ),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0">FrontCounterClockwise</a>( _FrontCounterClockwise ),</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">DepthBias</a> ( _DepthBias ),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef">DepthBiasClamp</a> ( _DepthBiasClamp ),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86">SlopeScaledDepthBias</a> ( _SlopeScaledDepthBias ),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64">DepthClipEnable</a> ( _DepthClipEnable ),</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8">ScissorEnable</a> ( _ScissorEnable ),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94">AntialiasedLineEnable</a>( _AntialiasedLineEnable )</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_rasterizer_state_desc.html#ac4f37d73250fb4c82fd731ad991ae9ed"> 166</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ac4f37d73250fb4c82fd731ad991ae9ed">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html">RasterizerStateDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969">FillMode</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969">FillMode</a> &&</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842">CullMode</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842">CullMode</a> &&</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0">FrontCounterClockwise</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0">FrontCounterClockwise</a> &&</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">DepthBias</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">DepthBias</a> &&</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef">DepthBiasClamp</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef">DepthBiasClamp</a> &&</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86">SlopeScaledDepthBias</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86">SlopeScaledDepthBias</a> &&</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64">DepthClipEnable</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64">DepthClipEnable</a> &&</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8">ScissorEnable</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8">ScissorEnable</a> &&</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94">AntialiasedLineEnable</a> == RHS.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94">AntialiasedLineEnable</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> };</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="ttc" id="namespace_diligent_html_a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a"><div class="ttname"><a href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a1393780d3940ecd55c4f4ccd5dd9967a">Diligent::FILL_MODE_WIREFRAME</a></div><div class="ttdoc">Rasterize triangles using wireframe fill. Direct3D counterpart: D3D11_FILL_WIREFRAME/D3D12_FILL_MOD...</div><div class="ttdef"><b>Definition:</b> RasterizerState.h:47</div></div> <div class="ttc" id="struct_diligent_1_1_rasterizer_state_desc_html_ac4f37d73250fb4c82fd731ad991ae9ed"><div class="ttname"><a href="struct_diligent_1_1_rasterizer_state_desc.html#ac4f37d73250fb4c82fd731ad991ae9ed">Diligent::RasterizerStateDesc::operator==</a></div><div class="ttdeci">bool operator==(const RasterizerStateDesc &RHS) const</div><div class="ttdoc">Tests if two structures are equivalent. </div><div class="ttdef"><b>Definition:</b> RasterizerState.h:166</div></div> <div class="ttc" id="struct_diligent_1_1_rasterizer_state_desc_html_a9f02e69f65dcaca4eca62f6d3838b87a"><div class="ttname"><a href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">Diligent::RasterizerStateDesc::DepthBias</a></div><div class="ttdeci">Int32 DepthBias</div><div class="ttdoc">Constant value added to the depth of a given pixel. </div><div class="ttdef"><b>Definition:</b> RasterizerState.h:105</div></div> <div class="ttc" id="namespace_diligent_html_a3b85032ce91db5b8f9bcaab7bff02bc9a4c5785c082fe9c9ab08c2558882af04f"><div class="ttname"><a href="namespace_diligent.html#a3b85032ce91db5b8f9bcaab7bff02bc9a4c5785c082fe9c9ab08c2558882af04f">Diligent::FILL_MODE_NUM_MODES</a></div><div class="ttdoc">Helper value that stores the total number of fill modes in the enumeration. </div><div class="ttdef"><b>Definition:</b> RasterizerState.h:54</div></div> @@ -98,7 +98,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_ref_cnt_auto_ptr_8h_source.html b/doc/html/_ref_cnt_auto_ptr_8h_source.html index 6ff643d6..d4687a45 100644 --- a/doc/html/_ref_cnt_auto_ptr_8h_source.html +++ b/doc/html/_ref_cnt_auto_ptr_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RefCntAutoPtr.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "LockHelper.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Atomics.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RefCountedObjectImpl.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ref_cnt_weak_ptr.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// The main advantage of RefCntAutoPtr over the std::shared_ptr is that you can </span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// attach the same raw pointer to different smart pointers.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">//</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// For instance, the following code will crash since p will be released twice:</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// auto *p = new char;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// std::shared_ptr<char> pTmp1(p);</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// std::shared_ptr<char> pTmp2(p);</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// ...</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// This code, in contrast, works perfectly fine:</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">//</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// ObjectBase *pRawPtr(new ObjectBase);</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// RefCntAutoPtr<ObjectBase> pSmartPtr1(pRawPtr);</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// RefCntAutoPtr<ObjectBase> pSmartPtr2(pRawPtr);</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// ...</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// Other advantage is that weak pointers remain valid until the</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// object is alive, even if all smart pointers were destroyed:</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">//</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// RefCntWeakPtr<ObjectBase> pWeakPtr(pSmartPtr1);</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// pSmartPtr1.Release();</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// auto pSmartPtr3 = pWeakPtr.Lock();</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// ..</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// Weak pointers can also be attached directly to the object:</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// RefCntWeakPtr<ObjectBase> pWeakPtr(pRawPtr);</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">//</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ref_cnt_auto_ptr.html"> 71</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">explicit</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>(T *pObj = <span class="keyword">nullptr</span>) : </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_pObject(pObj)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span>( m_pObject )</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_pObject->AddRef();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>(IObject *pObj, <span class="keyword">const</span> INTERFACE_ID &IID) :</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_pObject(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(pObj)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  pObj->QueryInterface( IID, reinterpret_cast<IObject**>(&m_pObject) );</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &AutoPtr) : </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_pObject(AutoPtr.m_pObject)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span>(m_pObject)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_pObject->AddRef();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &&AutoPtr) : </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_pObject(std::move(AutoPtr.m_pObject))</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">//Make sure original pointer has no references to the object</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  AutoPtr.m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  ~<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>()</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Release();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">void</span> swap(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &AutoPtr)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  std::swap(m_pObject, AutoPtr.m_pObject);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">void</span> Attach(T *pObj)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  Release();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_pObject = pObj;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  T* Detach()</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  T* pObj = m_pObject;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> pObj;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordtype">void</span> Release()</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>( m_pObject )</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_pObject->Release();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& operator = (T *pObj)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span>( static_cast<T*>(*<span class="keyword">this</span>) == pObj )</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> operator= (<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>(pObj));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &AutoPtr)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>( *<span class="keyword">this</span> == AutoPtr )</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  Release();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_pObject = AutoPtr.m_pObject;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span>(m_pObject)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_pObject->AddRef();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& operator = (<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &&AutoPtr)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span>( *<span class="keyword">this</span> == AutoPtr )</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  Release();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_pObject = std::move( AutoPtr.m_pObject );</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">//Make sure original pointer has no references to the object</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  AutoPtr.m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// All the access functions do not require locking reference counters pointer because if it is valid,</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// the smart pointer holds strong reference to the object and it thus cannot be released by </span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// ohter thread</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordtype">bool</span> operator ! ()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_pObject == <span class="keyword">nullptr</span>;}</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">operator</span> bool ()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_pObject != <span class="keyword">nullptr</span>;} </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& Ptr)<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pObject == Ptr.m_pObject;}</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& Ptr)<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pObject != Ptr.m_pObject;}</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordtype">bool</span> operator < (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& Ptr)<span class="keyword">const</span>{<span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(*this) < <span class="keyword">static_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(Ptr);}</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  T& operator * () { <span class="keywordflow">return</span> *m_pObject; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">const</span> T& operator * ()<span class="keyword">const </span>{ <span class="keywordflow">return</span> *m_pObject; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  T* RawPtr() { <span class="keywordflow">return</span> m_pObject; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">const</span> T* RawPtr()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_pObject; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">operator</span> T* () { <span class="keywordflow">return</span> RawPtr(); }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">operator</span> <span class="keyword">const</span> T* ()<span class="keyword">const</span> { <span class="keywordflow">return</span> RawPtr(); }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  T* operator -> () { <span class="keywordflow">return</span> m_pObject; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">const</span> T* operator -> ()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_pObject; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">// Note that the DoublePtrHelper is a private class, and can be created only by RefCntWeakPtr</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// Thus if no special effort is made, the lifetime of the instances of this class cannot be</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// longer than the lifetime of the creating object</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">class </span>DoublePtrHelper</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  DoublePtrHelper(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &AutoPtr) : </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  NewRawPtr( static_cast<T*>(AutoPtr) ),</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_pAutoPtr( std::addressof(AutoPtr) )</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  DoublePtrHelper(DoublePtrHelper&& Helper) : </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  NewRawPtr(Helper.NewRawPtr),</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_pAutoPtr(Helper.m_pAutoPtr)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  Helper.m_pAutoPtr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  Helper.NewRawPtr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  ~DoublePtrHelper()</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>( m_pAutoPtr && static_cast<T*>(*m_pAutoPtr) != NewRawPtr )</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  m_pAutoPtr->Attach(NewRawPtr);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  T*& operator*(){<span class="keywordflow">return</span> NewRawPtr;}</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">const</span> T* operator*()<span class="keyword">const</span>{<span class="keywordflow">return</span> NewRawPtr;}</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">operator</span> T**(){<span class="keywordflow">return</span> &NewRawPtr;}</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">operator</span> <span class="keyword">const</span> T**()<span class="keyword">const</span>{<span class="keywordflow">return</span> &NewRawPtr;}</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  T *NewRawPtr;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> *m_pAutoPtr;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  DoublePtrHelper(<span class="keyword">const</span> DoublePtrHelper&);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  DoublePtrHelper& operator = (<span class="keyword">const</span> DoublePtrHelper&);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  DoublePtrHelper& operator = (DoublePtrHelper&&);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  };</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  DoublePtrHelper operator& ()</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> DoublePtrHelper(*<span class="keyword">this</span>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keyword">const</span> DoublePtrHelper operator& ()<span class="keyword">const</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> DoublePtrHelper(*<span class="keyword">this</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  T** GetRawDblPtr() {<span class="keywordflow">return</span> &m_pObject;}</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const</span> T** GetRawDblPtr()<span class="keyword">const</span>{<span class="keywordflow">return</span> &m_pObject;}</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  T *m_pObject;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> };</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keyword">explicit</span> <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a>(T *pObj = <span class="keyword">nullptr</span>) : </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_pObject(pObj),</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_pRefCounters(nullptr)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span>( m_pObject )</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_pRefCounters = ValidatedCast<RefCountersImpl>( m_pObject->GetReferenceCounters() );</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  m_pRefCounters->AddWeakRef();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  ~RefCntWeakPtr()</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  Release();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  RefCntWeakPtr(<span class="keyword">const</span> RefCntWeakPtr& WeakPtr) :</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_pObject(WeakPtr.m_pObject),</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_pRefCounters(WeakPtr.m_pRefCounters)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_pRefCounters->AddWeakRef();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  RefCntWeakPtr(RefCntWeakPtr&& WeakPtr) :</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_pObject(<a class="code" href="namespacestd.html">std</a>::move(WeakPtr.m_pObject)),</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_pRefCounters(<a class="code" href="namespacestd.html">std</a>::move(WeakPtr.m_pRefCounters))</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  WeakPtr.m_pRefCounters = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  WeakPtr.m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keyword">explicit</span> RefCntWeakPtr(RefCntAutoPtr<T>& AutoPtr) :</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  m_pObject( static_cast<T*>(AutoPtr) ),</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  m_pRefCounters(AutoPtr ? ValidatedCast<RefCountersImpl>( AutoPtr->GetReferenceCounters() ) : nullptr)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  m_pRefCounters->AddWeakRef();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  RefCntWeakPtr& operator = (<span class="keyword">const</span> RefCntWeakPtr& WeakPtr)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span>( *<span class="keyword">this</span> == WeakPtr )</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  Release();</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_pObject = WeakPtr.m_pObject;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  m_pRefCounters = WeakPtr.m_pRefCounters;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_pRefCounters->AddWeakRef();</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  RefCntWeakPtr& operator = (T *pObj)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> operator= (RefCntWeakPtr(pObj));</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  RefCntWeakPtr& operator = (RefCntWeakPtr&& WeakPtr)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span>( *<span class="keyword">this</span> == WeakPtr )</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  Release();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  m_pObject = std::move(WeakPtr.m_pObject);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  m_pRefCounters = std::move(WeakPtr.m_pRefCounters);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  WeakPtr.m_pRefCounters = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  WeakPtr.m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  RefCntWeakPtr& operator = (RefCntAutoPtr<T>& AutoPtr)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  Release();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  m_pObject = <span class="keyword">static_cast<</span>T*<span class="keyword">></span>( AutoPtr );</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  m_pRefCounters = m_pObject ? ValidatedCast<RefCountersImpl>( m_pObject->GetReferenceCounters() ) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  m_pRefCounters->AddWeakRef();</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordtype">void</span> Release()</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  m_pRefCounters->ReleaseWeakRef();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  m_pRefCounters = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ref_cnt_weak_ptr.html#a24085839a52ca922022a48f54e22f57f"> 345</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html#a24085839a52ca922022a48f54e22f57f">IsValid</a>()</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">return</span> m_pObject != <span class="keyword">nullptr</span> && m_pRefCounters != <span class="keyword">nullptr</span> && m_pRefCounters->GetNumStrongRefs() > 0;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ref_cnt_weak_ptr.html#a39b29df7165190c63a48261e9fa2cd14"> 351</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<T></a> <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html#a39b29df7165190c63a48261e9fa2cd14">Lock</a>()</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<T></a> spObj;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="comment">// Try to obtain pointer to the owner object.</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// spOwner is only used to keep the object</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="comment">// alive while obtaining strong reference from</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="comment">// the raw pointer m_pObject</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<Diligent::IObject></a> spOwner;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  m_pRefCounters->GetObject( &spOwner );</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span>( spOwner )</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="comment">// If owner is alive, we can use our RAW pointer to</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="comment">// create strong reference</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  spObj = m_pObject;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="comment">// Owner object has been destroyed. There is no reason</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">// to keep this weak reference anymore</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  Release();</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">return</span> spObj;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a>& Ptr)<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pRefCounters == Ptr.m_pRefCounters;}</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> RefCntWeakPtr& Ptr)<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pRefCounters != Ptr.m_pRefCounters;}</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  RefCountersImpl *m_pRefCounters;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="comment">// We need to store raw pointer to object itself,</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">// because if the object is owned by another object,</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="comment">// m_pRefCounters->GetObject( &pObj ) will return</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// pointer to owner, which is not what we need.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  T *m_pObject;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> };</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "LockHelper.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Atomics.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RefCountedObjectImpl.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ref_cnt_weak_ptr.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// The main advantage of RefCntAutoPtr over the std::shared_ptr is that you can </span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// attach the same raw pointer to different smart pointers.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">//</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// For instance, the following code will crash since p will be released twice:</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// auto *p = new char;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// std::shared_ptr<char> pTmp1(p);</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// std::shared_ptr<char> pTmp2(p);</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// ...</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// This code, in contrast, works perfectly fine:</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">//</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// ObjectBase *pRawPtr(new ObjectBase);</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// RefCntAutoPtr<ObjectBase> pSmartPtr1(pRawPtr);</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// RefCntAutoPtr<ObjectBase> pSmartPtr2(pRawPtr);</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// ...</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// Other advantage is that weak pointers remain valid until the</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// object is alive, even if all smart pointers were destroyed:</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">//</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// RefCntWeakPtr<ObjectBase> pWeakPtr(pSmartPtr1);</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// pSmartPtr1.Release();</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// auto pSmartPtr3 = pWeakPtr.Lock();</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// ..</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// Weak pointers can also be attached directly to the object:</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// RefCntWeakPtr<ObjectBase> pWeakPtr(pRawPtr);</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">//</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ref_cnt_auto_ptr.html"> 71</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">explicit</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>(T *pObj = <span class="keyword">nullptr</span>) : </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_pObject(pObj)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span>( m_pObject )</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_pObject->AddRef();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>(IObject *pObj, <span class="keyword">const</span> INTERFACE_ID &IID) :</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_pObject(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(pObj)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  pObj->QueryInterface( IID, reinterpret_cast<IObject**>(&m_pObject) );</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &AutoPtr) : </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_pObject(AutoPtr.m_pObject)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span>(m_pObject)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_pObject->AddRef();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &&AutoPtr) : </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_pObject(std::move(AutoPtr.m_pObject))</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">//Make sure original pointer has no references to the object</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  AutoPtr.m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  ~<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>()</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Release();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">void</span> swap(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &AutoPtr)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  std::swap(m_pObject, AutoPtr.m_pObject);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">void</span> Attach(T *pObj)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  Release();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_pObject = pObj;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  T* Detach()</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  T* pObj = m_pObject;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> pObj;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordtype">void</span> Release()</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>( m_pObject )</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_pObject->Release();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& operator = (T *pObj)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span>( static_cast<T*>(*<span class="keyword">this</span>) == pObj )</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> operator= (<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>(pObj));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &AutoPtr)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>( *<span class="keyword">this</span> == AutoPtr )</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  Release();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_pObject = AutoPtr.m_pObject;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span>(m_pObject)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_pObject->AddRef();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& operator = (<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &&AutoPtr)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span>( *<span class="keyword">this</span> == AutoPtr )</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  Release();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_pObject = std::move( AutoPtr.m_pObject );</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">//Make sure original pointer has no references to the object</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  AutoPtr.m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// All the access functions do not require locking reference counters pointer because if it is valid,</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// the smart pointer holds strong reference to the object and it thus cannot be released by </span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// ohter thread</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordtype">bool</span> operator ! ()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_pObject == <span class="keyword">nullptr</span>;}</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">operator</span> bool ()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_pObject != <span class="keyword">nullptr</span>;} </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& Ptr)<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pObject == Ptr.m_pObject;}</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& Ptr)<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pObject != Ptr.m_pObject;}</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordtype">bool</span> operator < (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a>& Ptr)<span class="keyword">const</span>{<span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(*this) < <span class="keyword">static_cast<</span><span class="keyword">const </span>T*<span class="keyword">></span>(Ptr);}</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  T& operator * () { <span class="keywordflow">return</span> *m_pObject; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">const</span> T& operator * ()<span class="keyword">const </span>{ <span class="keywordflow">return</span> *m_pObject; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  T* RawPtr() { <span class="keywordflow">return</span> m_pObject; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">const</span> T* RawPtr()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_pObject; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">operator</span> T* () { <span class="keywordflow">return</span> RawPtr(); }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">operator</span> <span class="keyword">const</span> T* ()<span class="keyword">const</span> { <span class="keywordflow">return</span> RawPtr(); }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  T* operator -> () { <span class="keywordflow">return</span> m_pObject; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">const</span> T* operator -> ()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_pObject; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">// Note that the DoublePtrHelper is a private class, and can be created only by RefCntWeakPtr</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// Thus if no special effort is made, the lifetime of the instances of this class cannot be</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// longer than the lifetime of the creating object</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">class </span>DoublePtrHelper</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  DoublePtrHelper(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> &AutoPtr) : </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  NewRawPtr( static_cast<T*>(AutoPtr) ),</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_pAutoPtr( std::addressof(AutoPtr) )</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  DoublePtrHelper(DoublePtrHelper&& Helper) : </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  NewRawPtr(Helper.NewRawPtr),</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_pAutoPtr(Helper.m_pAutoPtr)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  Helper.m_pAutoPtr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  Helper.NewRawPtr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  ~DoublePtrHelper()</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>( m_pAutoPtr && static_cast<T*>(*m_pAutoPtr) != NewRawPtr )</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  m_pAutoPtr->Attach(NewRawPtr);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  T*& operator*(){<span class="keywordflow">return</span> NewRawPtr;}</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">const</span> T* operator*()<span class="keyword">const</span>{<span class="keywordflow">return</span> NewRawPtr;}</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">operator</span> T**(){<span class="keywordflow">return</span> &NewRawPtr;}</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">operator</span> <span class="keyword">const</span> T**()<span class="keyword">const</span>{<span class="keywordflow">return</span> &NewRawPtr;}</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  T *NewRawPtr;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a> *m_pAutoPtr;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  DoublePtrHelper(<span class="keyword">const</span> DoublePtrHelper&);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  DoublePtrHelper& operator = (<span class="keyword">const</span> DoublePtrHelper&);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  DoublePtrHelper& operator = (DoublePtrHelper&&);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  };</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  DoublePtrHelper operator& ()</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> DoublePtrHelper(*<span class="keyword">this</span>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keyword">const</span> DoublePtrHelper operator& ()<span class="keyword">const</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> DoublePtrHelper(*<span class="keyword">this</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  T** GetRawDblPtr() {<span class="keywordflow">return</span> &m_pObject;}</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const</span> T** GetRawDblPtr()<span class="keyword">const</span>{<span class="keywordflow">return</span> &m_pObject;}</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  T *m_pObject;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> };</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keyword">explicit</span> <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a>(T *pObj = <span class="keyword">nullptr</span>) : </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_pObject(pObj),</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_pRefCounters(nullptr)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span>( m_pObject )</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_pRefCounters = ValidatedCast<RefCountersImpl>( m_pObject->GetReferenceCounters() );</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  m_pRefCounters->AddWeakRef();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  ~RefCntWeakPtr()</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  Release();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  RefCntWeakPtr(<span class="keyword">const</span> RefCntWeakPtr& WeakPtr) :</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_pObject(WeakPtr.m_pObject),</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_pRefCounters(WeakPtr.m_pRefCounters)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_pRefCounters->AddWeakRef();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  RefCntWeakPtr(RefCntWeakPtr&& WeakPtr) :</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_pObject(<a class="code" href="namespacestd.html">std</a>::move(WeakPtr.m_pObject)),</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_pRefCounters(<a class="code" href="namespacestd.html">std</a>::move(WeakPtr.m_pRefCounters))</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  WeakPtr.m_pRefCounters = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  WeakPtr.m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keyword">explicit</span> RefCntWeakPtr(RefCntAutoPtr<T>& AutoPtr) :</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  m_pObject( static_cast<T*>(AutoPtr) ),</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  m_pRefCounters(AutoPtr ? ValidatedCast<RefCountersImpl>( AutoPtr->GetReferenceCounters() ) : nullptr)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  m_pRefCounters->AddWeakRef();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  RefCntWeakPtr& operator = (<span class="keyword">const</span> RefCntWeakPtr& WeakPtr)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span>( *<span class="keyword">this</span> == WeakPtr )</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  Release();</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_pObject = WeakPtr.m_pObject;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  m_pRefCounters = WeakPtr.m_pRefCounters;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_pRefCounters->AddWeakRef();</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  RefCntWeakPtr& operator = (T *pObj)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> operator= (RefCntWeakPtr(pObj));</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  RefCntWeakPtr& operator = (RefCntWeakPtr&& WeakPtr)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span>( *<span class="keyword">this</span> == WeakPtr )</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  Release();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  m_pObject = std::move(WeakPtr.m_pObject);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  m_pRefCounters = std::move(WeakPtr.m_pRefCounters);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  WeakPtr.m_pRefCounters = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  WeakPtr.m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  RefCntWeakPtr& operator = (RefCntAutoPtr<T>& AutoPtr)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  Release();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  m_pObject = <span class="keyword">static_cast<</span>T*<span class="keyword">></span>( AutoPtr );</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  m_pRefCounters = m_pObject ? ValidatedCast<RefCountersImpl>( m_pObject->GetReferenceCounters() ) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  m_pRefCounters->AddWeakRef();</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordtype">void</span> Release()</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  m_pRefCounters->ReleaseWeakRef();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  m_pRefCounters = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  m_pObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ref_cnt_weak_ptr.html#a24085839a52ca922022a48f54e22f57f"> 345</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html#a24085839a52ca922022a48f54e22f57f">IsValid</a>()</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">return</span> m_pObject != <span class="keyword">nullptr</span> && m_pRefCounters != <span class="keyword">nullptr</span> && m_pRefCounters->GetNumStrongRefs() > 0;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ref_cnt_weak_ptr.html#a39b29df7165190c63a48261e9fa2cd14"> 351</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<T></a> <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html#a39b29df7165190c63a48261e9fa2cd14">Lock</a>()</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<T></a> spObj;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">if</span>( m_pRefCounters )</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="comment">// Try to obtain pointer to the owner object.</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// spOwner is only used to keep the object</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="comment">// alive while obtaining strong reference from</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="comment">// the raw pointer m_pObject</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<Diligent::IObject></a> spOwner;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  m_pRefCounters->GetObject( &spOwner );</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span>( spOwner )</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="comment">// If owner is alive, we can use our RAW pointer to</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="comment">// create strong reference</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  spObj = m_pObject;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="comment">// Owner object has been destroyed. There is no reason</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">// to keep this weak reference anymore</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  Release();</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">return</span> spObj;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a>& Ptr)<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pRefCounters == Ptr.m_pRefCounters;}</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordtype">bool</span> operator != (<span class="keyword">const</span> RefCntWeakPtr& Ptr)<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pRefCounters != Ptr.m_pRefCounters;}</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  RefCountersImpl *m_pRefCounters;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="comment">// We need to store raw pointer to object itself,</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">// because if the object is owned by another object,</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="comment">// m_pRefCounters->GetObject( &pObj ) will return</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// pointer to owner, which is not what we need.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  T *m_pObject;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> };</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> <div class="ttc" id="class_diligent_1_1_ref_cnt_weak_ptr_html_a39b29df7165190c63a48261e9fa2cd14"><div class="ttname"><a href="class_diligent_1_1_ref_cnt_weak_ptr.html#a39b29df7165190c63a48261e9fa2cd14">Diligent::RefCntWeakPtr::Lock</a></div><div class="ttdeci">RefCntAutoPtr< T > Lock()</div><div class="ttdoc">Obtains a strong reference to the object. </div><div class="ttdef"><b>Definition:</b> RefCntAutoPtr.h:351</div></div> <div class="ttc" id="class_diligent_1_1_ref_cnt_weak_ptr_html"><div class="ttname"><a href="class_diligent_1_1_ref_cnt_weak_ptr.html">Diligent::RefCntWeakPtr</a></div><div class="ttdoc">Implementation of weak pointers. </div><div class="ttdef"><b>Definition:</b> RefCntAutoPtr.h:38</div></div> @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_ref_counted_object_impl_8h_source.html b/doc/html/_ref_counted_object_impl_8h_source.html index 317c87bf..1be15023 100644 --- a/doc/html/_ref_counted_object_impl_8h_source.html +++ b/doc/html/_ref_counted_object_impl_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">RefCountedObjectImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Atomics.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "LockHelper.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// This class controls the lifetime of a refcounted object</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>RefCountersImpl : <span class="keyword">public</span> IReferenceCounters</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType AddStrongRef()override final</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  VERIFY( m_ObjectState == ObjectState::Alive, <span class="stringliteral">"Attempting to increment strong reference counter for a destroyed or not itialized object!"</span> );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  VERIFY( m_ObjectWrapperBuffer[0] != 0 && m_ObjectWrapperBuffer[1] != 0, <span class="stringliteral">"Object wrapper is not initialized"</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> Atomics::AtomicIncrement(m_lNumStrongReferences);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType ReleaseStrongRef()override final</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  VERIFY( m_ObjectState == ObjectState::Alive, <span class="stringliteral">"Attempting to decrement strong reference counter for an object that is not alive"</span> );</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  VERIFY( m_ObjectWrapperBuffer[0] != 0 && m_ObjectWrapperBuffer[1] != 0, <span class="stringliteral">"Object wrapper is not initialized"</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// Decrement strong reference counter without acquiring the lock. </span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">auto</span> RefCount = Atomics::AtomicDecrement(m_lNumStrongReferences);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  VERIFY( RefCount >= 0, <span class="stringliteral">"Inconsistent call to ReleaseStrongRef()"</span> );</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>( RefCount == 0 )</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Since RefCount==0, there are no more strong references and the only place </span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// where strong ref counter can be incremented is from GetObject().</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// If several threads were allowed to get to this point, there would </span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// be serious risk that <this> had already been destroyed and m_LockFlag expired. </span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Consider the following scenario:</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// |</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// This thread | Another thread</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// |</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// m_lNumStrongReferences == 1</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// m_lNumWeakReferences == 1</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// | </span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// 1. Decrement m_lNumStrongReferences | </span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// Read RefCount==0, no lock acquired| </span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// | 1. Run GetObject()</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// | - acquire the lock</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// | - increment m_lNumStrongReferences</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// | - release the lock</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// | </span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// | 2. Run ReleaseWeakRef()</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// | - decrement m_lNumWeakReferences</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// | </span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// | 3. Run ReleaseStrongRef()</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// | - decrement m_lNumStrongReferences</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// | - read RefCount==0</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">//</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// Both threads will get to this point. The first one will destroy <this></span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// The second one will read expired m_LockFlag</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// IT IS CRUCIALLY IMPORTANT TO ASSURE THAT ONLY ONE THREAD WILL EVER</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// EXECUTE THIS CODE</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// The sloution is to atomically increment strong ref counter in GetObject().</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// There are two possible scenarios depending on who first increments the counter:</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Scenario I</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">//</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// This thread | Another thread - GetObject() | One more thread - GetObject()</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// m_lNumStrongReferences == 1 |</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// | 1. Acquire the lock |</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// 1. Decrement m_lNumStrongReferences | | 1. Wait for the lock</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// 2. Read RefCount==0 | 2. Increment m_lNumStrongReferences |</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// 3. Start destroying the object | 3. Read StrongRefCnt == 1 |</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// 4. Wait for the lock | 4. DO NOT return the reference |</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// | to the object |</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// | 5. Decrement m_lNumStrongReferences |</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// _ _ _ _ _ _ _ _ _ _ _ _ _| 6. Release the lock _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// | | 2. Acquire the lock </span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// | | 3. Increment m_lNumStrongReferences</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// | | 4. Read StrongRefCnt == 1</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// | | 5. DO NOT return the reference </span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// | | to the object</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// | | 6. Decrement m_lNumStrongReferences </span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ _ | _ 7. Release the lock _ _ _ _ _ _</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">// 5. Acquire the lock | |</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// - m_lNumStrongReferences==0 | |</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// 6. DESTROY the object | |</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// GetObject() MUST BE SERIALIZED for this to work properly!</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// Scenario II</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">//</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// This thread | Another thread - GetObject()</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// |</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// m_lNumStrongReferences == 1</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// |</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// | 1. Acquire the lock </span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// | 2. Increment m_lNumStrongReferences</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// 1. Decrement m_lNumStrongReferences |</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// 2. Read RefCount>0 | </span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// 3. DO NOT destroy the object | 3. Read StrongRefCnt > 1 (while m_lNumStrongReferences == 1)</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// | 4. Return the reference to the object</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// | - Increment m_lNumStrongReferences</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// | 5. Decrement m_lNumStrongReferences</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  Atomics::Long NumStrongRefs = m_lNumStrongReferences;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  VERIFY( NumStrongRefs == 0 || NumStrongRefs == 1, <span class="stringliteral">"Num strong references ("</span>, NumStrongRefs, <span class="stringliteral">") is expected to be 0 or 1"</span> );</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Acquire the lock.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  ThreadingTools::LockHelper Lock(m_LockFlag);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// GetObject() first acquires the lock, and only then increments and </span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// decrements the ref counter. If it reads 1 after incremeting the counter,</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// it does not return the reference to the object and decrements the counter.</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// If we acquired the lock, GetObject() will not start until we are done</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  VERIFY_EXPR( m_lNumStrongReferences == 0 && m_ObjectState == ObjectState::Alive );</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Extra caution</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(m_lNumStrongReferences == 0 && m_ObjectState == ObjectState::Alive)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  VERIFY(m_ObjectWrapperBuffer[0] != 0 && m_ObjectWrapperBuffer[1] != 0, <span class="stringliteral">"Object wrapper is not initialized"</span>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// We cannot destroy the object while reference counters are locked as this will </span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// cause a deadlock in cases like this:</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">//</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// A ==sp==> B ---wp---> A</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// </span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// RefCounters_A.Lock();</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// delete A{</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">// A.~dtor(){</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// B.~dtor(){</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// wpA.ReleaseWeakRef(){</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// RefCounters_A.Lock(); // Deadlock</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">//</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// So we copy the object wrapper and destroy the object after unlocking the</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// reference counters</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">size_t</span> ObjectWrapperBufferCopy[ObjectWrapperBufferSize];</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i=0; i < ObjectWrapperBufferSize; ++i)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  ObjectWrapperBufferCopy[i] = m_ObjectWrapperBuffer[i];</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  memset(m_ObjectWrapperBuffer, 0, <span class="keyword">sizeof</span>(m_ObjectWrapperBuffer));</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">auto</span> *pWrapper = <span class="keyword">reinterpret_cast<</span>ObjectWrapperBase*<span class="keyword">></span>(ObjectWrapperBufferCopy);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// In a multithreaded environment, reference counters object may </span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// be destroyed at any time while m_pObject->~dtor() is running.</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// NOTE: m_pObject may not be the only object referencing m_pRefCounters.</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// All objects that are owned by m_pObject will point to the same </span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// reference counters object.</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// Note that this is the only place where m_ObjectState is</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// modified after the ref counters object has been created</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  m_ObjectState = ObjectState::Destroyed;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// The object is now detached from the reference counters and it is if</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// it was destroyed since no one can obtain access to it.</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// It is essentially important to check the number of weak references</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// while the object is locked. Otherwise reference counters object</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// may be destroyed twice if ReleaseWeakRef() is executed by other thread:</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">//</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// This thread | Another thread - ReleaseWeakRef()</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// | </span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// 1. Decrement m_lNumStrongReferences,| </span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// m_lNumStrongReferences==0, | </span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// acquire the lock, destroy |</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// the obj, release the lock |</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// m_lNumWeakReferences == 1 | </span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// | 1. Aacquire the lock, </span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// | decrement m_lNumWeakReferences,</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// | m_lNumWeakReferences == 0, </span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// | m_ObjectState == ObjectState::Destroyed</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// |</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// 2. Read m_lNumWeakReferences == 0 |</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// 3. Destroy the ref counters obj | 2. Destroy the ref counters obj</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">//</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">bool</span> bDestroyThis = m_lNumWeakReferences == 0;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// ReleaseWeakRef() decrements m_lNumWeakReferences, and checks it for</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// zero only after acquiring the lock. So if m_lNumWeakReferences==0, no </span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// weak reference-related code may be running</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// We must explicitly unlock the object now to avoid deadlocks. Also, </span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">// if this is deleted, this->m_LockFlag will expire, which will cause </span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// Lock.~LockHelper() to crash</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  Lock.Unlock();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// Destroy referenced object</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  pWrapper->DestroyObject();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// Note that <this> may be destroyed here already, </span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">// see comments in ~ControlledObjectType()</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">if</span>( bDestroyThis )</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  SelfDestroy();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> RefCount;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType AddWeakRef()override final</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> Atomics::AtomicIncrement(m_lNumWeakReferences);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType ReleaseWeakRef()override final</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="comment">// The method must be serialized!</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  ThreadingTools::LockHelper Lock(m_LockFlag);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// It is essentially important to check the number of weak references</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="comment">// while holding the lock. Otherwise reference counters object</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="comment">// may be destroyed twice if ReleaseStrongRef() is executed by other </span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">// thread.</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">auto</span> NumWeakReferences = Atomics::AtomicDecrement(m_lNumWeakReferences);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  VERIFY( NumWeakReferences >= 0, <span class="stringliteral">"Inconsistent call to ReleaseWeakRef()"</span> );</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// There are two special case when we must not destroy the ref counters object even</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// when NumWeakReferences == 0 && m_lNumStrongReferences == 0 :</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">//</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// This thread | Another thread - ReleaseStrongRef()</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="comment">// |</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// 1. Lock the object |</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">// | </span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="comment">// 2. Decrement m_lNumWeakReferences, | 1. Decrement m_lNumStrongReferences,</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// m_lNumWeakReferences==0 | RefCount == 0</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="comment">// |</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// | 2. Start waiting for the lock to destroy</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">// | the object, m_ObjectState != ObjectState::Destroyed</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">// 3. Do not destroy reference |</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="comment">// counters, unlock |</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="comment">// | 3. Acquire the lock, </span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="comment">// | destroy the object, </span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="comment">// | read m_lNumWeakReferences==0 </span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="comment">// | destroy the reference counters</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">//</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// If an exception is thrown during the object construction and there is a weak pointer to the object itself,</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// we may get to this point, but should not destroy the reference counters, because it will be destroyed by MakeNewRCObj</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// Consider this example:</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">//</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// A ==sp==> B ---wp---> A</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">//</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// MakeNewRCObj::operator()</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// try</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// {</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">// A.ctor()</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// B.ctor()</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// wp.ctor m_lNumWeakReferences==1</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// throw</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// wp.dtor m_lNumWeakReferences==0, destroy this</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// }</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">// catch(...)</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// {</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// Destory ref counters second time</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// }</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="comment">// </span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span>( NumWeakReferences == 0 && <span class="comment">/*m_lNumStrongReferences == 0 &&*/</span> m_ObjectState == ObjectState::Destroyed )</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  VERIFY_EXPR(m_lNumStrongReferences == 0);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  VERIFY( m_ObjectWrapperBuffer[0] == 0 && m_ObjectWrapperBuffer[1] == 0, <span class="stringliteral">"Object wrapper must be null"</span>);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// m_ObjectState is set to ObjectState::Destroyed under the lock. If the state is not Destroyed, </span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="comment">// ReleaseStrongRef() will take care of it. </span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="comment">// Access to Object wrapper and decrementing m_lNumWeakReferences is atomic. Since we acquired the lock, </span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// no other thread can access either of them. </span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="comment">// Access to m_lNumStrongReferences is NOT PROTECTED by lock.</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="comment">// There are no more references to the ref counters object and the object itself</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// is already destroyed.</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// We can safely unlock it and destroy.</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="comment">// If we do not unlock it, this->m_LockFlag will expire, </span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// which will cause Lock.~LockHelper() to crash.</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  Lock.Unlock();</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  SelfDestroy();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> NumWeakReferences;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetObject( <span class="keyword">class</span> IObject **ppObject )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span>( m_ObjectState != ObjectState::Alive)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span>; <span class="comment">// Early exit</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="comment">// It is essential to INCREMENT REF COUNTER while HOLDING THE LOCK to make sure that </span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="comment">// StrongRefCnt > 1 guarantees that the object is alive.</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">// If other thread started deleting the object in ReleaseStrongRef(), then m_lNumStrongReferences==0</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="comment">// We must make sure only one thread is allowed to increment the counter to guarantee that if StrongRefCnt > 1,</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">// there is at least one real strong reference left. Otherwise the following scenario may occur:</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="comment">//</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="comment">// m_lNumStrongReferences == 1</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="comment">// </span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="comment">// Thread 1 - ReleaseStrongRef() | Thread 2 - GetObject() | Thread 3 - GetObject()</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="comment">// - Decrement m_lNumStrongReferences | -Increment m_lNumStrongReferences | -Increment m_lNumStrongReferences</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// - Read RefCount == 0 | -Read StrongRefCnt==1 | -Read StrongRefCnt==2 </span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="comment">// Destroy the object | | -Return reference to the soon</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">// | | to expire object</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="comment">// </span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  ThreadingTools::LockHelper Lock(m_LockFlag);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">auto</span> StrongRefCnt = Atomics::AtomicIncrement(m_lNumStrongReferences);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="comment">// Checking if m_ObjectState == ObjectState::Alive only is not reliable:</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">//</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="comment">// This thread | Another thread</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="comment">// | </span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// 1. Acquire the lock | </span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// | 1. Decrement m_lNumStrongReferences </span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// 2. Increment m_lNumStrongReferences | 2. Test RefCount==0 </span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="comment">// 3. Read StrongRefCnt == 1 | 3. Start destroying the object </span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// m_ObjectState == ObjectState::Alive |</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="comment">// 4. DO NOT return the reference to | 4. Wait for the lock, m_ObjectState == ObjectState::Alive</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">// the object |</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// 5. Decrement m_lNumStrongReferences |</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="comment">// | 5. Destroy the object</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">if</span>( m_ObjectState == ObjectState::Alive && StrongRefCnt > 1 )</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  VERIFY( m_ObjectWrapperBuffer[0] != 0 && m_ObjectWrapperBuffer[1] != 0, <span class="stringliteral">"Object wrapper is not initialized"</span>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="comment">// QueryInterface() must not lock the object, or a deadlock happens.</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// The only other two methods that lock the object are ReleaseStrongRef()</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="comment">// and ReleaseWeakRef(), which are never called by QueryInterface()</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">auto</span> *pWrapper = <span class="keyword">reinterpret_cast<</span>ObjectWrapperBase*<span class="keyword">></span>(m_ObjectWrapperBuffer);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  pWrapper->QueryInterface(Diligent::IID_Unknown, ppObject);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  Atomics::AtomicDecrement(m_lNumStrongReferences);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType GetNumStrongRefs()const override final</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">return</span> m_lNumStrongReferences;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType GetNumWeakRefs()const override final</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">return</span> m_lNumWeakReferences;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keyword">template</span><<span class="keyword">typename</span> AllocatorType, <span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keyword">friend</span> <span class="keyword">class </span>MakeNewRCObj;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  RefCountersImpl()noexcept</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_lNumStrongReferences = 0;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  m_lNumWeakReferences = 0;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  memset(m_ObjectWrapperBuffer, 0, <span class="keyword">sizeof</span>(m_ObjectWrapperBuffer));</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keyword">class </span>ObjectWrapperBase</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroyObject() = 0;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &iid, IObject **ppInterface )=0;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  };</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType, <span class="keyword">typename</span> AllocatorType></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keyword">class </span>ObjectWrapper : <span class="keyword">public</span> ObjectWrapperBase</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  ObjectWrapper(ObjectType *pObject, AllocatorType *pAllocator)noexcept : </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_pObject(pObject),</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  m_pAllocator(pAllocator)</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {}</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroyObject()override final</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">if</span> (m_pAllocator)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_pObject->~ObjectType();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  m_pAllocator->Free(m_pObject);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keyword">delete</span> m_pObject;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &iid, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> m_pObject->QueryInterface(iid, ppInterface);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// It is crucially important that the type of the pointer</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="comment">// is ObjectType and not IObject, since the latter</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// does not have virtual dtor.</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  ObjectType* <span class="keyword">const</span> m_pObject;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  AllocatorType * <span class="keyword">const</span> m_pAllocator;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  };</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType, <span class="keyword">typename</span> AllocatorType></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordtype">void</span> Attach(ObjectType *pObject, AllocatorType *pAllocator)</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  VERIFY(m_ObjectState == ObjectState::NotInitialized, <span class="stringliteral">"Object has already been attached"</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  static_assert(<span class="keyword">sizeof</span>(ObjectWrapper<ObjectType, AllocatorType>) == <span class="keyword">sizeof</span>(m_ObjectWrapperBuffer), <span class="stringliteral">"Unexpected object wrapper size"</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keyword">new</span>(m_ObjectWrapperBuffer) ObjectWrapper<ObjectType, AllocatorType>(pObject, pAllocator);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  m_ObjectState = ObjectState::Alive;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordtype">void</span> SelfDestroy()</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keyword">delete</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  ~RefCountersImpl()</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  VERIFY( m_lNumStrongReferences == 0 && m_lNumWeakReferences == 0,</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="stringliteral">"There exist outstanding references to the object being destroyed"</span> );</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="comment">// No copies/moves</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  RefCountersImpl(<span class="keyword">const</span> RefCountersImpl&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  RefCountersImpl(RefCountersImpl&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  RefCountersImpl& operator = (<span class="keyword">const</span> RefCountersImpl&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  RefCountersImpl& operator = (RefCountersImpl&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">size_t</span> ObjectWrapperBufferSize = <span class="keyword">sizeof</span>(ObjectWrapper<IObject, IMemoryAllocator>) / <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordtype">size_t</span> m_ObjectWrapperBuffer[ObjectWrapperBufferSize];</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  Atomics::AtomicLong m_lNumStrongReferences;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  Atomics::AtomicLong m_lNumWeakReferences;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  ThreadingTools::LockFlag m_LockFlag;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keyword">enum class</span> ObjectState : Int32</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  NotInitialized,</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  Alive,</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  Destroyed</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  };</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keyword">volatile</span> ObjectState m_ObjectState = ObjectState::NotInitialized;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> };</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> </div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="keyword">template</span><<span class="keyword">typename</span> Base></div><div class="line"><a name="l00470"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ref_counted_object.html"> 470</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_ref_counted_object.html">RefCountedObject</a> : <span class="keyword">public</span> Base</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keyword">using</span> CounterValueType = IReferenceCounters::CounterValueType;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="class_diligent_1_1_ref_counted_object.html">RefCountedObject</a>(IReferenceCounters *pRefCounters)noexcept :</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  m_pRefCounters( ValidatedCast<RefCountersImpl>(pRefCounters) )</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// If object is allocated on stack, ref counters will be null</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">//VERIFY(pRefCounters != nullptr, "Reference counters must not be null")</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// Virtual destructor makes sure all derived classes can be destroyed </span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">// through the pointer to the base class</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_diligent_1_1_ref_counted_object.html">RefCountedObject</a>()</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="comment">// WARNING! m_pRefCounters may be expired in scenarios like this:</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="comment">//</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="comment">// A ==sp==> B ---wp---> A</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">// </span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="comment">// RefCounters_A.ReleaseStrongRef(){ // NumStrongRef == 0, NumWeakRef == 1</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="comment">// bDestroyThis = (m_lNumWeakReferences == 0) == false;</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="comment">// delete A{</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="comment">// A.~dtor(){</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="comment">// B.~dtor(){</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="comment">// wpA.ReleaseWeakRef(){ // NumStrongRef == 0, NumWeakRef == 0, m_pObject==nullptr</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="comment">// delete RefCounters_A;</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="comment">// ...</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">// VERIFY( m_pRefCounters->GetNumStrongRefs() == 0 // Access violation! </span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="comment">// This also may happen if one thread is executing ReleaseStrongRef(), while</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">// another one is simultaneously running ReleaseWeakRef().</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="comment">//VERIFY( m_pRefCounters->GetNumStrongRefs() == 0,</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="comment">// "There remain strong references to the object being destroyed" );</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> </div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> IReferenceCounters* GetReferenceCounters()<span class="keyword">const</span> <span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  VERIFY_EXPR(m_pRefCounters != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">return</span> m_pRefCounters;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType AddRef()<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  VERIFY_EXPR(m_pRefCounters != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">// Since type of m_pRefCounters is RefCountersImpl,</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="comment">// this call will not be virtual and should be inlined</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">return</span> m_pRefCounters->AddStrongRef();</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType Release()<span class="keyword">override</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  VERIFY_EXPR(m_pRefCounters != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="comment">// Since type of m_pRefCounters is RefCountersImpl,</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// this call will not be virtual and should be inlined</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">return</span> m_pRefCounters->ReleaseStrongRef();</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> </div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keyword">template</span><<span class="keyword">typename</span> AllocatorType, <span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keyword">friend</span> <span class="keyword">class </span>MakeNewRCObj;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keyword">friend</span> <span class="keyword">class </span>RefCountersImpl;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="comment">// Operator delete can only be called from MakeNewRCObj if an exception is thrown,</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">// or from RefCountersImpl when object is destroyed</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="comment">// It needs to be protected (not private!) to allow generation of destructors in derived classes</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span> *ptr)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keyword">delete</span>[] <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(ptr);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  }</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ObjectAllocatorType></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span> *ptr, ObjectAllocatorType &Allocator, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">return</span> Allocator.Free(ptr);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="comment">// Operator new is private, and can only be called by MakeNewRCObj</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(<span class="keywordtype">size_t</span> Size)</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">return</span> <span class="keyword">new</span> Uint8[Size];</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ObjectAllocatorType></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(<span class="keywordtype">size_t</span> Size, ObjectAllocatorType &Allocator, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">return</span> Allocator.Allocate(Size, dbgDescription, dbgFileName, dbgLineNumber);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">// Note that the type of the reference counters is RefCountersImpl,</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="comment">// not IReferenceCounters. This avoids virtual calls from</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="comment">// AddRef() and Release() methods</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  RefCountersImpl *<span class="keyword">const</span> m_pRefCounters;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> };</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType, <span class="keyword">typename</span> AllocatorType = IMemoryAllocator></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="keyword">class </span>MakeNewRCObj</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  MakeNewRCObj(AllocatorType &Allocator, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber, IObject* pOwner = <span class="keyword">nullptr</span>)noexcept : </div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  m_pAllocator(&Allocator),</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  m_pOwner(pOwner),</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  m_dbgDescription(dbgDescription),</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  m_dbgFileName(dbgFileName),</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  m_dbgLineNumber(dbgLineNumber)</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> </div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  MakeNewRCObj(IObject* pOwner = <span class="keyword">nullptr</span>)noexcept : </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  m_pAllocator(<span class="keywordtype">nullptr</span>),</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  m_pOwner(pOwner),</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  m_dbgDescription(<span class="keywordtype">nullptr</span>),</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  m_dbgFileName(<span class="keywordtype">nullptr</span>),</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  m_dbgLineNumber(0)</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  {}</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  </div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  MakeNewRCObj(<span class="keyword">const</span> MakeNewRCObj&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  MakeNewRCObj(MakeNewRCObj&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  MakeNewRCObj& operator=(<span class="keyword">const</span> MakeNewRCObj&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  MakeNewRCObj& operator=(MakeNewRCObj&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ... CtorArgTypes></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  ObjectType* operator() (CtorArgTypes&& ... CtorArgs)</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  RefCountersImpl *pNewRefCounters = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  IReferenceCounters *pRefCounters = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">if</span>(m_pOwner != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  pRefCounters = m_pOwner->GetReferenceCounters();</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="comment">// Constructor of RefCountersImpl class is private and only accessible</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="comment">// by methods of MakeNewRCObj</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  pNewRefCounters = <span class="keyword">new</span> RefCountersImpl();</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  pRefCounters = pNewRefCounters;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  }</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  ObjectType *pObj = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">// Operators new and delete of RefCountedObject are private and only accessible</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="comment">// by methods of MakeNewRCObj</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">if</span>(m_pAllocator)</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  pObj = <span class="keyword">new</span>(*m_pAllocator, m_dbgDescription, m_dbgFileName, m_dbgLineNumber) ObjectType(pRefCounters, std::forward<CtorArgTypes>(CtorArgs)... );</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  pObj = <span class="keyword">new</span> ObjectType( pRefCounters, std::forward<CtorArgTypes>(CtorArgs)... );</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">if</span>(pNewRefCounters != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  pNewRefCounters->Attach<ObjectType, AllocatorType>(pObj, m_pAllocator);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">catch</span> (...)</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">if</span>(pNewRefCounters != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  pNewRefCounters->SelfDestroy();</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">throw</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">return</span> pObj;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  }</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  AllocatorType* <span class="keyword">const</span> m_pAllocator;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  IObject* <span class="keyword">const</span> m_pOwner;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keyword">const</span> Char* <span class="keyword">const</span> m_dbgDescription;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> m_dbgFileName;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keyword">const</span> Int32 m_dbgLineNumber;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> };</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> </div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="preprocessor">#define NEW_RC_OBJ(Allocator, Desc, Type, ...) MakeNewRCObj<Type, typename std::remove_reference<decltype(Allocator)>::type>(Allocator, Desc, __FILE__, __LINE__, ##__VA_ARGS__)</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Atomics.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "LockHelper.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ValidatedCast.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// This class controls the lifetime of a refcounted object</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>RefCountersImpl : <span class="keyword">public</span> IReferenceCounters</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType AddStrongRef()override final</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  VERIFY( m_ObjectState == ObjectState::Alive, <span class="stringliteral">"Attempting to increment strong reference counter for a destroyed or not itialized object!"</span> );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  VERIFY( m_ObjectWrapperBuffer[0] != 0 && m_ObjectWrapperBuffer[1] != 0, <span class="stringliteral">"Object wrapper is not initialized"</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> Atomics::AtomicIncrement(m_lNumStrongReferences);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType ReleaseStrongRef()override final</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  VERIFY( m_ObjectState == ObjectState::Alive, <span class="stringliteral">"Attempting to decrement strong reference counter for an object that is not alive"</span> );</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  VERIFY( m_ObjectWrapperBuffer[0] != 0 && m_ObjectWrapperBuffer[1] != 0, <span class="stringliteral">"Object wrapper is not initialized"</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// Decrement strong reference counter without acquiring the lock. </span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">auto</span> RefCount = Atomics::AtomicDecrement(m_lNumStrongReferences);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  VERIFY( RefCount >= 0, <span class="stringliteral">"Inconsistent call to ReleaseStrongRef()"</span> );</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>( RefCount == 0 )</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Since RefCount==0, there are no more strong references and the only place </span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// where strong ref counter can be incremented is from GetObject().</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// If several threads were allowed to get to this point, there would </span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// be serious risk that <this> had already been destroyed and m_LockFlag expired. </span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Consider the following scenario:</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// |</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// This thread | Another thread</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// |</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// m_lNumStrongReferences == 1</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// m_lNumWeakReferences == 1</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// | </span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// 1. Decrement m_lNumStrongReferences | </span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// Read RefCount==0, no lock acquired| </span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// | 1. Run GetObject()</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// | - acquire the lock</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// | - increment m_lNumStrongReferences</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// | - release the lock</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// | </span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// | 2. Run ReleaseWeakRef()</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// | - decrement m_lNumWeakReferences</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// | </span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// | 3. Run ReleaseStrongRef()</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// | - decrement m_lNumStrongReferences</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// | - read RefCount==0</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">//</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// Both threads will get to this point. The first one will destroy <this></span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// The second one will read expired m_LockFlag</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// IT IS CRUCIALLY IMPORTANT TO ASSURE THAT ONLY ONE THREAD WILL EVER</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// EXECUTE THIS CODE</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// The sloution is to atomically increment strong ref counter in GetObject().</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// There are two possible scenarios depending on who first increments the counter:</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Scenario I</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">//</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// This thread | Another thread - GetObject() | One more thread - GetObject()</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// m_lNumStrongReferences == 1 |</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// | 1. Acquire the lock |</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// 1. Decrement m_lNumStrongReferences | | 1. Wait for the lock</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// 2. Read RefCount==0 | 2. Increment m_lNumStrongReferences |</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// 3. Start destroying the object | 3. Read StrongRefCnt == 1 |</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// 4. Wait for the lock | 4. DO NOT return the reference |</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// | to the object |</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// | 5. Decrement m_lNumStrongReferences |</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// _ _ _ _ _ _ _ _ _ _ _ _ _| 6. Release the lock _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// | | 2. Acquire the lock </span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// | | 3. Increment m_lNumStrongReferences</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// | | 4. Read StrongRefCnt == 1</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// | | 5. DO NOT return the reference </span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// | | to the object</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// | | 6. Decrement m_lNumStrongReferences </span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ _ | _ 7. Release the lock _ _ _ _ _ _</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">// 5. Acquire the lock | |</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// - m_lNumStrongReferences==0 | |</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// 6. DESTROY the object | |</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// GetObject() MUST BE SERIALIZED for this to work properly!</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// Scenario II</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">//</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// This thread | Another thread - GetObject()</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// |</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// m_lNumStrongReferences == 1</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// |</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// | 1. Acquire the lock </span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// | 2. Increment m_lNumStrongReferences</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// 1. Decrement m_lNumStrongReferences |</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// 2. Read RefCount>0 | </span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// 3. DO NOT destroy the object | 3. Read StrongRefCnt > 1 (while m_lNumStrongReferences == 1)</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// | 4. Return the reference to the object</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// | - Increment m_lNumStrongReferences</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// | 5. Decrement m_lNumStrongReferences</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  Atomics::Long NumStrongRefs = m_lNumStrongReferences;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  VERIFY( NumStrongRefs == 0 || NumStrongRefs == 1, <span class="stringliteral">"Num strong references ("</span>, NumStrongRefs, <span class="stringliteral">") is expected to be 0 or 1"</span> );</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Acquire the lock.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  ThreadingTools::LockHelper Lock(m_LockFlag);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// GetObject() first acquires the lock, and only then increments and </span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// decrements the ref counter. If it reads 1 after incremeting the counter,</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// it does not return the reference to the object and decrements the counter.</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// If we acquired the lock, GetObject() will not start until we are done</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  VERIFY_EXPR( m_lNumStrongReferences == 0 && m_ObjectState == ObjectState::Alive );</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Extra caution</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(m_lNumStrongReferences == 0 && m_ObjectState == ObjectState::Alive)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  VERIFY(m_ObjectWrapperBuffer[0] != 0 && m_ObjectWrapperBuffer[1] != 0, <span class="stringliteral">"Object wrapper is not initialized"</span>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// We cannot destroy the object while reference counters are locked as this will </span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// cause a deadlock in cases like this:</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">//</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// A ==sp==> B ---wp---> A</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// </span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// RefCounters_A.Lock();</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// delete A{</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">// A.~dtor(){</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// B.~dtor(){</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// wpA.ReleaseWeakRef(){</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// RefCounters_A.Lock(); // Deadlock</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">//</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// So we copy the object wrapper and destroy the object after unlocking the</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// reference counters</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">size_t</span> ObjectWrapperBufferCopy[ObjectWrapperBufferSize];</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i=0; i < ObjectWrapperBufferSize; ++i)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  ObjectWrapperBufferCopy[i] = m_ObjectWrapperBuffer[i];</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  memset(m_ObjectWrapperBuffer, 0, <span class="keyword">sizeof</span>(m_ObjectWrapperBuffer));</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">auto</span> *pWrapper = <span class="keyword">reinterpret_cast<</span>ObjectWrapperBase*<span class="keyword">></span>(ObjectWrapperBufferCopy);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// In a multithreaded environment, reference counters object may </span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// be destroyed at any time while m_pObject->~dtor() is running.</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// NOTE: m_pObject may not be the only object referencing m_pRefCounters.</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// All objects that are owned by m_pObject will point to the same </span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// reference counters object.</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// Note that this is the only place where m_ObjectState is</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// modified after the ref counters object has been created</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  m_ObjectState = ObjectState::Destroyed;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// The object is now detached from the reference counters and it is if</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// it was destroyed since no one can obtain access to it.</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// It is essentially important to check the number of weak references</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// while the object is locked. Otherwise reference counters object</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// may be destroyed twice if ReleaseWeakRef() is executed by other thread:</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">//</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// This thread | Another thread - ReleaseWeakRef()</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// | </span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// 1. Decrement m_lNumStrongReferences,| </span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// m_lNumStrongReferences==0, | </span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// acquire the lock, destroy |</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// the obj, release the lock |</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// m_lNumWeakReferences == 1 | </span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// | 1. Aacquire the lock, </span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// | decrement m_lNumWeakReferences,</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// | m_lNumWeakReferences == 0, </span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// | m_ObjectState == ObjectState::Destroyed</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// |</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// 2. Read m_lNumWeakReferences == 0 |</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// 3. Destroy the ref counters obj | 2. Destroy the ref counters obj</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">//</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">bool</span> bDestroyThis = m_lNumWeakReferences == 0;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// ReleaseWeakRef() decrements m_lNumWeakReferences, and checks it for</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// zero only after acquiring the lock. So if m_lNumWeakReferences==0, no </span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// weak reference-related code may be running</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// We must explicitly unlock the object now to avoid deadlocks. Also, </span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">// if this is deleted, this->m_LockFlag will expire, which will cause </span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// Lock.~LockHelper() to crash</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  Lock.Unlock();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// Destroy referenced object</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  pWrapper->DestroyObject();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// Note that <this> may be destroyed here already, </span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">// see comments in ~ControlledObjectType()</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">if</span>( bDestroyThis )</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  SelfDestroy();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> RefCount;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType AddWeakRef()override final</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> Atomics::AtomicIncrement(m_lNumWeakReferences);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType ReleaseWeakRef()override final</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="comment">// The method must be serialized!</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  ThreadingTools::LockHelper Lock(m_LockFlag);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// It is essentially important to check the number of weak references</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="comment">// while holding the lock. Otherwise reference counters object</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="comment">// may be destroyed twice if ReleaseStrongRef() is executed by other </span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">// thread.</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">auto</span> NumWeakReferences = Atomics::AtomicDecrement(m_lNumWeakReferences);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  VERIFY( NumWeakReferences >= 0, <span class="stringliteral">"Inconsistent call to ReleaseWeakRef()"</span> );</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// There are two special case when we must not destroy the ref counters object even</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// when NumWeakReferences == 0 && m_lNumStrongReferences == 0 :</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">//</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// This thread | Another thread - ReleaseStrongRef()</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="comment">// |</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// 1. Lock the object |</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">// | </span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="comment">// 2. Decrement m_lNumWeakReferences, | 1. Decrement m_lNumStrongReferences,</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// m_lNumWeakReferences==0 | RefCount == 0</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="comment">// |</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// | 2. Start waiting for the lock to destroy</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">// | the object, m_ObjectState != ObjectState::Destroyed</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">// 3. Do not destroy reference |</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="comment">// counters, unlock |</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="comment">// | 3. Acquire the lock, </span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="comment">// | destroy the object, </span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="comment">// | read m_lNumWeakReferences==0 </span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="comment">// | destroy the reference counters</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">//</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// If an exception is thrown during the object construction and there is a weak pointer to the object itself,</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// we may get to this point, but should not destroy the reference counters, because it will be destroyed by MakeNewRCObj</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// Consider this example:</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">//</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// A ==sp==> B ---wp---> A</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">//</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// MakeNewRCObj::operator()</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// try</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// {</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">// A.ctor()</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// B.ctor()</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// wp.ctor m_lNumWeakReferences==1</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// throw</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// wp.dtor m_lNumWeakReferences==0, destroy this</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// }</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">// catch(...)</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// {</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// Destory ref counters second time</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// }</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="comment">// </span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span>( NumWeakReferences == 0 && <span class="comment">/*m_lNumStrongReferences == 0 &&*/</span> m_ObjectState == ObjectState::Destroyed )</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  VERIFY_EXPR(m_lNumStrongReferences == 0);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  VERIFY( m_ObjectWrapperBuffer[0] == 0 && m_ObjectWrapperBuffer[1] == 0, <span class="stringliteral">"Object wrapper must be null"</span>);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// m_ObjectState is set to ObjectState::Destroyed under the lock. If the state is not Destroyed, </span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="comment">// ReleaseStrongRef() will take care of it. </span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="comment">// Access to Object wrapper and decrementing m_lNumWeakReferences is atomic. Since we acquired the lock, </span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// no other thread can access either of them. </span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="comment">// Access to m_lNumStrongReferences is NOT PROTECTED by lock.</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="comment">// There are no more references to the ref counters object and the object itself</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// is already destroyed.</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// We can safely unlock it and destroy.</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="comment">// If we do not unlock it, this->m_LockFlag will expire, </span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// which will cause Lock.~LockHelper() to crash.</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  Lock.Unlock();</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  SelfDestroy();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> NumWeakReferences;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetObject( <span class="keyword">class</span> IObject **ppObject )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span>( m_ObjectState != ObjectState::Alive)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span>; <span class="comment">// Early exit</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="comment">// It is essential to INCREMENT REF COUNTER while HOLDING THE LOCK to make sure that </span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="comment">// StrongRefCnt > 1 guarantees that the object is alive.</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">// If other thread started deleting the object in ReleaseStrongRef(), then m_lNumStrongReferences==0</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="comment">// We must make sure only one thread is allowed to increment the counter to guarantee that if StrongRefCnt > 1,</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">// there is at least one real strong reference left. Otherwise the following scenario may occur:</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="comment">//</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="comment">// m_lNumStrongReferences == 1</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="comment">// </span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="comment">// Thread 1 - ReleaseStrongRef() | Thread 2 - GetObject() | Thread 3 - GetObject()</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="comment">// - Decrement m_lNumStrongReferences | -Increment m_lNumStrongReferences | -Increment m_lNumStrongReferences</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// - Read RefCount == 0 | -Read StrongRefCnt==1 | -Read StrongRefCnt==2 </span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="comment">// Destroy the object | | -Return reference to the soon</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">// | | to expire object</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="comment">// </span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  ThreadingTools::LockHelper Lock(m_LockFlag);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">auto</span> StrongRefCnt = Atomics::AtomicIncrement(m_lNumStrongReferences);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="comment">// Checking if m_ObjectState == ObjectState::Alive only is not reliable:</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">//</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="comment">// This thread | Another thread</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="comment">// | </span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// 1. Acquire the lock | </span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// | 1. Decrement m_lNumStrongReferences </span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// 2. Increment m_lNumStrongReferences | 2. Test RefCount==0 </span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="comment">// 3. Read StrongRefCnt == 1 | 3. Start destroying the object </span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// m_ObjectState == ObjectState::Alive |</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="comment">// 4. DO NOT return the reference to | 4. Wait for the lock, m_ObjectState == ObjectState::Alive</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">// the object |</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// 5. Decrement m_lNumStrongReferences |</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="comment">// | 5. Destroy the object</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">if</span>( m_ObjectState == ObjectState::Alive && StrongRefCnt > 1 )</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  VERIFY( m_ObjectWrapperBuffer[0] != 0 && m_ObjectWrapperBuffer[1] != 0, <span class="stringliteral">"Object wrapper is not initialized"</span>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="comment">// QueryInterface() must not lock the object, or a deadlock happens.</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// The only other two methods that lock the object are ReleaseStrongRef()</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="comment">// and ReleaseWeakRef(), which are never called by QueryInterface()</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">auto</span> *pWrapper = <span class="keyword">reinterpret_cast<</span>ObjectWrapperBase*<span class="keyword">></span>(m_ObjectWrapperBuffer);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  pWrapper->QueryInterface(Diligent::IID_Unknown, ppObject);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  Atomics::AtomicDecrement(m_lNumStrongReferences);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType GetNumStrongRefs()const override final</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">return</span> m_lNumStrongReferences;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType GetNumWeakRefs()const override final</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">return</span> m_lNumWeakReferences;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keyword">template</span><<span class="keyword">typename</span> AllocatorType, <span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keyword">friend</span> <span class="keyword">class </span>MakeNewRCObj;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  RefCountersImpl()noexcept</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_lNumStrongReferences = 0;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  m_lNumWeakReferences = 0;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  memset(m_ObjectWrapperBuffer, 0, <span class="keyword">sizeof</span>(m_ObjectWrapperBuffer));</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keyword">class </span>ObjectWrapperBase</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroyObject() = 0;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &iid, IObject **ppInterface )=0;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  };</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType, <span class="keyword">typename</span> AllocatorType></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keyword">class </span>ObjectWrapper : <span class="keyword">public</span> ObjectWrapperBase</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  ObjectWrapper(ObjectType *pObject, AllocatorType *pAllocator)noexcept : </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_pObject(pObject),</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  m_pAllocator(pAllocator)</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {}</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroyObject()override final</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">if</span> (m_pAllocator)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_pObject->~ObjectType();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  m_pAllocator->Free(m_pObject);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keyword">delete</span> m_pObject;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &iid, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> m_pObject->QueryInterface(iid, ppInterface);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// It is crucially important that the type of the pointer</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="comment">// is ObjectType and not IObject, since the latter</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// does not have virtual dtor.</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  ObjectType* <span class="keyword">const</span> m_pObject;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  AllocatorType * <span class="keyword">const</span> m_pAllocator;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  };</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType, <span class="keyword">typename</span> AllocatorType></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordtype">void</span> Attach(ObjectType *pObject, AllocatorType *pAllocator)</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  VERIFY(m_ObjectState == ObjectState::NotInitialized, <span class="stringliteral">"Object has already been attached"</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  static_assert(<span class="keyword">sizeof</span>(ObjectWrapper<ObjectType, AllocatorType>) == <span class="keyword">sizeof</span>(m_ObjectWrapperBuffer), <span class="stringliteral">"Unexpected object wrapper size"</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keyword">new</span>(m_ObjectWrapperBuffer) ObjectWrapper<ObjectType, AllocatorType>(pObject, pAllocator);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  m_ObjectState = ObjectState::Alive;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordtype">void</span> SelfDestroy()</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keyword">delete</span> <span class="keyword">this</span>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  ~RefCountersImpl()</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  VERIFY( m_lNumStrongReferences == 0 && m_lNumWeakReferences == 0,</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="stringliteral">"There exist outstanding references to the object being destroyed"</span> );</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="comment">// No copies/moves</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  RefCountersImpl(<span class="keyword">const</span> RefCountersImpl&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  RefCountersImpl(RefCountersImpl&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  RefCountersImpl& operator = (<span class="keyword">const</span> RefCountersImpl&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  RefCountersImpl& operator = (RefCountersImpl&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">size_t</span> ObjectWrapperBufferSize = <span class="keyword">sizeof</span>(ObjectWrapper<IObject, IMemoryAllocator>) / <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordtype">size_t</span> m_ObjectWrapperBuffer[ObjectWrapperBufferSize];</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  Atomics::AtomicLong m_lNumStrongReferences;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  Atomics::AtomicLong m_lNumWeakReferences;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  ThreadingTools::LockFlag m_LockFlag;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keyword">enum class</span> ObjectState : Int32</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  NotInitialized,</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  Alive,</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  Destroyed</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  };</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keyword">volatile</span> ObjectState m_ObjectState = ObjectState::NotInitialized;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> };</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> </div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="keyword">template</span><<span class="keyword">typename</span> Base></div><div class="line"><a name="l00470"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ref_counted_object.html"> 470</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_ref_counted_object.html">RefCountedObject</a> : <span class="keyword">public</span> Base</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keyword">using</span> CounterValueType = IReferenceCounters::CounterValueType;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="class_diligent_1_1_ref_counted_object.html">RefCountedObject</a>(IReferenceCounters *pRefCounters)noexcept :</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  m_pRefCounters( ValidatedCast<RefCountersImpl>(pRefCounters) )</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// If object is allocated on stack, ref counters will be null</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">//VERIFY(pRefCounters != nullptr, "Reference counters must not be null")</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// Virtual destructor makes sure all derived classes can be destroyed </span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">// through the pointer to the base class</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_diligent_1_1_ref_counted_object.html">RefCountedObject</a>()</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="comment">// WARNING! m_pRefCounters may be expired in scenarios like this:</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="comment">//</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="comment">// A ==sp==> B ---wp---> A</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">// </span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="comment">// RefCounters_A.ReleaseStrongRef(){ // NumStrongRef == 0, NumWeakRef == 1</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="comment">// bDestroyThis = (m_lNumWeakReferences == 0) == false;</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="comment">// delete A{</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="comment">// A.~dtor(){</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="comment">// B.~dtor(){</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="comment">// wpA.ReleaseWeakRef(){ // NumStrongRef == 0, NumWeakRef == 0, m_pObject==nullptr</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="comment">// delete RefCounters_A;</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="comment">// ...</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">// VERIFY( m_pRefCounters->GetNumStrongRefs() == 0 // Access violation! </span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="comment">// This also may happen if one thread is executing ReleaseStrongRef(), while</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">// another one is simultaneously running ReleaseWeakRef().</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="comment">//VERIFY( m_pRefCounters->GetNumStrongRefs() == 0,</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="comment">// "There remain strong references to the object being destroyed" );</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> </div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> IReferenceCounters* GetReferenceCounters()<span class="keyword">const</span> <span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  VERIFY_EXPR(m_pRefCounters != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">return</span> m_pRefCounters;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType AddRef()<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  VERIFY_EXPR(m_pRefCounters != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">// Since type of m_pRefCounters is RefCountersImpl,</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="comment">// this call will not be virtual and should be inlined</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">return</span> m_pRefCounters->AddStrongRef();</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keyword">inline</span> <span class="keyword">virtual</span> CounterValueType Release()<span class="keyword">override</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  VERIFY_EXPR(m_pRefCounters != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="comment">// Since type of m_pRefCounters is RefCountersImpl,</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// this call will not be virtual and should be inlined</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">return</span> m_pRefCounters->ReleaseStrongRef();</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> </div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keyword">template</span><<span class="keyword">typename</span> AllocatorType, <span class="keyword">typename</span> ObjectType></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keyword">friend</span> <span class="keyword">class </span>MakeNewRCObj;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keyword">friend</span> <span class="keyword">class </span>RefCountersImpl;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="comment">// Operator delete can only be called from MakeNewRCObj if an exception is thrown,</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">// or from RefCountersImpl when object is destroyed</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="comment">// It needs to be protected (not private!) to allow generation of destructors in derived classes</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span> *ptr)</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keyword">delete</span>[] <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(ptr);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  }</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ObjectAllocatorType></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span> *ptr, ObjectAllocatorType &Allocator, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">return</span> Allocator.Free(ptr);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="comment">// Operator new is private, and can only be called by MakeNewRCObj</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(<span class="keywordtype">size_t</span> Size)</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">return</span> <span class="keyword">new</span> Uint8[Size];</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ObjectAllocatorType></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(<span class="keywordtype">size_t</span> Size, ObjectAllocatorType &Allocator, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">return</span> Allocator.Allocate(Size, dbgDescription, dbgFileName, dbgLineNumber);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">// Note that the type of the reference counters is RefCountersImpl,</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="comment">// not IReferenceCounters. This avoids virtual calls from</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="comment">// AddRef() and Release() methods</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  RefCountersImpl *<span class="keyword">const</span> m_pRefCounters;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> };</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> <span class="keyword">template</span><<span class="keyword">typename</span> ObjectType, <span class="keyword">typename</span> AllocatorType = IMemoryAllocator></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="keyword">class </span>MakeNewRCObj</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  MakeNewRCObj(AllocatorType &Allocator, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> <span class="keywordtype">char</span>* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber, IObject* pOwner = <span class="keyword">nullptr</span>)noexcept : </div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  m_pAllocator(&Allocator),</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  m_pOwner(pOwner),</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  m_dbgDescription(dbgDescription),</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  m_dbgFileName(dbgFileName),</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  m_dbgLineNumber(dbgLineNumber)</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> </div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  MakeNewRCObj(IObject* pOwner = <span class="keyword">nullptr</span>)noexcept : </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  m_pAllocator(<span class="keywordtype">nullptr</span>),</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  m_pOwner(pOwner),</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  m_dbgDescription(<span class="keywordtype">nullptr</span>),</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  m_dbgFileName(<span class="keywordtype">nullptr</span>),</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  m_dbgLineNumber(0)</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  {}</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  </div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  MakeNewRCObj(<span class="keyword">const</span> MakeNewRCObj&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  MakeNewRCObj(MakeNewRCObj&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  MakeNewRCObj& operator=(<span class="keyword">const</span> MakeNewRCObj&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  MakeNewRCObj& operator=(MakeNewRCObj&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ... CtorArgTypes></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  ObjectType* operator() (CtorArgTypes&& ... CtorArgs)</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  RefCountersImpl *pNewRefCounters = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  IReferenceCounters *pRefCounters = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">if</span>(m_pOwner != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  pRefCounters = m_pOwner->GetReferenceCounters();</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="comment">// Constructor of RefCountersImpl class is private and only accessible</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="comment">// by methods of MakeNewRCObj</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  pNewRefCounters = <span class="keyword">new</span> RefCountersImpl();</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  pRefCounters = pNewRefCounters;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  }</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  ObjectType *pObj = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">// Operators new and delete of RefCountedObject are private and only accessible</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="comment">// by methods of MakeNewRCObj</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">if</span>(m_pAllocator)</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  pObj = <span class="keyword">new</span>(*m_pAllocator, m_dbgDescription, m_dbgFileName, m_dbgLineNumber) ObjectType(pRefCounters, std::forward<CtorArgTypes>(CtorArgs)... );</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  pObj = <span class="keyword">new</span> ObjectType( pRefCounters, std::forward<CtorArgTypes>(CtorArgs)... );</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">if</span>(pNewRefCounters != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  pNewRefCounters->Attach<ObjectType, AllocatorType>(pObj, m_pAllocator);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">catch</span> (...)</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">if</span>(pNewRefCounters != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  pNewRefCounters->SelfDestroy();</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">throw</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">return</span> pObj;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  }</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  AllocatorType* <span class="keyword">const</span> m_pAllocator;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  IObject* <span class="keyword">const</span> m_pOwner;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keyword">const</span> Char* <span class="keyword">const</span> m_dbgDescription;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> m_dbgFileName;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keyword">const</span> Int32 m_dbgLineNumber;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> };</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> </div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="preprocessor">#define NEW_RC_OBJ(Allocator, Desc, Type, ...) MakeNewRCObj<Type, typename std::remove_reference<decltype(Allocator)>::type>(Allocator, Desc, __FILE__, __LINE__, ##__VA_ARGS__)</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_ref_counted_object_html"><div class="ttname"><a href="class_diligent_1_1_ref_counted_object.html">Diligent::RefCountedObject</a></div><div class="ttdoc">Base class for all reference counting objects. </div><div class="ttdef"><b>Definition:</b> RefCountedObjectImpl.h:470</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_reference_counters_8h_source.html b/doc/html/_reference_counters_8h_source.html index e1f1aeb3..dbead877 100644 --- a/doc/html/_reference_counters_8h_source.html +++ b/doc/html/_reference_counters_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">ReferenceCounters.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "InterfaceID.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_reference_counters.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_reference_counters.html">IReferenceCounters</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">using</span> CounterValueType = long;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#a9f16fac7d82b9db77472c01221252d9e">AddStrongRef</a>() = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#af2f3edccd5af4266a2096b6cceb767a6">ReleaseStrongRef</a>() = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#af9bd07469345d500baf57e4a08fa649f">AddWeakRef</a>() = 0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#a045d57bcd6df0409da96c46eec61e4fa">ReleaseWeakRef</a>() = 0;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_reference_counters.html#a8c6c92f5510df6b74e8cd07a52080473">GetObject</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_object.html">IObject</a> **ppObject) = 0;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#af89f01cc9cd121dad42ca4d85f211f12">GetNumStrongRefs</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#a4a65d08c1f116deadbb82de322f7ccba">GetNumWeakRefs</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> };</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "InterfaceID.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_reference_counters.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_reference_counters.html">IReferenceCounters</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">using</span> CounterValueType = long;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#a9f16fac7d82b9db77472c01221252d9e">AddStrongRef</a>() = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#af2f3edccd5af4266a2096b6cceb767a6">ReleaseStrongRef</a>() = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#af9bd07469345d500baf57e4a08fa649f">AddWeakRef</a>() = 0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#a045d57bcd6df0409da96c46eec61e4fa">ReleaseWeakRef</a>() = 0;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_reference_counters.html#a8c6c92f5510df6b74e8cd07a52080473">GetObject</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_object.html">IObject</a> **ppObject) = 0;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#af89f01cc9cd121dad42ca4d85f211f12">GetNumStrongRefs</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> CounterValueType <a class="code" href="class_diligent_1_1_i_reference_counters.html#a4a65d08c1f116deadbb82de322f7ccba">GetNumWeakRefs</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> };</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="class_diligent_1_1_i_reference_counters_html_af9bd07469345d500baf57e4a08fa649f"><div class="ttname"><a href="class_diligent_1_1_i_reference_counters.html#af9bd07469345d500baf57e4a08fa649f">Diligent::IReferenceCounters::AddWeakRef</a></div><div class="ttdeci">virtual CounterValueType AddWeakRef()=0</div><div class="ttdoc">Increments the number of weak references by 1. </div></div> <div class="ttc" id="class_diligent_1_1_i_reference_counters_html_af89f01cc9cd121dad42ca4d85f211f12"><div class="ttname"><a href="class_diligent_1_1_i_reference_counters.html#af89f01cc9cd121dad42ca4d85f211f12">Diligent::IReferenceCounters::GetNumStrongRefs</a></div><div class="ttdeci">virtual CounterValueType GetNumStrongRefs() const =0</div><div class="ttdoc">Returns the number of outstanding strong references. </div></div> <div class="ttc" id="class_diligent_1_1_i_reference_counters_html_a045d57bcd6df0409da96c46eec61e4fa"><div class="ttname"><a href="class_diligent_1_1_i_reference_counters.html#a045d57bcd6df0409da96c46eec61e4fa">Diligent::IReferenceCounters::ReleaseWeakRef</a></div><div class="ttdeci">virtual CounterValueType ReleaseWeakRef()=0</div><div class="ttdoc">Decrements the number of weak references by 1. If there are no more strong and weak references...</div></div> diff --git a/doc/html/_render_device_8h_source.html b/doc/html/_render_device_8h_source.html index 1b724733..cdbf6553 100644 --- a/doc/html/_render_device_8h_source.html +++ b/doc/html/_render_device_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RenderDevice.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DeviceCaps.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Constants.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "InputLayout.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "DepthStencilState.h"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "RasterizerState.h"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "BlendState.h"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// {F0E9B607-AE33-4B2B-B1AF-A8B2C3104022}</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_RenderDevice =</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> { 0xf0e9b607, 0xae33, 0x4b2b, { 0xb1, 0xaf, 0xa8, 0xb2, 0xc3, 0x10, 0x40, 0x22 } };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_render_device.html"> 55</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#ac029e8f146c543a7fd9acabc13549b27">QueryInterface</a>( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#a638db185ec04614240d7421ec4e77a44">CreateBuffer</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a>& BuffData, </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer) = 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#aded4e45804a8578ba5b202db26e43840">CreateShader</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &CreationAttribs, </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> **ppShader) = 0;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#a2e9e3ef4a01fe9caca6f51617598548a">CreateTexture</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &Data, </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#afbb066b8ac1fbcc47d852537c3f246c7">CreateSampler</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& SamDesc, </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> **ppSampler) = 0;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#a1dbef756cb359af864a1514d583b117d">CreateResourceMapping</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_resource_mapping_desc.html">ResourceMappingDesc</a> &MappingDesc, </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> **ppMapping ) = 0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#a265a34daa7463610a0d8d2dde06a0d8b">CreatePipelineState</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc, </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPipelineState ) = 0;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_device_caps.html">DeviceCaps</a>& <a class="code" href="class_diligent_1_1_i_render_device.html#a9ec6a527f7fca1e86c53f1b90e847ae2">GetDeviceCaps</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_format_info.html">TextureFormatInfo</a> &<a class="code" href="class_diligent_1_1_i_render_device.html#ac7af1044d7f648a2483a9d0d0b497eec">GetTextureFormatInfo</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat ) = 0;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html">TextureFormatInfoExt</a> &<a class="code" href="class_diligent_1_1_i_render_device.html#a279386f22ed18238af8625d7b17f9efc">GetTextureFormatInfoExt</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat ) = 0;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> };</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DeviceCaps.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Constants.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "InputLayout.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "BufferView.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "PipelineState.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include "DepthStencilState.h"</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "RasterizerState.h"</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "BlendState.h"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// {F0E9B607-AE33-4B2B-B1AF-A8B2C3104022}</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_RenderDevice =</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> { 0xf0e9b607, 0xae33, 0x4b2b, { 0xb1, 0xaf, 0xa8, 0xb2, 0xc3, 0x10, 0x40, 0x22 } };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_render_device.html"> 55</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#ac029e8f146c543a7fd9acabc13549b27">QueryInterface</a>( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#a638db185ec04614240d7421ec4e77a44">CreateBuffer</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a>& BuffData, </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer) = 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#aded4e45804a8578ba5b202db26e43840">CreateShader</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &CreationAttribs, </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> **ppShader) = 0;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#a2e9e3ef4a01fe9caca6f51617598548a">CreateTexture</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &Data, </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#afbb066b8ac1fbcc47d852537c3f246c7">CreateSampler</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& SamDesc, </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> **ppSampler) = 0;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#a1dbef756cb359af864a1514d583b117d">CreateResourceMapping</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_resource_mapping_desc.html">ResourceMappingDesc</a> &MappingDesc, </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> **ppMapping ) = 0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device.html#a265a34daa7463610a0d8d2dde06a0d8b">CreatePipelineState</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc, </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPipelineState ) = 0;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_device_caps.html">DeviceCaps</a>& <a class="code" href="class_diligent_1_1_i_render_device.html#a9ec6a527f7fca1e86c53f1b90e847ae2">GetDeviceCaps</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_format_info.html">TextureFormatInfo</a> &<a class="code" href="class_diligent_1_1_i_render_device.html#ac7af1044d7f648a2483a9d0d0b497eec">GetTextureFormatInfo</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat ) = 0;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html">TextureFormatInfoExt</a> &<a class="code" href="class_diligent_1_1_i_render_device.html#a279386f22ed18238af8625d7b17f9efc">GetTextureFormatInfoExt</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat ) = 0;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> };</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html_ac7af1044d7f648a2483a9d0d0b497eec"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html#ac7af1044d7f648a2483a9d0d0b497eec">Diligent::IRenderDevice::GetTextureFormatInfo</a></div><div class="ttdeci">virtual const TextureFormatInfo & GetTextureFormatInfo(TEXTURE_FORMAT TexFormat)=0</div><div class="ttdoc">Returns the basic texture format information. </div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> @@ -104,7 +104,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_base_8h_source.html b/doc/html/_render_device_base_8h_source.html index 5b3c5d7d..dc09bd83 100644 --- a/doc/html/_render_device_base_8h_source.html +++ b/doc/html/_render_device_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RenderDeviceBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Defines.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ResourceMappingImpl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "StateObjectsRegistry.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "FixedBlockMemoryAllocator.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "EngineMemory.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_sampler_desc_01_4.html"> 47</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::SamplerDesc></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">Diligent::SamplerDesc</a> &SamDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// Sampler name is ignored in comparison operator</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// and should not be hashed</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( <span class="comment">// SamDesc.Name,</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107">MinFilter</a>),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd">MagFilter</a>),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce">MipFilter</a>),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24">AddressU</a>),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89">AddressV</a>),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2">AddressW</a>),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696">MipLODBias</a>,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025">MaxAnisotropy</a>,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48">ComparisonFunc</a>),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[0], </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[1], </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[2], </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[3],</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61">MinLOD</a>, SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">MaxLOD</a> );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  };</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_stencil_op_desc_01_4.html"> 73</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::StencilOpDesc></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html">Diligent::StencilOpDesc</a> &StOpDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( static_cast<int>( StOpDesc.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad">StencilFailOp</a> ),</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  static_cast<int>( StOpDesc.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1">StencilDepthFailOp</a> ),</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  static_cast<int>( StOpDesc.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">StencilPassOp</a> ),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  static_cast<int>( StOpDesc.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">StencilFunc</a> ) );</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  };</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_depth_stencil_state_desc_01_4.html"> 86</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::DepthStencilStateDesc></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html">Diligent::DepthStencilStateDesc</a> &DepthStencilDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b">DepthEnable</a>,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79">DepthWriteEnable</a>,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  static_cast<int>(DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851">DepthFunc</a>),</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b">StencilEnable</a>,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025">StencilReadMask</a>,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086">StencilWriteMask</a>,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a59ced16fe3f430d8ac8e68bf95803c2d">FrontFace</a>,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#ab70d10ee856e265058df2777461aa4bb">BackFace</a> );</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  };</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_rasterizer_state_desc_01_4.html"> 103</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::RasterizerStateDesc></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html">Diligent::RasterizerStateDesc</a> &RasterizerDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( static_cast<int>( RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969">FillMode</a> ),</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  static_cast<int>( RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842">CullMode</a> ),</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0">FrontCounterClockwise</a>,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">DepthBias</a>,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef">DepthBiasClamp</a>,</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86">SlopeScaledDepthBias</a>,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64">DepthClipEnable</a>,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8">ScissorEnable</a>,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94">AntialiasedLineEnable</a> );</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_blend_state_desc_01_4.html"> 121</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::BlendStateDesc></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_blend_state_desc.html">Diligent::BlendStateDesc</a> &BSDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  std::size_t Seed = 0;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < <a class="code" href="struct_diligent_1_1_blend_state_desc.html#a7668a548a9b1760370514670791b0fb0">Diligent::BlendStateDesc::MaxRenderTargets</a>; ++i )</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& rt = BSDesc.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#aae5a5ae252633121a1499db0d6d67462">RenderTargets</a>[i];</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  Diligent::HashCombine( Seed, </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  rt.BlendEnable,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  static_cast<int>( rt.SrcBlend ),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  static_cast<int>( rt.DestBlend ),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  static_cast<int>( rt.BlendOp ),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  static_cast<int>( rt.SrcBlendAlpha ),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  static_cast<int>( rt.DestBlendAlpha ),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  static_cast<int>( rt.BlendOpAlpha ),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  rt.RenderTargetWriteMask );</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  Diligent::HashCombine( Seed,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  BSDesc.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d">AlphaToCoverageEnable</a>,</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  BSDesc.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed">IndependentBlendEnable</a> );</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> Seed;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  };</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_texture_view_desc_01_4.html"> 149</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::TextureViewDesc></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">Diligent::TextureViewDesc</a> &TexViewDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  std::size_t Seed = 0;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  Diligent::HashCombine( Seed,</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  static_cast<Diligent::Int32>(TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a>),</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  static_cast<Diligent::Int32>(TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">TextureDim</a>),</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  static_cast<Diligent::Int32>(TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31">Format</a>),</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f">MostDetailedMip</a>,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74">NumMipLevels</a>,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf">FirstArraySlice</a>,</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739">NumArraySlices</a>,</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a> );</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> Seed;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keyword">class </span>RenderDeviceBase : <span class="keyword">public</span> ObjectBase<BaseInterface></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keyword">typedef</span> ObjectBase<BaseInterface> TObjectBase;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a46bea5d1917e42d5d4785ae45d642106"> 200</a></span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a46bea5d1917e42d5d4785ae45d642106">RenderDeviceBase</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  IMemoryAllocator &RawMemAllocator, </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  Uint32 NumDeferredContexts,</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordtype">size_t</span> TextureObjSize, </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordtype">size_t</span> TexViewObjSize,</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordtype">size_t</span> BufferObjSize, </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">size_t</span> BuffViewObjSize,</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordtype">size_t</span> ShaderObjSize, </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordtype">size_t</span> SamplerObjSize,</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">size_t</span> PSOSize,</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordtype">size_t</span> SRBSize) :</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>(pRefCounters),</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  m_TextureFormatsInfo( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a>, <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html">TextureFormatInfoExt</a>(), STD_ALLOCATOR_RAW_MEM(<a class="code" href="struct_diligent_1_1_texture_format_info_ext.html">TextureFormatInfoExt</a>, RawMemAllocator, <span class="stringliteral">"Allocator for vector<TextureFormatInfoExt>"</span>) ),</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  m_TexFmtInfoInitFlags( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a>, false, STD_ALLOCATOR_RAW_MEM(bool, RawMemAllocator, <span class="stringliteral">"Allocator for vector<bool>"</span>) ),</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>(NumDeferredContexts, <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a><<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a>>(), STD_ALLOCATOR_RAW_MEM(<a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a><<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a>>, RawMemAllocator, <span class="stringliteral">"Allocator for vector< RefCntWeakPtr<IDeviceContext> >"</span>)),</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a155f91be8d4e8edd610666ddc29021d1">m_SamplersRegistry</a>(RawMemAllocator, <span class="stringliteral">"sampler"</span>),</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#ac566200959ccaa4418651d7700f9d8be">m_TexObjAllocator</a>(RawMemAllocator, TextureObjSize, 64),</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a1729f5bc9dc7c8588e8ddb3f54524330">m_TexViewObjAllocator</a>(RawMemAllocator, TexViewObjSize, 64),</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#aceae2d24ad475dd41b74ef5acc3e33b0">m_BufObjAllocator</a>(RawMemAllocator, BufferObjSize, 128),</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a19aa05fcdd0288f4b4e5f4af578e7d77">m_BuffViewObjAllocator</a>(RawMemAllocator, BuffViewObjSize, 128),</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a9f24bf3592175584c001454c1650e6d2">m_ShaderObjAllocator</a>(RawMemAllocator, ShaderObjSize, 32),</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a21ecf62f9ad329322a2e29c327e22ca9">m_SamplerObjAllocator</a>(RawMemAllocator, SamplerObjSize, 32),</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a9ff23a4259f051a78e2292e7b5ae79c8">m_PSOAllocator</a>(RawMemAllocator, PSOSize, 128),</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a0877e7b3f2412aa9dd86c7ce7b6434ba">m_SRBAllocator</a>(RawMemAllocator, SRBSize, 1024),</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a02eeb28e659e12c5b5db22abd7b69ab0">m_ResMappingAllocator</a>(RawMemAllocator, sizeof(<a class="code" href="class_diligent_1_1_resource_mapping_impl.html">ResourceMappingImpl</a>), 16)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// Initialize texture format info</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">for</span>( Uint32 Fmt = <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>; Fmt < <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a>; ++Fmt )</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  static_cast<TextureFormatAttribs&>(m_TextureFormatsInfo[Fmt]) = GetTextureFormatAttribs( static_cast<TEXTURE_FORMAT>(Fmt) );</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// https://msdn.microsoft.com/en-us/library/windows/desktop/ff471325(v=vs.85).aspx</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> FilterableFormats[] =</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab9d0f625089592e367942df3c4b518f3">TEX_FORMAT_RGBA32_FLOAT</a>, <span class="comment">// OpenGL ES3.1 does not require this format to be filterable</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adaa6d237efff5ee2324c3eb3c823e896">TEX_FORMAT_RGBA16_FLOAT</a>,</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1efb4f2505cd9631e84e5fb18c6af583">TEX_FORMAT_RGBA16_UNORM</a>,</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a71b0ad28b1acc91bc51c7313d981d116">TEX_FORMAT_RGBA16_SNORM</a>,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aeea76393266977ffa2e7a8b252107133">TEX_FORMAT_RG32_FLOAT</a>, <span class="comment">// OpenGL ES3.1 does not require this format to be filterable</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a63e2520343d2091c58583e3738a3cd58">TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS</a>,</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">//TEX_FORMAT_R10G10B10A2_UNORM,</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aed9cce1141988f5e228dda57c87b9936">TEX_FORMAT_R11G11B10_FLOAT</a>,</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0bdd5c2150977a0d9092831c1f45e61b">TEX_FORMAT_RGBA8_UNORM</a>,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a86a2e99aecff070023e1dd0331fb9a95">TEX_FORMAT_RGBA8_UNORM_SRGB</a>,</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee7096ae28505b3d8a5a3b35dd6a6137">TEX_FORMAT_RGBA8_SNORM</a>,</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa8f7fb1f77bcd0288186783edbdbfe6b">TEX_FORMAT_RG16_FLOAT</a>,</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a05de082cc29f4eb0a142ef09eb7063a8">TEX_FORMAT_RG16_UNORM</a>,</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7f9b08e92d01fa0d05415a50949f7988">TEX_FORMAT_RG16_SNORM</a>,</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0a5ec081ba06f50f1876d712c95fbbb2">TEX_FORMAT_R32_FLOAT</a>, <span class="comment">// OpenGL ES3.1 does not require this format to be filterable</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1bd8929331aee85bc24a61e239a65329">TEX_FORMAT_R24_UNORM_X8_TYPELESS</a>,</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aae3fd0b0cf035ee8baaedd0af7d4bf1a">TEX_FORMAT_RG8_UNORM</a>,</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a981eca1860bc430747e5f2107c3668d4">TEX_FORMAT_RG8_SNORM</a>,</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a57374ece9cb48fbd4f0f7a834b565462">TEX_FORMAT_R16_FLOAT</a>,</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a29829600ff7adcb7a1f3b0b46ed1a840">TEX_FORMAT_R16_UNORM</a>,</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0611b4b06d9f2395dc9cb22352f3e0e0">TEX_FORMAT_R16_SNORM</a>,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a21e4a0387472fc3ae5f4c7cc1ba853b7">TEX_FORMAT_R8_UNORM</a>,</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7340ccaf1e5bb4da97f53f9dc9cdaede">TEX_FORMAT_R8_SNORM</a>,</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3723820d4d3828dfd2f9262a7dba6708">TEX_FORMAT_A8_UNORM</a>,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9a560e8e14a941193b18ea3c751da263">TEX_FORMAT_RGB9E5_SHAREDEXP</a>,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaa5dfc47c51837ad649fac6f00655841">TEX_FORMAT_RG8_B8G8_UNORM</a>,</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a870215407929c7531a71e7332024e388">TEX_FORMAT_G8R8_G8B8_UNORM</a>,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab63331cd7ecf61190c25545324ea2ed7">TEX_FORMAT_BC1_UNORM</a>,</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4ebd6ca8bd89786ce5397f0305bbc6e">TEX_FORMAT_BC1_UNORM_SRGB</a>,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8cc3fcce89d2803794684ef3836da91b">TEX_FORMAT_BC2_UNORM</a>,</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4c8df626ee847c0edc91e3f4074723e">TEX_FORMAT_BC2_UNORM_SRGB</a>,</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac9d4bc97bbff4a3e369989e5f092c1fc">TEX_FORMAT_BC3_UNORM</a>,</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee1add9082d7de6c1b9a4e4dfcd6b32e">TEX_FORMAT_BC3_UNORM_SRGB</a>,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaf7cc360071c3fa26a55da8e9a49c532">TEX_FORMAT_BC4_UNORM</a>,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a72f458a370b3931c2a499a834f9a07ad">TEX_FORMAT_BC4_SNORM</a>,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af220720a273822e42215f64da22a39c2">TEX_FORMAT_BC5_UNORM</a>,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0d3d63ade03dc83ba8e00f54eda5034e">TEX_FORMAT_BC5_SNORM</a>,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adf11b47f6d9a00acdef8a6365627e236">TEX_FORMAT_B5G6R5_UNORM</a></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  };</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">for</span>( Uint32 fmt = 0; fmt < _countof(FilterableFormats); ++fmt )</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  m_TextureFormatsInfo[ FilterableFormats[fmt] ].Filterable = <span class="keyword">true</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  ~<a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase</a>()</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_RenderDevice, ObjectBase<BaseInterface> )</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a111f8a099da34511c7b7084b3e215d16">CreateResourceMapping</a>( <span class="keyword">const</span> ResourceMappingDesc &MappingDesc, IResourceMapping **ppMapping )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  </div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a548efca4d6b74dae066d592a193a1169"> 286</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_device_caps.html">DeviceCaps</a>& <a class="code" href="class_diligent_1_1_render_device_base.html#a548efca4d6b74dae066d592a193a1169">GetDeviceCaps</a>()const override final</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">return</span> m_DeviceCaps;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a3011f3972126101a2845cf1f05444d1e"> 292</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_format_info.html">TextureFormatInfo</a> &<a class="code" href="class_diligent_1_1_render_device_base.html#a3011f3972126101a2845cf1f05444d1e">GetTextureFormatInfo</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  VERIFY( TexFormat >= <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a> && TexFormat < <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a>, <span class="stringliteral">"Texture format out of range"</span> );</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& TexFmtInfo = m_TextureFormatsInfo[TexFormat];</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  VERIFY( TexFmtInfo.Format == TexFormat, <span class="stringliteral">"Sanity check failed"</span> );</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> TexFmtInfo;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a80112a1f01f47870ab1bd06e918ec753"> 301</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html">TextureFormatInfoExt</a> &<a class="code" href="class_diligent_1_1_render_device_base.html#a80112a1f01f47870ab1bd06e918ec753">GetTextureFormatInfoExt</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  VERIFY( TexFormat >= <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a> && TexFormat < <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a>, <span class="stringliteral">"Texture format out of range"</span> );</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& TexFmtInfo = m_TextureFormatsInfo[TexFormat];</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  VERIFY( TexFmtInfo.Format == TexFormat, <span class="stringliteral">"Sanity check failed"</span> );</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span>( !m_TexFmtInfoInitFlags[TexFormat] )</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span>( TexFmtInfo.Supported )</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  TestTextureFormat(TexFormat);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  m_TexFmtInfoInitFlags[TexFormat] = <span class="keyword">true</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">return</span> TexFmtInfo;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordtype">void</span> OnCreateDeviceObject( <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pNewObject )</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  StateObjectsRegistry<SamplerDesc> &GetSamplerRegistry(){ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a155f91be8d4e8edd610666ddc29021d1">m_SamplersRegistry</a>; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  </div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a4d5dfb51973e8b0331d3c56edacd0664"> 322</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a4d5dfb51973e8b0331d3c56edacd0664">SetImmediateContext</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pImmediateContext)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  VERIFY( <a class="code" href="class_diligent_1_1_render_device_base.html#a141fe3acb5d2f5ff799c315e79b99eb8">m_wpImmediateContext</a>.Lock() == <span class="keyword">nullptr</span>, <span class="stringliteral">"Immediate context has already been set"</span> );</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a141fe3acb5d2f5ff799c315e79b99eb8">m_wpImmediateContext</a> = pImmediateContext;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a12b47e7024812aa0a444610c4902a3a5"> 329</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a12b47e7024812aa0a444610c4902a3a5">SetDeferredContext</a>(<span class="keywordtype">size_t</span> Ctx, <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pDeferredCtx)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  VERIFY( <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>[Ctx].Lock() == <span class="keyword">nullptr</span>, <span class="stringliteral">"Deferred context has already been set"</span> );</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>[Ctx] = pDeferredCtx;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a71bf62b6b4fd94cdaa457c1bedc70958"> 336</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a71bf62b6b4fd94cdaa457c1bedc70958">GetNumDeferredContexts</a>()<span class="keyword">const</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>.size();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IDeviceContext></a> GetImmediateContext(){ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a141fe3acb5d2f5ff799c315e79b99eb8">m_wpImmediateContext</a>.Lock(); }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  RefCntAutoPtr<IDeviceContext> GetDeferredContext(<span class="keywordtype">size_t</span> Ctx){ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>[Ctx].Lock(); }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  FixedBlockMemoryAllocator& GetTexViewObjAllocator(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a1729f5bc9dc7c8588e8ddb3f54524330">m_TexViewObjAllocator</a>;}</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  FixedBlockMemoryAllocator& GetBuffViewObjAllocator(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a19aa05fcdd0288f4b4e5f4af578e7d77">m_BuffViewObjAllocator</a>;}</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  FixedBlockMemoryAllocator& GetSRBAllocator(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a0877e7b3f2412aa9dd86c7ce7b6434ba">m_SRBAllocator</a>;}</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> TestTextureFormat(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat) = 0;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TObjectType, <span class="keyword">typename</span> TObjectDescType, <span class="keyword">typename</span> TObjectConstructor></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a53a856542184d8a6c323af97a95979f4">CreateDeviceObject</a>( <span class="keyword">const</span> Char *ObjectTypeName, <span class="keyword">const</span> TObjectDescType &Desc, TObjectType **ppObject, TObjectConstructor ConstructObject );</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  DeviceCaps m_DeviceCaps;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="comment">// All state object registries hold raw pointers.</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="comment">// This is safe because every object unregisters itself</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="comment">// when it is deleted.</span></div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a155f91be8d4e8edd610666ddc29021d1"> 361</a></span>  <a class="code" href="class_diligent_1_1_state_objects_registry.html">StateObjectsRegistry<SamplerDesc></a> <a class="code" href="class_diligent_1_1_render_device_base.html#a155f91be8d4e8edd610666ddc29021d1">m_SamplersRegistry</a>; </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  std::vector<TextureFormatInfoExt, STDAllocatorRawMem<TextureFormatInfoExt> > m_TextureFormatsInfo;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  std::vector<bool, STDAllocatorRawMem<bool> > m_TexFmtInfoInitFlags;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a141fe3acb5d2f5ff799c315e79b99eb8"> 367</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr<IDeviceContext></a> <a class="code" href="class_diligent_1_1_render_device_base.html#a141fe3acb5d2f5ff799c315e79b99eb8">m_wpImmediateContext</a>;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068"> 370</a></span>  std::vector< RefCntWeakPtr<IDeviceContext>, STDAllocatorRawMem<RefCntWeakPtr<IDeviceContext> > > <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#ac566200959ccaa4418651d7700f9d8be"> 372</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#ac566200959ccaa4418651d7700f9d8be">m_TexObjAllocator</a>; </div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a1729f5bc9dc7c8588e8ddb3f54524330"> 373</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a1729f5bc9dc7c8588e8ddb3f54524330">m_TexViewObjAllocator</a>; </div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#aceae2d24ad475dd41b74ef5acc3e33b0"> 374</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#aceae2d24ad475dd41b74ef5acc3e33b0">m_BufObjAllocator</a>; </div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a19aa05fcdd0288f4b4e5f4af578e7d77"> 375</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a19aa05fcdd0288f4b4e5f4af578e7d77">m_BuffViewObjAllocator</a>; </div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a9f24bf3592175584c001454c1650e6d2"> 376</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a9f24bf3592175584c001454c1650e6d2">m_ShaderObjAllocator</a>; </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a21ecf62f9ad329322a2e29c327e22ca9"> 377</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a21ecf62f9ad329322a2e29c327e22ca9">m_SamplerObjAllocator</a>; </div><div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a9ff23a4259f051a78e2292e7b5ae79c8"> 378</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a9ff23a4259f051a78e2292e7b5ae79c8">m_PSOAllocator</a>; </div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a0877e7b3f2412aa9dd86c7ce7b6434ba"> 379</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a0877e7b3f2412aa9dd86c7ce7b6434ba">m_SRBAllocator</a>; </div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a02eeb28e659e12c5b5db22abd7b69ab0"> 380</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a02eeb28e659e12c5b5db22abd7b69ab0">m_ResMappingAllocator</a>; </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> };</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a111f8a099da34511c7b7084b3e215d16"> 385</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a111f8a099da34511c7b7084b3e215d16">RenderDeviceBase<BaseInterface>::CreateResourceMapping</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_resource_mapping_desc.html">ResourceMappingDesc</a> &MappingDesc, <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> **ppMapping )</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  VERIFY( ppMapping != <span class="keyword">nullptr</span>, <span class="stringliteral">"Null pointer provided"</span> );</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">if</span>( ppMapping == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  VERIFY( *ppMapping == <span class="keyword">nullptr</span>, <span class="stringliteral">"Overwriting reference to existing object may cause memory leaks"</span> );</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">auto</span> *pResourceMapping( NEW_RC_OBJ(m_ResMappingAllocator, <span class="stringliteral">"ResourceMappingImpl instance"</span>, <a class="code" href="class_diligent_1_1_resource_mapping_impl.html">ResourceMappingImpl</a>)(<a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>()) );</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  pResourceMapping->QueryInterface( IID_ResourceMapping, reinterpret_cast<IObject**>(ppMapping) );</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span>( MappingDesc.<a class="code" href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8">pEntries</a> )</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">for</span>( <span class="keyword">auto</span> *pEntry = MappingDesc.<a class="code" href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8">pEntries</a>; pEntry-><a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a62f99ae784081dd78b7a3336c3e3662d">Name</a> && pEntry->pObject; ++pEntry )</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  (*ppMapping)->AddResourceArray( pEntry->Name, pEntry->ArrayIndex, &pEntry->pObject, 1, <span class="keyword">true</span> );</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="keyword">template</span><<span class="keyword">typename</span> TObjectType, <span class="keyword">typename</span> TObjectDescType, <span class="keyword">typename</span> TObjectConstructor></div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a53a856542184d8a6c323af97a95979f4"> 413</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a53a856542184d8a6c323af97a95979f4">RenderDeviceBase<BaseInterface> :: CreateDeviceObject</a>( <span class="keyword">const</span> Char *ObjectTypeName, <span class="keyword">const</span> TObjectDescType &Desc, TObjectType **ppObject, TObjectConstructor ConstructObject )</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  VERIFY( ppObject != <span class="keyword">nullptr</span>, <span class="stringliteral">"Null pointer provided"</span> );</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">if</span>(!ppObject)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  VERIFY( *ppObject == <span class="keyword">nullptr</span>, <span class="stringliteral">"Overwriting reference to existing object may cause memory leaks"</span> );</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// Do not release *ppObject here!</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="comment">// Should this happen, RefCntAutoPtr<> will take care of this!</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">//if( *ppObject )</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="comment">//{</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="comment">// (*ppObject)->Release();</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// *ppObject = nullptr;</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">//}</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  *ppObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  ConstructObject();</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">catch</span>( <span class="keyword">const</span> std::runtime_error & )</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  VERIFY( *ppObject == <span class="keyword">nullptr</span>, <span class="stringliteral">"Object was created despite error"</span> );</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">if</span>( *ppObject )</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  (*ppObject)->Release();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  *ppObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keyword">auto</span> ObjectDescString = GetObjectDescString( Desc );</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">if</span>( ObjectDescString.length() )</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  LOG_ERROR( <span class="stringliteral">"Failed to create "</span>, ObjectTypeName, <span class="stringliteral">" object \""</span>, Desc.Name ? Desc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\"\n"</span>, ObjectDescString );</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  LOG_ERROR( <span class="stringliteral">"Failed to create "</span>, ObjectTypeName, <span class="stringliteral">" object \""</span>, Desc.Name ? Desc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\""</span> );</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> }</div><div class="ttc" id="struct_diligent_1_1_stencil_op_desc_html_abb9e31d08669cafb05cb4e3b9f600785"><div class="ttname"><a href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">Diligent::StencilOpDesc::StencilPassOp</a></div><div class="ttdeci">STENCIL_OP StencilPassOp</div><div class="ttdoc">The stencil operation to perform when stencil testing and depth testing both pass. </div><div class="ttdef"><b>Definition:</b> DepthStencilState.h:101</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Defines.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ResourceMappingImpl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "StateObjectsRegistry.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "FixedBlockMemoryAllocator.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "EngineMemory.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_sampler_desc_01_4.html"> 47</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::SamplerDesc></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">Diligent::SamplerDesc</a> &SamDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// Sampler name is ignored in comparison operator</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// and should not be hashed</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( <span class="comment">// SamDesc.Name,</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107">MinFilter</a>),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd">MagFilter</a>),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce">MipFilter</a>),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24">AddressU</a>),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89">AddressV</a>),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2">AddressW</a>),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696">MipLODBias</a>,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025">MaxAnisotropy</a>,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  static_cast<int>(SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48">ComparisonFunc</a>),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[0], </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[1], </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[2], </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[3],</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61">MinLOD</a>, SamDesc.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">MaxLOD</a> );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  };</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_stencil_op_desc_01_4.html"> 73</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::StencilOpDesc></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_stencil_op_desc.html">Diligent::StencilOpDesc</a> &StOpDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( static_cast<int>( StOpDesc.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#aa672789b4d459a4480baf3666c6945ad">StencilFailOp</a> ),</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  static_cast<int>( StOpDesc.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a2e31ce16cfd5145b2e5578485e73d0f1">StencilDepthFailOp</a> ),</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  static_cast<int>( StOpDesc.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">StencilPassOp</a> ),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  static_cast<int>( StOpDesc.<a class="code" href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">StencilFunc</a> ) );</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  };</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_depth_stencil_state_desc_01_4.html"> 86</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::DepthStencilStateDesc></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html">Diligent::DepthStencilStateDesc</a> &DepthStencilDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a72944ae920f64ba522b48146082c7d2b">DepthEnable</a>,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a5b31340d85ad2c0652711a576c0aeb79">DepthWriteEnable</a>,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  static_cast<int>(DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a0a0d8bde935fe7b2224f69bbfaf7f851">DepthFunc</a>),</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a2350d1fe94693a9bf175a578a22a8f1b">StencilEnable</a>,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#acd5d4a05f83025dd3032e21f57e35025">StencilReadMask</a>,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a6b737a835a94f4ee667ba7b8bf53e086">StencilWriteMask</a>,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#a59ced16fe3f430d8ac8e68bf95803c2d">FrontFace</a>,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  DepthStencilDesc.<a class="code" href="struct_diligent_1_1_depth_stencil_state_desc.html#ab70d10ee856e265058df2777461aa4bb">BackFace</a> );</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  };</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_rasterizer_state_desc_01_4.html"> 103</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::RasterizerStateDesc></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html">Diligent::RasterizerStateDesc</a> &RasterizerDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> Diligent::ComputeHash( static_cast<int>( RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2740be4e85fa65f0f90c4fc19fee1969">FillMode</a> ),</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  static_cast<int>( RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5c331b6d0f4f320e6f088af64da6b842">CullMode</a> ),</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a5d147341937d4edb0e68e267655b56b0">FrontCounterClockwise</a>,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a9f02e69f65dcaca4eca62f6d3838b87a">DepthBias</a>,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a2165764320d1a1aa270b966effd248ef">DepthBiasClamp</a>,</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a140c14fa1af075cf3be5c1577bccdd86">SlopeScaledDepthBias</a>,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#ae8d2a89cac03a783c142bbab59f04d64">DepthClipEnable</a>,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a71fed776ed7bfda220fdc4fb1632f3f8">ScissorEnable</a>,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  RasterizerDesc.<a class="code" href="struct_diligent_1_1_rasterizer_state_desc.html#a7bdd03035417c3acb242cd7ffc7f7d94">AntialiasedLineEnable</a> );</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_blend_state_desc_01_4.html"> 121</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::BlendStateDesc></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_blend_state_desc.html">Diligent::BlendStateDesc</a> &BSDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  std::size_t Seed = 0;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < <a class="code" href="struct_diligent_1_1_blend_state_desc.html#a7668a548a9b1760370514670791b0fb0">Diligent::BlendStateDesc::MaxRenderTargets</a>; ++i )</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& rt = BSDesc.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#aae5a5ae252633121a1499db0d6d67462">RenderTargets</a>[i];</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  Diligent::HashCombine( Seed, </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  rt.BlendEnable,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  static_cast<int>( rt.SrcBlend ),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  static_cast<int>( rt.DestBlend ),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  static_cast<int>( rt.BlendOp ),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  static_cast<int>( rt.SrcBlendAlpha ),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  static_cast<int>( rt.DestBlendAlpha ),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  static_cast<int>( rt.BlendOpAlpha ),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  rt.RenderTargetWriteMask );</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  Diligent::HashCombine( Seed,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  BSDesc.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#aefb15b0d100654533607e1b12bc7397d">AlphaToCoverageEnable</a>,</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  BSDesc.<a class="code" href="struct_diligent_1_1_blend_state_desc.html#ad54bf97f739f0f2e362073f90e6d91ed">IndependentBlendEnable</a> );</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> Seed;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  };</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_diligent_1_1_texture_view_desc_01_4.html"> 149</a></span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::TextureViewDesc></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">Diligent::TextureViewDesc</a> &TexViewDesc )<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  std::size_t Seed = 0;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  Diligent::HashCombine( Seed,</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  static_cast<Diligent::Int32>(TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a>),</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  static_cast<Diligent::Int32>(TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">TextureDim</a>),</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  static_cast<Diligent::Int32>(TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31">Format</a>),</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f">MostDetailedMip</a>,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74">NumMipLevels</a>,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf">FirstArraySlice</a>,</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739">NumArraySlices</a>,</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  TexViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a> );</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> Seed;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keyword">class </span>RenderDeviceBase : <span class="keyword">public</span> ObjectBase<BaseInterface></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keyword">typedef</span> ObjectBase<BaseInterface> TObjectBase;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a46bea5d1917e42d5d4785ae45d642106"> 200</a></span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a46bea5d1917e42d5d4785ae45d642106">RenderDeviceBase</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  IMemoryAllocator &RawMemAllocator, </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  Uint32 NumDeferredContexts,</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordtype">size_t</span> TextureObjSize, </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordtype">size_t</span> TexViewObjSize,</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordtype">size_t</span> BufferObjSize, </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">size_t</span> BuffViewObjSize,</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordtype">size_t</span> ShaderObjSize, </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordtype">size_t</span> SamplerObjSize,</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">size_t</span> PSOSize,</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordtype">size_t</span> SRBSize) :</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>(pRefCounters),</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  m_TextureFormatsInfo( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a>, <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html">TextureFormatInfoExt</a>(), STD_ALLOCATOR_RAW_MEM(<a class="code" href="struct_diligent_1_1_texture_format_info_ext.html">TextureFormatInfoExt</a>, RawMemAllocator, <span class="stringliteral">"Allocator for vector<TextureFormatInfoExt>"</span>) ),</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  m_TexFmtInfoInitFlags( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a>, false, STD_ALLOCATOR_RAW_MEM(bool, RawMemAllocator, <span class="stringliteral">"Allocator for vector<bool>"</span>) ),</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>(NumDeferredContexts, <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a><<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a>>(), STD_ALLOCATOR_RAW_MEM(<a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr</a><<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a>>, RawMemAllocator, <span class="stringliteral">"Allocator for vector< RefCntWeakPtr<IDeviceContext> >"</span>)),</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a155f91be8d4e8edd610666ddc29021d1">m_SamplersRegistry</a>(RawMemAllocator, <span class="stringliteral">"sampler"</span>),</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#ac566200959ccaa4418651d7700f9d8be">m_TexObjAllocator</a>(RawMemAllocator, TextureObjSize, 64),</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a1729f5bc9dc7c8588e8ddb3f54524330">m_TexViewObjAllocator</a>(RawMemAllocator, TexViewObjSize, 64),</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#aceae2d24ad475dd41b74ef5acc3e33b0">m_BufObjAllocator</a>(RawMemAllocator, BufferObjSize, 128),</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a19aa05fcdd0288f4b4e5f4af578e7d77">m_BuffViewObjAllocator</a>(RawMemAllocator, BuffViewObjSize, 128),</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a9f24bf3592175584c001454c1650e6d2">m_ShaderObjAllocator</a>(RawMemAllocator, ShaderObjSize, 32),</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a21ecf62f9ad329322a2e29c327e22ca9">m_SamplerObjAllocator</a>(RawMemAllocator, SamplerObjSize, 32),</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a9ff23a4259f051a78e2292e7b5ae79c8">m_PSOAllocator</a>(RawMemAllocator, PSOSize, 128),</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a0877e7b3f2412aa9dd86c7ce7b6434ba">m_SRBAllocator</a>(RawMemAllocator, SRBSize, 1024),</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a02eeb28e659e12c5b5db22abd7b69ab0">m_ResMappingAllocator</a>(RawMemAllocator, sizeof(<a class="code" href="class_diligent_1_1_resource_mapping_impl.html">ResourceMappingImpl</a>), 16)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// Initialize texture format info</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">for</span>( Uint32 Fmt = <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>; Fmt < <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a>; ++Fmt )</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  static_cast<TextureFormatAttribs&>(m_TextureFormatsInfo[Fmt]) = GetTextureFormatAttribs( static_cast<TEXTURE_FORMAT>(Fmt) );</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// https://msdn.microsoft.com/en-us/library/windows/desktop/ff471325(v=vs.85).aspx</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> FilterableFormats[] =</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab9d0f625089592e367942df3c4b518f3">TEX_FORMAT_RGBA32_FLOAT</a>, <span class="comment">// OpenGL ES3.1 does not require this format to be filterable</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adaa6d237efff5ee2324c3eb3c823e896">TEX_FORMAT_RGBA16_FLOAT</a>,</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1efb4f2505cd9631e84e5fb18c6af583">TEX_FORMAT_RGBA16_UNORM</a>,</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a71b0ad28b1acc91bc51c7313d981d116">TEX_FORMAT_RGBA16_SNORM</a>,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aeea76393266977ffa2e7a8b252107133">TEX_FORMAT_RG32_FLOAT</a>, <span class="comment">// OpenGL ES3.1 does not require this format to be filterable</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a63e2520343d2091c58583e3738a3cd58">TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS</a>,</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">//TEX_FORMAT_R10G10B10A2_UNORM,</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aed9cce1141988f5e228dda57c87b9936">TEX_FORMAT_R11G11B10_FLOAT</a>,</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0bdd5c2150977a0d9092831c1f45e61b">TEX_FORMAT_RGBA8_UNORM</a>,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a86a2e99aecff070023e1dd0331fb9a95">TEX_FORMAT_RGBA8_UNORM_SRGB</a>,</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee7096ae28505b3d8a5a3b35dd6a6137">TEX_FORMAT_RGBA8_SNORM</a>,</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa8f7fb1f77bcd0288186783edbdbfe6b">TEX_FORMAT_RG16_FLOAT</a>,</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a05de082cc29f4eb0a142ef09eb7063a8">TEX_FORMAT_RG16_UNORM</a>,</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7f9b08e92d01fa0d05415a50949f7988">TEX_FORMAT_RG16_SNORM</a>,</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0a5ec081ba06f50f1876d712c95fbbb2">TEX_FORMAT_R32_FLOAT</a>, <span class="comment">// OpenGL ES3.1 does not require this format to be filterable</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1bd8929331aee85bc24a61e239a65329">TEX_FORMAT_R24_UNORM_X8_TYPELESS</a>,</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aae3fd0b0cf035ee8baaedd0af7d4bf1a">TEX_FORMAT_RG8_UNORM</a>,</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a981eca1860bc430747e5f2107c3668d4">TEX_FORMAT_RG8_SNORM</a>,</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a57374ece9cb48fbd4f0f7a834b565462">TEX_FORMAT_R16_FLOAT</a>,</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a29829600ff7adcb7a1f3b0b46ed1a840">TEX_FORMAT_R16_UNORM</a>,</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0611b4b06d9f2395dc9cb22352f3e0e0">TEX_FORMAT_R16_SNORM</a>,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a21e4a0387472fc3ae5f4c7cc1ba853b7">TEX_FORMAT_R8_UNORM</a>,</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7340ccaf1e5bb4da97f53f9dc9cdaede">TEX_FORMAT_R8_SNORM</a>,</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3723820d4d3828dfd2f9262a7dba6708">TEX_FORMAT_A8_UNORM</a>,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9a560e8e14a941193b18ea3c751da263">TEX_FORMAT_RGB9E5_SHAREDEXP</a>,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaa5dfc47c51837ad649fac6f00655841">TEX_FORMAT_RG8_B8G8_UNORM</a>,</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a870215407929c7531a71e7332024e388">TEX_FORMAT_G8R8_G8B8_UNORM</a>,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab63331cd7ecf61190c25545324ea2ed7">TEX_FORMAT_BC1_UNORM</a>,</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4ebd6ca8bd89786ce5397f0305bbc6e">TEX_FORMAT_BC1_UNORM_SRGB</a>,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8cc3fcce89d2803794684ef3836da91b">TEX_FORMAT_BC2_UNORM</a>,</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4c8df626ee847c0edc91e3f4074723e">TEX_FORMAT_BC2_UNORM_SRGB</a>,</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac9d4bc97bbff4a3e369989e5f092c1fc">TEX_FORMAT_BC3_UNORM</a>,</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee1add9082d7de6c1b9a4e4dfcd6b32e">TEX_FORMAT_BC3_UNORM_SRGB</a>,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaf7cc360071c3fa26a55da8e9a49c532">TEX_FORMAT_BC4_UNORM</a>,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a72f458a370b3931c2a499a834f9a07ad">TEX_FORMAT_BC4_SNORM</a>,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af220720a273822e42215f64da22a39c2">TEX_FORMAT_BC5_UNORM</a>,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0d3d63ade03dc83ba8e00f54eda5034e">TEX_FORMAT_BC5_SNORM</a>,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adf11b47f6d9a00acdef8a6365627e236">TEX_FORMAT_B5G6R5_UNORM</a></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  };</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">for</span>( Uint32 fmt = 0; fmt < _countof(FilterableFormats); ++fmt )</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  m_TextureFormatsInfo[ FilterableFormats[fmt] ].Filterable = <span class="keyword">true</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  ~<a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase</a>()</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_RenderDevice, ObjectBase<BaseInterface> )</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a111f8a099da34511c7b7084b3e215d16">CreateResourceMapping</a>( <span class="keyword">const</span> ResourceMappingDesc &MappingDesc, IResourceMapping **ppMapping )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  </div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a548efca4d6b74dae066d592a193a1169"> 286</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_device_caps.html">DeviceCaps</a>& <a class="code" href="class_diligent_1_1_render_device_base.html#a548efca4d6b74dae066d592a193a1169">GetDeviceCaps</a>()const override final</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">return</span> m_DeviceCaps;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a3011f3972126101a2845cf1f05444d1e"> 292</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_format_info.html">TextureFormatInfo</a> &<a class="code" href="class_diligent_1_1_render_device_base.html#a3011f3972126101a2845cf1f05444d1e">GetTextureFormatInfo</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  VERIFY( TexFormat >= <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a> && TexFormat < <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a>, <span class="stringliteral">"Texture format out of range"</span> );</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& TexFmtInfo = m_TextureFormatsInfo[TexFormat];</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  VERIFY( TexFmtInfo.Format == TexFormat, <span class="stringliteral">"Sanity check failed"</span> );</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> TexFmtInfo;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a80112a1f01f47870ab1bd06e918ec753"> 301</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_format_info_ext.html">TextureFormatInfoExt</a> &<a class="code" href="class_diligent_1_1_render_device_base.html#a80112a1f01f47870ab1bd06e918ec753">GetTextureFormatInfoExt</a>( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  VERIFY( TexFormat >= <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a> && TexFormat < <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3dba41239c7c8a7cd6248c0f06a09a65">TEX_FORMAT_NUM_FORMATS</a>, <span class="stringliteral">"Texture format out of range"</span> );</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& TexFmtInfo = m_TextureFormatsInfo[TexFormat];</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  VERIFY( TexFmtInfo.Format == TexFormat, <span class="stringliteral">"Sanity check failed"</span> );</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span>( !m_TexFmtInfoInitFlags[TexFormat] )</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span>( TexFmtInfo.Supported )</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  TestTextureFormat(TexFormat);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  m_TexFmtInfoInitFlags[TexFormat] = <span class="keyword">true</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">return</span> TexFmtInfo;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordtype">void</span> OnCreateDeviceObject( <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pNewObject )</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  StateObjectsRegistry<SamplerDesc> &GetSamplerRegistry(){ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a155f91be8d4e8edd610666ddc29021d1">m_SamplersRegistry</a>; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  </div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a4d5dfb51973e8b0331d3c56edacd0664"> 322</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a4d5dfb51973e8b0331d3c56edacd0664">SetImmediateContext</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pImmediateContext)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  VERIFY( <a class="code" href="class_diligent_1_1_render_device_base.html#a141fe3acb5d2f5ff799c315e79b99eb8">m_wpImmediateContext</a>.Lock() == <span class="keyword">nullptr</span>, <span class="stringliteral">"Immediate context has already been set"</span> );</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a141fe3acb5d2f5ff799c315e79b99eb8">m_wpImmediateContext</a> = pImmediateContext;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a12b47e7024812aa0a444610c4902a3a5"> 329</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a12b47e7024812aa0a444610c4902a3a5">SetDeferredContext</a>(<span class="keywordtype">size_t</span> Ctx, <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pDeferredCtx)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  VERIFY( <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>[Ctx].Lock() == <span class="keyword">nullptr</span>, <span class="stringliteral">"Deferred context has already been set"</span> );</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>[Ctx] = pDeferredCtx;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a71bf62b6b4fd94cdaa457c1bedc70958"> 336</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a71bf62b6b4fd94cdaa457c1bedc70958">GetNumDeferredContexts</a>()<span class="keyword">const</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>.size();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IDeviceContext></a> GetImmediateContext(){ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a141fe3acb5d2f5ff799c315e79b99eb8">m_wpImmediateContext</a>.Lock(); }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  RefCntAutoPtr<IDeviceContext> GetDeferredContext(<span class="keywordtype">size_t</span> Ctx){ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>[Ctx].Lock(); }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  FixedBlockMemoryAllocator& GetTexViewObjAllocator(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a1729f5bc9dc7c8588e8ddb3f54524330">m_TexViewObjAllocator</a>;}</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  FixedBlockMemoryAllocator& GetBuffViewObjAllocator(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a19aa05fcdd0288f4b4e5f4af578e7d77">m_BuffViewObjAllocator</a>;}</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  FixedBlockMemoryAllocator& GetSRBAllocator(){<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a0877e7b3f2412aa9dd86c7ce7b6434ba">m_SRBAllocator</a>;}</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> TestTextureFormat(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat) = 0;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TObjectType, <span class="keyword">typename</span> TObjectDescType, <span class="keyword">typename</span> TObjectConstructor></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a53a856542184d8a6c323af97a95979f4">CreateDeviceObject</a>( <span class="keyword">const</span> Char *ObjectTypeName, <span class="keyword">const</span> TObjectDescType &Desc, TObjectType **ppObject, TObjectConstructor ConstructObject );</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  DeviceCaps m_DeviceCaps;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="comment">// All state object registries hold raw pointers.</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="comment">// This is safe because every object unregisters itself</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="comment">// when it is deleted.</span></div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a155f91be8d4e8edd610666ddc29021d1"> 361</a></span>  <a class="code" href="class_diligent_1_1_state_objects_registry.html">StateObjectsRegistry<SamplerDesc></a> <a class="code" href="class_diligent_1_1_render_device_base.html#a155f91be8d4e8edd610666ddc29021d1">m_SamplersRegistry</a>; </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  std::vector<TextureFormatInfoExt, STDAllocatorRawMem<TextureFormatInfoExt> > m_TextureFormatsInfo;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  std::vector<bool, STDAllocatorRawMem<bool> > m_TexFmtInfoInitFlags;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a141fe3acb5d2f5ff799c315e79b99eb8"> 367</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr<IDeviceContext></a> <a class="code" href="class_diligent_1_1_render_device_base.html#a141fe3acb5d2f5ff799c315e79b99eb8">m_wpImmediateContext</a>;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068"> 370</a></span>  std::vector< RefCntWeakPtr<IDeviceContext>, STDAllocatorRawMem<RefCntWeakPtr<IDeviceContext> > > <a class="code" href="class_diligent_1_1_render_device_base.html#a0432cc6a912e9f5b87c470873840b068">m_wpDeferredContexts</a>;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#ac566200959ccaa4418651d7700f9d8be"> 372</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#ac566200959ccaa4418651d7700f9d8be">m_TexObjAllocator</a>; </div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a1729f5bc9dc7c8588e8ddb3f54524330"> 373</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a1729f5bc9dc7c8588e8ddb3f54524330">m_TexViewObjAllocator</a>; </div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#aceae2d24ad475dd41b74ef5acc3e33b0"> 374</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#aceae2d24ad475dd41b74ef5acc3e33b0">m_BufObjAllocator</a>; </div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a19aa05fcdd0288f4b4e5f4af578e7d77"> 375</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a19aa05fcdd0288f4b4e5f4af578e7d77">m_BuffViewObjAllocator</a>; </div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a9f24bf3592175584c001454c1650e6d2"> 376</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a9f24bf3592175584c001454c1650e6d2">m_ShaderObjAllocator</a>; </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a21ecf62f9ad329322a2e29c327e22ca9"> 377</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a21ecf62f9ad329322a2e29c327e22ca9">m_SamplerObjAllocator</a>; </div><div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a9ff23a4259f051a78e2292e7b5ae79c8"> 378</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a9ff23a4259f051a78e2292e7b5ae79c8">m_PSOAllocator</a>; </div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a0877e7b3f2412aa9dd86c7ce7b6434ba"> 379</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a0877e7b3f2412aa9dd86c7ce7b6434ba">m_SRBAllocator</a>; </div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a02eeb28e659e12c5b5db22abd7b69ab0"> 380</a></span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> <a class="code" href="class_diligent_1_1_render_device_base.html#a02eeb28e659e12c5b5db22abd7b69ab0">m_ResMappingAllocator</a>; </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> };</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a111f8a099da34511c7b7084b3e215d16"> 385</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a111f8a099da34511c7b7084b3e215d16">RenderDeviceBase<BaseInterface>::CreateResourceMapping</a>( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_resource_mapping_desc.html">ResourceMappingDesc</a> &MappingDesc, <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> **ppMapping )</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  VERIFY( ppMapping != <span class="keyword">nullptr</span>, <span class="stringliteral">"Null pointer provided"</span> );</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">if</span>( ppMapping == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  VERIFY( *ppMapping == <span class="keyword">nullptr</span>, <span class="stringliteral">"Overwriting reference to existing object may cause memory leaks"</span> );</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">auto</span> *pResourceMapping( NEW_RC_OBJ(m_ResMappingAllocator, <span class="stringliteral">"ResourceMappingImpl instance"</span>, <a class="code" href="class_diligent_1_1_resource_mapping_impl.html">ResourceMappingImpl</a>)(<a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>()) );</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  pResourceMapping->QueryInterface( IID_ResourceMapping, reinterpret_cast<IObject**>(ppMapping) );</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span>( MappingDesc.<a class="code" href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8">pEntries</a> )</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">for</span>( <span class="keyword">auto</span> *pEntry = MappingDesc.<a class="code" href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8">pEntries</a>; pEntry-><a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a62f99ae784081dd78b7a3336c3e3662d">Name</a> && pEntry->pObject; ++pEntry )</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  (*ppMapping)->AddResourceArray( pEntry->Name, pEntry->ArrayIndex, &pEntry->pObject, 1, <span class="keyword">true</span> );</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="keyword">template</span><<span class="keyword">typename</span> TObjectType, <span class="keyword">typename</span> TObjectDescType, <span class="keyword">typename</span> TObjectConstructor></div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_base.html#a53a856542184d8a6c323af97a95979f4"> 413</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_render_device_base.html#a53a856542184d8a6c323af97a95979f4">RenderDeviceBase<BaseInterface> :: CreateDeviceObject</a>( <span class="keyword">const</span> Char *ObjectTypeName, <span class="keyword">const</span> TObjectDescType &Desc, TObjectType **ppObject, TObjectConstructor ConstructObject )</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  VERIFY( ppObject != <span class="keyword">nullptr</span>, <span class="stringliteral">"Null pointer provided"</span> );</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">if</span>(!ppObject)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  VERIFY( *ppObject == <span class="keyword">nullptr</span>, <span class="stringliteral">"Overwriting reference to existing object may cause memory leaks"</span> );</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// Do not release *ppObject here!</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="comment">// Should this happen, RefCntAutoPtr<> will take care of this!</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">//if( *ppObject )</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="comment">//{</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="comment">// (*ppObject)->Release();</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// *ppObject = nullptr;</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">//}</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  *ppObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  ConstructObject();</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">catch</span>( <span class="keyword">const</span> std::runtime_error & )</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  VERIFY( *ppObject == <span class="keyword">nullptr</span>, <span class="stringliteral">"Object was created despite error"</span> );</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">if</span>( *ppObject )</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  (*ppObject)->Release();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  *ppObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keyword">auto</span> ObjectDescString = GetObjectDescString( Desc );</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">if</span>( ObjectDescString.length() )</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  LOG_ERROR( <span class="stringliteral">"Failed to create "</span>, ObjectTypeName, <span class="stringliteral">" object \""</span>, Desc.Name ? Desc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\"\n"</span>, ObjectDescString );</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  LOG_ERROR( <span class="stringliteral">"Failed to create "</span>, ObjectTypeName, <span class="stringliteral">" object \""</span>, Desc.Name ? Desc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\""</span> );</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> }</div><div class="ttc" id="struct_diligent_1_1_stencil_op_desc_html_abb9e31d08669cafb05cb4e3b9f600785"><div class="ttname"><a href="struct_diligent_1_1_stencil_op_desc.html#abb9e31d08669cafb05cb4e3b9f600785">Diligent::StencilOpDesc::StencilPassOp</a></div><div class="ttdeci">STENCIL_OP StencilPassOp</div><div class="ttdoc">The stencil operation to perform when stencil testing and depth testing both pass. </div><div class="ttdef"><b>Definition:</b> DepthStencilState.h:101</div></div> <div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="class_diligent_1_1_render_device_base_html_a02eeb28e659e12c5b5db22abd7b69ab0"><div class="ttname"><a href="class_diligent_1_1_render_device_base.html#a02eeb28e659e12c5b5db22abd7b69ab0">Diligent::RenderDeviceBase::m_ResMappingAllocator</a></div><div class="ttdeci">FixedBlockMemoryAllocator m_ResMappingAllocator</div><div class="ttdoc">Allocator for resource mapping objects. </div><div class="ttdef"><b>Definition:</b> RenderDeviceBase.h:380</div></div> <div class="ttc" id="struct_diligent_1_1_stencil_op_desc_html_a5fbdb05e365ec418ba5a449265c3791f"><div class="ttname"><a href="struct_diligent_1_1_stencil_op_desc.html#a5fbdb05e365ec418ba5a449265c3791f">Diligent::StencilOpDesc::StencilFunc</a></div><div class="ttdeci">COMPARISON_FUNCTION StencilFunc</div><div class="ttdoc">A function that compares stencil data against existing stencil data. See Diligent::COMPARISON_FUNCTIO...</div><div class="ttdef"><b>Definition:</b> DepthStencilState.h:105</div></div> @@ -205,7 +205,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_d3_d11_8h_source.html b/doc/html/_render_device_d3_d11_8h_source.html index db4fe821..7a379674 100644 --- a/doc/html/_render_device_d3_d11_8h_source.html +++ b/doc/html/_render_device_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RenderDeviceD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {05B1CBB8-FCAD-49EE-BADA-7801223EC3FE}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_RenderDeviceD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x5b1cbb8, 0xfcad, 0x49ee, { 0xba, 0xda, 0x78, 0x1, 0x22, 0x3e, 0xc3, 0xfe } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_render_device_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html">IRenderDeviceD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11Device* <a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html#a69d8ff7d7fe682be14264efce997bd50">GetD3D11Device</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html#aec48e5769272650fd23d3953522d3032">CreateBufferFromD3DResource</a>(ID3D11Buffer *pd3d11Buffer, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer) = 0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html#ae6ef26377c07203420784c19ebbfddcd">CreateTextureFromD3DResource</a>(ID3D11Texture1D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html#ae6ef26377c07203420784c19ebbfddcd">CreateTextureFromD3DResource</a>(ID3D11Texture2D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html#ae6ef26377c07203420784c19ebbfddcd">CreateTextureFromD3DResource</a>(ID3D11Texture3D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {05B1CBB8-FCAD-49EE-BADA-7801223EC3FE}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_RenderDeviceD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x5b1cbb8, 0xfcad, 0x49ee, { 0xba, 0xda, 0x78, 0x1, 0x22, 0x3e, 0xc3, 0xfe } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_render_device_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html">IRenderDeviceD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11Device* <a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html#a69d8ff7d7fe682be14264efce997bd50">GetD3D11Device</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html#aec48e5769272650fd23d3953522d3032">CreateBufferFromD3DResource</a>(ID3D11Buffer *pd3d11Buffer, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer) = 0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html#ae6ef26377c07203420784c19ebbfddcd">CreateTextureFromD3DResource</a>(ID3D11Texture1D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html#ae6ef26377c07203420784c19ebbfddcd">CreateTextureFromD3DResource</a>(ID3D11Texture2D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d11.html#ae6ef26377c07203420784c19ebbfddcd">CreateTextureFromD3DResource</a>(ID3D11Texture3D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer.html">Diligent::IBuffer</a></div><div class="ttdoc">Buffer interface. </div><div class="ttdef"><b>Definition:</b> Buffer.h:200</div></div> <div class="ttc" id="struct_diligent_1_1_buffer_desc_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_desc.html">Diligent::BufferDesc</a></div><div class="ttdoc">Buffer description. </div><div class="ttdef"><b>Definition:</b> Buffer.h:57</div></div> @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_d3_d11_impl_8h_source.html b/doc/html/_render_device_d3_d11_impl_8h_source.html index d389fa95..9d931825 100644 --- a/doc/html/_render_device_d3_d11_impl_8h_source.html +++ b/doc/html/_render_device_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RenderDeviceD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3DBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DeviceContextD3D11.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "EngineD3D11Attribs.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_d3_d11_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> : <span class="keyword">public</span> RenderDeviceD3DBase<IRenderDeviceD3D11></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> RenderDeviceD3DBase<IRenderDeviceD3D11> TRenderDeviceBase;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a>( IReferenceCounters *pRefCounters, IMemoryAllocator &RawMemAllocator, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html">EngineD3D11Attribs</a>& EngineAttribs, ID3D11Device *pd3d11Device, Uint32 NumDeferredContexts );</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBuffer(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateShader(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>, <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> **ppShader)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTexture(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &Data, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSampler(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>, <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> **ppSampler)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreatePipelineState( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc, <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPipelineState )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  ID3D11Device* GetD3D11Device()<span class="keyword">override</span> <span class="keyword">final</span>{<span class="keywordflow">return</span> m_pd3d11Device;}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBufferFromD3DResource(ID3D11Buffer *pd3d11Buffer, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTextureFromD3DResource(ID3D11Texture1D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTextureFromD3DResource(ID3D11Texture2D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTextureFromD3DResource(ID3D11Texture3D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> TestTextureFormat( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat );</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html">EngineD3D11Attribs</a> m_EngineAttribs;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  CComPtr<ID3D11Device> m_pd3d11Device;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3DBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DeviceContextD3D11.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "EngineD3D11Attribs.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_d3_d11_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> : <span class="keyword">public</span> RenderDeviceD3DBase<IRenderDeviceD3D11></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> RenderDeviceD3DBase<IRenderDeviceD3D11> TRenderDeviceBase;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a>( IReferenceCounters *pRefCounters, IMemoryAllocator &RawMemAllocator, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html">EngineD3D11Attribs</a>& EngineAttribs, ID3D11Device *pd3d11Device, Uint32 NumDeferredContexts );</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBuffer(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateShader(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>, <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> **ppShader)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTexture(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &Data, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSampler(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>, <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> **ppSampler)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreatePipelineState( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc, <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPipelineState )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  ID3D11Device* GetD3D11Device()<span class="keyword">override</span> <span class="keyword">final</span>{<span class="keywordflow">return</span> m_pd3d11Device;}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBufferFromD3DResource(ID3D11Buffer *pd3d11Buffer, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTextureFromD3DResource(ID3D11Texture1D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTextureFromD3DResource(ID3D11Texture2D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTextureFromD3DResource(ID3D11Texture3D *pd3d11Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> TestTextureFormat( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat );</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="struct_diligent_1_1_engine_d3_d11_attribs.html">EngineD3D11Attribs</a> m_EngineAttribs;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  CComPtr<ID3D11Device> m_pd3d11Device;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> <div class="ttc" id="struct_diligent_1_1_buffer_data_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_data.html">Diligent::BufferData</a></div><div class="ttdoc">Describes the buffer initial data. </div><div class="ttdef"><b>Definition:</b> Buffer.h:176</div></div> @@ -90,7 +90,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_d3_d12_8h_source.html b/doc/html/_render_device_d3_d12_8h_source.html index c9cf715a..6071edef 100644 --- a/doc/html/_render_device_d3_d12_8h_source.html +++ b/doc/html/_render_device_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RenderDeviceD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// {C7987C98-87FE-4309-AE88-E98F044B00F6}</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_RenderDeviceD3D12 =</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> { 0xc7987c98, 0x87fe, 0x4309, { 0xae, 0x88, 0xe9, 0x8f, 0x4, 0x4b, 0x0, 0xf6 } };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_render_device_d3_d12.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html">IRenderDeviceD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> ID3D12Device* <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#a5ecde6683f3c1e1971be88a9fcb0153d">GetD3D12Device</a>() = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> Uint64 <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#aa1bd3115f20daa537a1bdcb8b67e72bf">GetNextFenceValue</a>() = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> Bool <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#a97b891ad75062162ef1e7013824d4eab">IsFenceSignaled</a>(Uint64 FenceValue) = 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#a893bb519df45e870a1e8fcfb1fa47131">FinishFrame</a>() = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#a74fde1f49848b55d9d6d535af8703230">CreateTextureFromD3DResource</a>(ID3D12Resource *pd3d12Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#aebb331f0742f2f3d677bb8b4316ead31">CreateBufferFromD3DResource</a>(ID3D12Resource *pd3d12Buffer, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer) = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// {C7987C98-87FE-4309-AE88-E98F044B00F6}</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_RenderDeviceD3D12 =</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> { 0xc7987c98, 0x87fe, 0x4309, { 0xae, 0x88, 0xe9, 0x8f, 0x4, 0x4b, 0x0, 0xf6 } };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_render_device_d3_d12.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html">IRenderDeviceD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> ID3D12Device* <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#a5ecde6683f3c1e1971be88a9fcb0153d">GetD3D12Device</a>() = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> Uint64 <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#aa1bd3115f20daa537a1bdcb8b67e72bf">GetNextFenceValue</a>() = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> Bool <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#a97b891ad75062162ef1e7013824d4eab">IsFenceSignaled</a>(Uint64 FenceValue) = 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#a893bb519df45e870a1e8fcfb1fa47131">FinishFrame</a>() = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#a74fde1f49848b55d9d6d535af8703230">CreateTextureFromD3DResource</a>(ID3D12Resource *pd3d12Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_d3_d12.html#aebb331f0742f2f3d677bb8b4316ead31">CreateBufferFromD3DResource</a>(ID3D12Resource *pd3d12Buffer, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer) = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_d3_d12_html_a97b891ad75062162ef1e7013824d4eab"><div class="ttname"><a href="class_diligent_1_1_i_render_device_d3_d12.html#a97b891ad75062162ef1e7013824d4eab">Diligent::IRenderDeviceD3D12::IsFenceSignaled</a></div><div class="ttdeci">virtual Bool IsFenceSignaled(Uint64 FenceValue)=0</div><div class="ttdoc">Checks if the fence value has been signaled by the GPU. True means that all associated work has been ...</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_buffer_html"><div class="ttname"><a href="class_diligent_1_1_i_buffer.html">Diligent::IBuffer</a></div><div class="ttdoc">Buffer interface. </div><div class="ttdef"><b>Definition:</b> Buffer.h:200</div></div> @@ -86,7 +86,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_d3_d12_impl_8h_source.html b/doc/html/_render_device_d3_d12_impl_8h_source.html index 206941c4..393bc5e4 100644 --- a/doc/html/_render_device_d3_d12_impl_8h_source.html +++ b/doc/html/_render_device_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RenderDeviceD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3DBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "CommandListManager.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "CommandContext.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "DynamicUploadHeap.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "Atomics.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "CommandQueueD3D12.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_d3_d12_impl.html"> 43</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> : <span class="keyword">public</span> RenderDeviceD3DBase<IRenderDeviceD3D12></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">typedef</span> RenderDeviceD3DBase<IRenderDeviceD3D12> TRenderDeviceBase;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a>( IReferenceCounters *pRefCounters, IMemoryAllocator &RawMemAllocator, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html">EngineD3D12Attribs</a> &CreationAttribs, ID3D12Device *pD3D12Device, <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html">ICommandQueueD3D12</a> *pCmdQueue, Uint32 NumDeferredContexts );</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~<a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreatePipelineState( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc, <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPipelineState )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBuffer(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateShader(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>, <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> **ppShader)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTexture(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &Data, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span> CreateTexture(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, ID3D12Resource *pd3d12Texture, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a> **ppTexture);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSampler(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>, <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> **ppSampler)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> ID3D12Device* GetD3D12Device()<span class="keyword">override</span> <span class="keyword">final</span>{<span class="keywordflow">return</span> m_pd3d12Device;}</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTextureFromD3DResource(ID3D12Resource *pd3d12Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBufferFromD3DResource(ID3D12Resource *pd3d12Buffer, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  DescriptorHeapAllocation AllocateDescriptor( D3D12_DESCRIPTOR_HEAP_TYPE Type, UINT Count = 1 );</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  DescriptorHeapAllocation AllocateGPUDescriptors( D3D12_DESCRIPTOR_HEAP_TYPE Type, UINT Count = 1 );</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  Uint64 GetCompletedFenceValue();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> Uint64 GetNextFenceValue() <span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> m_pCommandQueue->GetNextFenceValue();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint64 GetCurrentFrameNumber()<span class="keyword">const </span>{<span class="keywordflow">return</span> <span class="keyword">static_cast<</span>Uint64<span class="keyword">></span>(m_FrameNumber);}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> Bool IsFenceSignaled(Uint64 FenceValue) <span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html">ICommandQueueD3D12</a> *GetCmdQueue(){<span class="keywordflow">return</span> m_pCommandQueue;}</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> IdleGPU(<span class="keywordtype">bool</span> ReleaseStaleObjects);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  CommandContext* AllocateCommandContext(<span class="keyword">const</span> Char *ID = <span class="stringliteral">""</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> CloseAndExecuteCommandContext(CommandContext *pCtx, <span class="keywordtype">bool</span> DiscardStaleObjects);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span> DisposeCommandContext(CommandContext*);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">void</span> SafeReleaseD3D12Object(ID3D12Object* pObj);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">void</span> FinishFrame(<span class="keywordtype">bool</span> ReleaseAllResources);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> FinishFrame()<span class="keyword">override</span> <span class="keyword">final</span> { FinishFrame(<span class="keyword">false</span>); }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  DynamicUploadHeap* RequestUploadHeap();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> ReleaseUploadHeap(DynamicUploadHeap* pUploadHeap);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> TestTextureFormat( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat );</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">void</span> ProcessReleaseQueue(Uint64 CompletedFenceValue);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">void</span> DiscardStaleD3D12Objects(Uint64 CmdListNumber, Uint64 FenceValue);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  CComPtr<ID3D12Device> m_pd3d12Device;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<ICommandQueueD3D12></a> m_pCommandQueue;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html">EngineD3D12Attribs</a> m_EngineAttribs;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  CPUDescriptorHeap m_CPUDescriptorHeaps[D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  GPUDescriptorHeap m_GPUDescriptorHeaps[2]; <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV == 0</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER == 1</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">const</span> Uint32 m_DynamicDescriptorAllocationChunkSize[2];</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::mutex m_CmdQueueMutex;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Atomics::AtomicInt64 m_FrameNumber;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  Atomics::AtomicInt64 m_NextCmdListNumber;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// The following basic requirement guarantees correctness of resource deallocation:</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">//</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// A resource is never released before the last draw command referencing it is invoked on the immediate context</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">//</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/managing-resource-lifetimes/</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">//</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// CPU</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// Last Reference</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// of resource X</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// |</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// | Submit Cmd Submit Cmd Submit Cmd</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// | List N List N+1 List N+2</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// V | | |</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// NextFenceValue | * N | N+1 | N+2 |</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">//</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">//</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// CompletedFenceValue | N-3 | N-2 | N-1 | N |</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// . . . . .</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// -----------------------------.--------------.---------------.-------------------.----------------.-------------</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// . . . . .</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// </span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// GPU | Cmd List N-2 | Cmd List N-1 | Cmd List N | Cmd List N+1 |</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// |</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// |</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// Resource X can</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// be released</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  CommandListManager m_CmdListManager;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">typedef</span> std::unique_ptr<CommandContext, STDDeleterRawMem<CommandContext> > ContextPoolElemType;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  std::vector< ContextPoolElemType, STDAllocatorRawMem<ContextPoolElemType> > m_ContextPool;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  std::deque<CommandContext*, STDAllocatorRawMem<CommandContext*> > m_AvailableContexts;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  std::mutex m_ContextAllocationMutex;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  std::mutex m_ReleaseQueueMutex;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">typedef</span> std::pair<Uint64, CComPtr<ID3D12Object> > ReleaseQueueElemType;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  std::deque< ReleaseQueueElemType, STDAllocatorRawMem<ReleaseQueueElemType> > m_D3D12ObjReleaseQueue;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  std::mutex m_StaleObjectsMutex;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  std::deque< ReleaseQueueElemType, STDAllocatorRawMem<ReleaseQueueElemType> > m_StaleD3D12Objects;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  std::mutex m_UploadHeapMutex;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keyword">typedef</span> std::unique_ptr<DynamicUploadHeap, STDDeleterRawMem<DynamicUploadHeap> > UploadHeapPoolElemType;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  std::vector< UploadHeapPoolElemType, STDAllocatorRawMem<UploadHeapPoolElemType> > m_UploadHeaps;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3DBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "CommandListManager.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "CommandContext.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "DynamicUploadHeap.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "Atomics.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "CommandQueueD3D12.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_d3_d12_impl.html"> 43</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> : <span class="keyword">public</span> RenderDeviceD3DBase<IRenderDeviceD3D12></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">typedef</span> RenderDeviceD3DBase<IRenderDeviceD3D12> TRenderDeviceBase;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a>( IReferenceCounters *pRefCounters, IMemoryAllocator &RawMemAllocator, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html">EngineD3D12Attribs</a> &CreationAttribs, ID3D12Device *pD3D12Device, <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html">ICommandQueueD3D12</a> *pCmdQueue, Uint32 NumDeferredContexts );</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~<a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreatePipelineState( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc, <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPipelineState )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBuffer(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateShader(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>, <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> **ppShader)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTexture(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &Data, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span> CreateTexture(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, ID3D12Resource *pd3d12Texture, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a> **ppTexture);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSampler(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>, <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> **ppSampler)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> ID3D12Device* GetD3D12Device()<span class="keyword">override</span> <span class="keyword">final</span>{<span class="keywordflow">return</span> m_pd3d12Device;}</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTextureFromD3DResource(ID3D12Resource *pd3d12Texture, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBufferFromD3DResource(ID3D12Resource *pd3d12Buffer, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  DescriptorHeapAllocation AllocateDescriptor( D3D12_DESCRIPTOR_HEAP_TYPE Type, UINT Count = 1 );</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  DescriptorHeapAllocation AllocateGPUDescriptors( D3D12_DESCRIPTOR_HEAP_TYPE Type, UINT Count = 1 );</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  Uint64 GetCompletedFenceValue();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> Uint64 GetNextFenceValue() <span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> m_pCommandQueue->GetNextFenceValue();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint64 GetCurrentFrameNumber()<span class="keyword">const </span>{<span class="keywordflow">return</span> <span class="keyword">static_cast<</span>Uint64<span class="keyword">></span>(m_FrameNumber);}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> Bool IsFenceSignaled(Uint64 FenceValue) <span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="class_diligent_1_1_i_command_queue_d3_d12.html">ICommandQueueD3D12</a> *GetCmdQueue(){<span class="keywordflow">return</span> m_pCommandQueue;}</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> IdleGPU(<span class="keywordtype">bool</span> ReleaseStaleObjects);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  CommandContext* AllocateCommandContext(<span class="keyword">const</span> Char *ID = <span class="stringliteral">""</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> CloseAndExecuteCommandContext(CommandContext *pCtx, <span class="keywordtype">bool</span> DiscardStaleObjects);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span> DisposeCommandContext(CommandContext*);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">void</span> SafeReleaseD3D12Object(ID3D12Object* pObj);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">void</span> FinishFrame(<span class="keywordtype">bool</span> ReleaseAllResources);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> FinishFrame()<span class="keyword">override</span> <span class="keyword">final</span> { FinishFrame(<span class="keyword">false</span>); }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  DynamicUploadHeap* RequestUploadHeap();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> ReleaseUploadHeap(DynamicUploadHeap* pUploadHeap);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> TestTextureFormat( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat );</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">void</span> ProcessReleaseQueue(Uint64 CompletedFenceValue);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">void</span> DiscardStaleD3D12Objects(Uint64 CmdListNumber, Uint64 FenceValue);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  CComPtr<ID3D12Device> m_pd3d12Device;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<ICommandQueueD3D12></a> m_pCommandQueue;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="struct_diligent_1_1_engine_d3_d12_attribs.html">EngineD3D12Attribs</a> m_EngineAttribs;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  CPUDescriptorHeap m_CPUDescriptorHeaps[D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  GPUDescriptorHeap m_GPUDescriptorHeaps[2]; <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV == 0</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER == 1</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">const</span> Uint32 m_DynamicDescriptorAllocationChunkSize[2];</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::mutex m_CmdQueueMutex;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Atomics::AtomicInt64 m_FrameNumber;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  Atomics::AtomicInt64 m_NextCmdListNumber;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// The following basic requirement guarantees correctness of resource deallocation:</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">//</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// A resource is never released before the last draw command referencing it is invoked on the immediate context</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">//</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/managing-resource-lifetimes/</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">//</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// CPU</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// Last Reference</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// of resource X</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// |</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// | Submit Cmd Submit Cmd Submit Cmd</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// | List N List N+1 List N+2</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// V | | |</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// NextFenceValue | * N | N+1 | N+2 |</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">//</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">//</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// CompletedFenceValue | N-3 | N-2 | N-1 | N |</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// . . . . .</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// -----------------------------.--------------.---------------.-------------------.----------------.-------------</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// . . . . .</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// </span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// GPU | Cmd List N-2 | Cmd List N-1 | Cmd List N | Cmd List N+1 |</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// |</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// |</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// Resource X can</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// be released</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  CommandListManager m_CmdListManager;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">typedef</span> std::unique_ptr<CommandContext, STDDeleterRawMem<CommandContext> > ContextPoolElemType;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  std::vector< ContextPoolElemType, STDAllocatorRawMem<ContextPoolElemType> > m_ContextPool;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  std::deque<CommandContext*, STDAllocatorRawMem<CommandContext*> > m_AvailableContexts;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  std::mutex m_ContextAllocationMutex;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  std::mutex m_ReleaseQueueMutex;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">typedef</span> std::pair<Uint64, CComPtr<ID3D12Object> > ReleaseQueueElemType;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  std::deque< ReleaseQueueElemType, STDAllocatorRawMem<ReleaseQueueElemType> > m_D3D12ObjReleaseQueue;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  std::mutex m_StaleObjectsMutex;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  std::deque< ReleaseQueueElemType, STDAllocatorRawMem<ReleaseQueueElemType> > m_StaleD3D12Objects;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  std::mutex m_UploadHeapMutex;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keyword">typedef</span> std::unique_ptr<DynamicUploadHeap, STDDeleterRawMem<DynamicUploadHeap> > UploadHeapPoolElemType;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  std::vector< UploadHeapPoolElemType, STDAllocatorRawMem<UploadHeapPoolElemType> > m_UploadHeaps;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> <div class="ttc" id="struct_diligent_1_1_buffer_data_html"><div class="ttname"><a href="struct_diligent_1_1_buffer_data.html">Diligent::BufferData</a></div><div class="ttdoc">Describes the buffer initial data. </div><div class="ttdef"><b>Definition:</b> Buffer.h:176</div></div> @@ -93,7 +93,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_d3_d_base_8h_source.html b/doc/html/_render_device_d3_d_base_8h_source.html index 64df288c..78b6c9e0 100644 --- a/doc/html/_render_device_d3_d_base_8h_source.html +++ b/doc/html/_render_device_d3_d_base_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">RenderDeviceD3DBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_d3_d_base.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_d3_d_base.html">RenderDeviceD3DBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase</a><BaseInterface></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_diligent_1_1_render_device_d3_d_base.html">RenderDeviceD3DBase</a>(<a class="code" href="class_diligent_1_1_i_reference_counters.html">IReferenceCounters</a> *pRefCounters, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a> &RawMemAllocator, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumDeferredContexts,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">size_t</span> TextureObjSize, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">size_t</span> TexViewObjSize,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">size_t</span> BufferObjSize, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">size_t</span> BuffViewObjSize,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">size_t</span> ShaderObjSize, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">size_t</span> SamplerObjSize,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">size_t</span> PSOSize,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">size_t</span> SRBSize) : </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase<BaseInterface></a>(pRefCounters, RawMemAllocator, NumDeferredContexts, TextureObjSize, TexViewObjSize, BufferObjSize, BuffViewObjSize, ShaderObjSize, SamplerObjSize, PSOSize, SRBSize)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// Flag texture formats always supported in D3D11 and D3D12</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define FLAG_FORMAT(Fmt, IsSupported) m_TextureFormatsInfo[Fmt].Supported=IsSupported</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4fee2013ae50b1b380735982b701f18c">TEX_FORMAT_RGBA32_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab9d0f625089592e367942df3c4b518f3">TEX_FORMAT_RGBA32_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8e8af2b7e659503f7d143e9af26444f5">TEX_FORMAT_RGBA32_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ada571f62be667654827c9dc2db417b8f">TEX_FORMAT_RGBA32_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae5f5acf9a6bbf8af39897c463502da0a">TEX_FORMAT_RGB32_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4590c9158584f05893636a5d97db2e4a">TEX_FORMAT_RGB32_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9eae2e4849709bcfec90276e67ac7f6b">TEX_FORMAT_RGB32_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8ffd14c97e1097079a88d16bc60a9145">TEX_FORMAT_RGB32_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abfda350d368dfaac50622ac75df912dc">TEX_FORMAT_RGBA16_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adaa6d237efff5ee2324c3eb3c823e896">TEX_FORMAT_RGBA16_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1efb4f2505cd9631e84e5fb18c6af583">TEX_FORMAT_RGBA16_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac797c35718d5c17cad6f24b17d08ac9f">TEX_FORMAT_RGBA16_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a71b0ad28b1acc91bc51c7313d981d116">TEX_FORMAT_RGBA16_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e395f3bd00e9ff71918447997192ce6">TEX_FORMAT_RGBA16_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31b76f2efe51b25a7117da969e2b6ed2">TEX_FORMAT_RG32_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aeea76393266977ffa2e7a8b252107133">TEX_FORMAT_RG32_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3c7c65b42cd75a7d469ed99004afaa6c">TEX_FORMAT_RG32_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbc39705e8dd96a926cf75880096c18b">TEX_FORMAT_RG32_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9dd3ba150529545a79c1193a324775d2">TEX_FORMAT_R32G8X24_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8a2edc5d9907cd0426edb134dd9adbc5">TEX_FORMAT_D32_FLOAT_S8X24_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a63e2520343d2091c58583e3738a3cd58">TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e0d8a8dd3f7a02b3decd77f1dd70ab3">TEX_FORMAT_X32_TYPELESS_G8X24_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae2607a3439026f2d40895acb46b9f5b5">TEX_FORMAT_RGB10A2_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2710e10dfc4a6192e1769a6994551f3f">TEX_FORMAT_RGB10A2_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a64579f737dd72bff3657a9c6ee9077">TEX_FORMAT_RGB10A2_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aed9cce1141988f5e228dda57c87b9936">TEX_FORMAT_R11G11B10_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2adaa9f08962f9d5656966bb22ca4890">TEX_FORMAT_RGBA8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0bdd5c2150977a0d9092831c1f45e61b">TEX_FORMAT_RGBA8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a86a2e99aecff070023e1dd0331fb9a95">TEX_FORMAT_RGBA8_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a4330e66e6d3435a44a27e546c71ed4">TEX_FORMAT_RGBA8_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee7096ae28505b3d8a5a3b35dd6a6137">TEX_FORMAT_RGBA8_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a971e25859d3b4412f0c3c50bab73d050">TEX_FORMAT_RGBA8_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75087518065ba0347cc5e7929fb552a7">TEX_FORMAT_RG16_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa8f7fb1f77bcd0288186783edbdbfe6b">TEX_FORMAT_RG16_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a05de082cc29f4eb0a142ef09eb7063a8">TEX_FORMAT_RG16_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5d522e3800275249b788a5daef991016">TEX_FORMAT_RG16_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7f9b08e92d01fa0d05415a50949f7988">TEX_FORMAT_RG16_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3517095f8afdeb90e4cb8e07d0a4e853">TEX_FORMAT_RG16_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a74ab0438f398e3fa1bd34156b5b0c507">TEX_FORMAT_R32_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac2f008275b02ec4c7a85ac5da386958b">TEX_FORMAT_D32_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0a5ec081ba06f50f1876d712c95fbbb2">TEX_FORMAT_R32_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75a8f13a2db57163d48ee3f27e048c24">TEX_FORMAT_R32_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7c8dc8d6f51535beca7a2073c3d4ecd5">TEX_FORMAT_R32_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31654723813dd33664da93c28781804b">TEX_FORMAT_R24G8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa984b72a532da68bd1f1fc33d54089c8">TEX_FORMAT_D24_UNORM_S8_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1bd8929331aee85bc24a61e239a65329">TEX_FORMAT_R24_UNORM_X8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a33c39e645a66ed967ede7d1ff30c807c">TEX_FORMAT_X24_TYPELESS_G8_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465acc9be5a43fc28f9ad4c8bb351683c536">TEX_FORMAT_RG8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aae3fd0b0cf035ee8baaedd0af7d4bf1a">TEX_FORMAT_RG8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3e39944f1f4957c628463ea255827581">TEX_FORMAT_RG8_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a981eca1860bc430747e5f2107c3668d4">TEX_FORMAT_RG8_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9151fd16adda2dc9a0ebe06462192ad7">TEX_FORMAT_RG8_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ade07fbcd1046d63804856cd55c6f5474">TEX_FORMAT_R16_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a57374ece9cb48fbd4f0f7a834b565462">TEX_FORMAT_R16_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aea03d50f3700be94d30dc941aeb40724">TEX_FORMAT_D16_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a29829600ff7adcb7a1f3b0b46ed1a840">TEX_FORMAT_R16_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a6fc0ad69e558e6d0d363e69ada5e84ee">TEX_FORMAT_R16_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0611b4b06d9f2395dc9cb22352f3e0e0">TEX_FORMAT_R16_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aac46b66d97842649d10c8ca15ea0e154">TEX_FORMAT_R16_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5cb418acea50b394e5dfd254e7ced9f5">TEX_FORMAT_R8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a21e4a0387472fc3ae5f4c7cc1ba853b7">TEX_FORMAT_R8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae9e4c8ead49e7048193fa1dff0d2a823">TEX_FORMAT_R8_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7340ccaf1e5bb4da97f53f9dc9cdaede">TEX_FORMAT_R8_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4ebb7d7011d8106feb04553e486dd509">TEX_FORMAT_R8_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3723820d4d3828dfd2f9262a7dba6708">TEX_FORMAT_A8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3de9268103c1ded8e4ffd975c0a705d4">TEX_FORMAT_R1_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9a560e8e14a941193b18ea3c751da263">TEX_FORMAT_RGB9E5_SHAREDEXP</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaa5dfc47c51837ad649fac6f00655841">TEX_FORMAT_RG8_B8G8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a870215407929c7531a71e7332024e388">TEX_FORMAT_G8R8_G8B8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a60f594c52fbcb1533d0cf8509a6c65ce">TEX_FORMAT_BC1_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab63331cd7ecf61190c25545324ea2ed7">TEX_FORMAT_BC1_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4ebd6ca8bd89786ce5397f0305bbc6e">TEX_FORMAT_BC1_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa15fff042b0c21e710e300304c30a3ed">TEX_FORMAT_BC2_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8cc3fcce89d2803794684ef3836da91b">TEX_FORMAT_BC2_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4c8df626ee847c0edc91e3f4074723e">TEX_FORMAT_BC2_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a02c11ecab5cd1536f9f78b8cef4e5ba4">TEX_FORMAT_BC3_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac9d4bc97bbff4a3e369989e5f092c1fc">TEX_FORMAT_BC3_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee1add9082d7de6c1b9a4e4dfcd6b32e">TEX_FORMAT_BC3_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef84cdaf5c49e1bc88a29138a12908a7">TEX_FORMAT_BC4_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaf7cc360071c3fa26a55da8e9a49c532">TEX_FORMAT_BC4_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a72f458a370b3931c2a499a834f9a07ad">TEX_FORMAT_BC4_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac60117a0faee2761b0af7e2aff3aa9dc">TEX_FORMAT_BC5_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af220720a273822e42215f64da22a39c2">TEX_FORMAT_BC5_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0d3d63ade03dc83ba8e00f54eda5034e">TEX_FORMAT_BC5_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adf11b47f6d9a00acdef8a6365627e236">TEX_FORMAT_B5G6R5_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab2f7731db1a82c6a1e1e376798668445">TEX_FORMAT_B5G5R5A1_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a85c8ec3cafb6f81a2beffd0d1a2ef9bc">TEX_FORMAT_BGRA8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa4acef99829b6389f46c1d4974c3c608">TEX_FORMAT_BGRX8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a62a2e8c0db0113b562af2be036586243">TEX_FORMAT_R10G10B10_XR_BIAS_A2_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a680df490939619dd7b30ea7037b9a9f7">TEX_FORMAT_BGRA8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ad6be5eaf8712b7c04727f9b4803911f5">TEX_FORMAT_BGRA8_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a01d64cc54ad460cf23844197dbba3f9b">TEX_FORMAT_BGRX8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a849b5daeb4b639e1d7581177ddb53cc5">TEX_FORMAT_BGRX8_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2006402150aa88e16d5010b7ef808aa6">TEX_FORMAT_BC6H_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa89eb4d526cbabe4548ccb4e33371eda">TEX_FORMAT_BC6H_UF16</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef805e475325f97eec66964176f52a19">TEX_FORMAT_BC6H_SF16</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbf9435e67a9b03c4988b191884d2c97">TEX_FORMAT_BC7_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af0128d2a0c05d795926d1b4be8c3e468">TEX_FORMAT_BC7_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5660aeeaed147beaa9e4bdc8cff42bc5">TEX_FORMAT_BC7_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#undef FLAG_FORMAT</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> };</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465ac60117a0faee2761b0af7e2aff3aa9dc"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac60117a0faee2761b0af7e2aff3aa9dc">Diligent::TEX_FORMAT_BC5_TYPELESS</a></div><div class="ttdoc">Two-component typeless block-compression format with 1:2 compression ratio. D3D counterpart: DXGI_F...</div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:658</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">template</span><<span class="keyword">typename</span> BaseInterface></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_d3_d_base.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_d3_d_base.html">RenderDeviceD3DBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase</a><BaseInterface></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_diligent_1_1_render_device_d3_d_base.html">RenderDeviceD3DBase</a>(<a class="code" href="class_diligent_1_1_i_reference_counters.html">IReferenceCounters</a> *pRefCounters, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a> &RawMemAllocator, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumDeferredContexts,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">size_t</span> TextureObjSize, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">size_t</span> TexViewObjSize,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">size_t</span> BufferObjSize, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">size_t</span> BuffViewObjSize,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">size_t</span> ShaderObjSize, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">size_t</span> SamplerObjSize,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">size_t</span> PSOSize,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">size_t</span> SRBSize) : </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase<BaseInterface></a>(pRefCounters, RawMemAllocator, NumDeferredContexts, TextureObjSize, TexViewObjSize, BufferObjSize, BuffViewObjSize, ShaderObjSize, SamplerObjSize, PSOSize, SRBSize)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// Flag texture formats always supported in D3D11 and D3D12</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define FLAG_FORMAT(Fmt, IsSupported) m_TextureFormatsInfo[Fmt].Supported=IsSupported</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4fee2013ae50b1b380735982b701f18c">TEX_FORMAT_RGBA32_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab9d0f625089592e367942df3c4b518f3">TEX_FORMAT_RGBA32_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8e8af2b7e659503f7d143e9af26444f5">TEX_FORMAT_RGBA32_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ada571f62be667654827c9dc2db417b8f">TEX_FORMAT_RGBA32_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae5f5acf9a6bbf8af39897c463502da0a">TEX_FORMAT_RGB32_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4590c9158584f05893636a5d97db2e4a">TEX_FORMAT_RGB32_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9eae2e4849709bcfec90276e67ac7f6b">TEX_FORMAT_RGB32_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8ffd14c97e1097079a88d16bc60a9145">TEX_FORMAT_RGB32_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abfda350d368dfaac50622ac75df912dc">TEX_FORMAT_RGBA16_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adaa6d237efff5ee2324c3eb3c823e896">TEX_FORMAT_RGBA16_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1efb4f2505cd9631e84e5fb18c6af583">TEX_FORMAT_RGBA16_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac797c35718d5c17cad6f24b17d08ac9f">TEX_FORMAT_RGBA16_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a71b0ad28b1acc91bc51c7313d981d116">TEX_FORMAT_RGBA16_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e395f3bd00e9ff71918447997192ce6">TEX_FORMAT_RGBA16_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31b76f2efe51b25a7117da969e2b6ed2">TEX_FORMAT_RG32_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aeea76393266977ffa2e7a8b252107133">TEX_FORMAT_RG32_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3c7c65b42cd75a7d469ed99004afaa6c">TEX_FORMAT_RG32_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbc39705e8dd96a926cf75880096c18b">TEX_FORMAT_RG32_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9dd3ba150529545a79c1193a324775d2">TEX_FORMAT_R32G8X24_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8a2edc5d9907cd0426edb134dd9adbc5">TEX_FORMAT_D32_FLOAT_S8X24_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a63e2520343d2091c58583e3738a3cd58">TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2e0d8a8dd3f7a02b3decd77f1dd70ab3">TEX_FORMAT_X32_TYPELESS_G8X24_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae2607a3439026f2d40895acb46b9f5b5">TEX_FORMAT_RGB10A2_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2710e10dfc4a6192e1769a6994551f3f">TEX_FORMAT_RGB10A2_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a64579f737dd72bff3657a9c6ee9077">TEX_FORMAT_RGB10A2_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aed9cce1141988f5e228dda57c87b9936">TEX_FORMAT_R11G11B10_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2adaa9f08962f9d5656966bb22ca4890">TEX_FORMAT_RGBA8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0bdd5c2150977a0d9092831c1f45e61b">TEX_FORMAT_RGBA8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a86a2e99aecff070023e1dd0331fb9a95">TEX_FORMAT_RGBA8_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1a4330e66e6d3435a44a27e546c71ed4">TEX_FORMAT_RGBA8_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee7096ae28505b3d8a5a3b35dd6a6137">TEX_FORMAT_RGBA8_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a971e25859d3b4412f0c3c50bab73d050">TEX_FORMAT_RGBA8_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75087518065ba0347cc5e7929fb552a7">TEX_FORMAT_RG16_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa8f7fb1f77bcd0288186783edbdbfe6b">TEX_FORMAT_RG16_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a05de082cc29f4eb0a142ef09eb7063a8">TEX_FORMAT_RG16_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5d522e3800275249b788a5daef991016">TEX_FORMAT_RG16_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7f9b08e92d01fa0d05415a50949f7988">TEX_FORMAT_RG16_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3517095f8afdeb90e4cb8e07d0a4e853">TEX_FORMAT_RG16_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a74ab0438f398e3fa1bd34156b5b0c507">TEX_FORMAT_R32_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac2f008275b02ec4c7a85ac5da386958b">TEX_FORMAT_D32_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0a5ec081ba06f50f1876d712c95fbbb2">TEX_FORMAT_R32_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a75a8f13a2db57163d48ee3f27e048c24">TEX_FORMAT_R32_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7c8dc8d6f51535beca7a2073c3d4ecd5">TEX_FORMAT_R32_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a31654723813dd33664da93c28781804b">TEX_FORMAT_R24G8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa984b72a532da68bd1f1fc33d54089c8">TEX_FORMAT_D24_UNORM_S8_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a1bd8929331aee85bc24a61e239a65329">TEX_FORMAT_R24_UNORM_X8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a33c39e645a66ed967ede7d1ff30c807c">TEX_FORMAT_X24_TYPELESS_G8_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465acc9be5a43fc28f9ad4c8bb351683c536">TEX_FORMAT_RG8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aae3fd0b0cf035ee8baaedd0af7d4bf1a">TEX_FORMAT_RG8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3e39944f1f4957c628463ea255827581">TEX_FORMAT_RG8_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a981eca1860bc430747e5f2107c3668d4">TEX_FORMAT_RG8_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9151fd16adda2dc9a0ebe06462192ad7">TEX_FORMAT_RG8_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ade07fbcd1046d63804856cd55c6f5474">TEX_FORMAT_R16_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a57374ece9cb48fbd4f0f7a834b565462">TEX_FORMAT_R16_FLOAT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aea03d50f3700be94d30dc941aeb40724">TEX_FORMAT_D16_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a29829600ff7adcb7a1f3b0b46ed1a840">TEX_FORMAT_R16_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a6fc0ad69e558e6d0d363e69ada5e84ee">TEX_FORMAT_R16_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0611b4b06d9f2395dc9cb22352f3e0e0">TEX_FORMAT_R16_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aac46b66d97842649d10c8ca15ea0e154">TEX_FORMAT_R16_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5cb418acea50b394e5dfd254e7ced9f5">TEX_FORMAT_R8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a21e4a0387472fc3ae5f4c7cc1ba853b7">TEX_FORMAT_R8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae9e4c8ead49e7048193fa1dff0d2a823">TEX_FORMAT_R8_UINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7340ccaf1e5bb4da97f53f9dc9cdaede">TEX_FORMAT_R8_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a4ebb7d7011d8106feb04553e486dd509">TEX_FORMAT_R8_SINT</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3723820d4d3828dfd2f9262a7dba6708">TEX_FORMAT_A8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3de9268103c1ded8e4ffd975c0a705d4">TEX_FORMAT_R1_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a9a560e8e14a941193b18ea3c751da263">TEX_FORMAT_RGB9E5_SHAREDEXP</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaa5dfc47c51837ad649fac6f00655841">TEX_FORMAT_RG8_B8G8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a870215407929c7531a71e7332024e388">TEX_FORMAT_G8R8_G8B8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a60f594c52fbcb1533d0cf8509a6c65ce">TEX_FORMAT_BC1_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab63331cd7ecf61190c25545324ea2ed7">TEX_FORMAT_BC1_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4ebd6ca8bd89786ce5397f0305bbc6e">TEX_FORMAT_BC1_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa15fff042b0c21e710e300304c30a3ed">TEX_FORMAT_BC2_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a8cc3fcce89d2803794684ef3836da91b">TEX_FORMAT_BC2_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ae4c8df626ee847c0edc91e3f4074723e">TEX_FORMAT_BC2_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a02c11ecab5cd1536f9f78b8cef4e5ba4">TEX_FORMAT_BC3_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac9d4bc97bbff4a3e369989e5f092c1fc">TEX_FORMAT_BC3_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee1add9082d7de6c1b9a4e4dfcd6b32e">TEX_FORMAT_BC3_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef84cdaf5c49e1bc88a29138a12908a7">TEX_FORMAT_BC4_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aaf7cc360071c3fa26a55da8e9a49c532">TEX_FORMAT_BC4_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a72f458a370b3931c2a499a834f9a07ad">TEX_FORMAT_BC4_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac60117a0faee2761b0af7e2aff3aa9dc">TEX_FORMAT_BC5_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af220720a273822e42215f64da22a39c2">TEX_FORMAT_BC5_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0d3d63ade03dc83ba8e00f54eda5034e">TEX_FORMAT_BC5_SNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adf11b47f6d9a00acdef8a6365627e236">TEX_FORMAT_B5G6R5_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ab2f7731db1a82c6a1e1e376798668445">TEX_FORMAT_B5G5R5A1_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a85c8ec3cafb6f81a2beffd0d1a2ef9bc">TEX_FORMAT_BGRA8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa4acef99829b6389f46c1d4974c3c608">TEX_FORMAT_BGRX8_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a62a2e8c0db0113b562af2be036586243">TEX_FORMAT_R10G10B10_XR_BIAS_A2_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a680df490939619dd7b30ea7037b9a9f7">TEX_FORMAT_BGRA8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ad6be5eaf8712b7c04727f9b4803911f5">TEX_FORMAT_BGRA8_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a01d64cc54ad460cf23844197dbba3f9b">TEX_FORMAT_BGRX8_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a849b5daeb4b639e1d7581177ddb53cc5">TEX_FORMAT_BGRX8_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a2006402150aa88e16d5010b7ef808aa6">TEX_FORMAT_BC6H_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aa89eb4d526cbabe4548ccb4e33371eda">TEX_FORMAT_BC6H_UF16</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aef805e475325f97eec66964176f52a19">TEX_FORMAT_BC6H_SF16</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465adbf9435e67a9b03c4988b191884d2c97">TEX_FORMAT_BC7_TYPELESS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465af0128d2a0c05d795926d1b4be8c3e468">TEX_FORMAT_BC7_UNORM</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  FLAG_FORMAT(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a5660aeeaed147beaa9e4bdc8cff42bc5">TEX_FORMAT_BC7_UNORM_SRGB</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#undef FLAG_FORMAT</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> };</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465ac60117a0faee2761b0af7e2aff3aa9dc"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac60117a0faee2761b0af7e2aff3aa9dc">Diligent::TEX_FORMAT_BC5_TYPELESS</a></div><div class="ttdoc">Two-component typeless block-compression format with 1:2 compression ratio. D3D counterpart: DXGI_F...</div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:658</div></div> <div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465ac797c35718d5c17cad6f24b17d08ac9f"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac797c35718d5c17cad6f24b17d08ac9f">Diligent::TEX_FORMAT_RGBA16_UINT</a></div><div class="ttdoc">Four-component 64-bit unsigned-integer format with 16-bit channels. D3D counterpart: DXGI_FORMAT_R1...</div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:301</div></div> <div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465ac9d4bc97bbff4a3e369989e5f092c1fc"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465ac9d4bc97bbff4a3e369989e5f092c1fc">Diligent::TEX_FORMAT_BC3_UNORM</a></div><div class="ttdoc">Four-component unsigned-normalized-integer block-compression format with 5 bits for R...</div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:615</div></div> <div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465a3c7c65b42cd75a7d469ed99004afaa6c"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a3c7c65b42cd75a7d469ed99004afaa6c">Diligent::TEX_FORMAT_RG32_UINT</a></div><div class="ttdoc">Two-component 64-bit unsigned-integer format with 32-bit channels. D3D counterpart: DXGI_FORMAT_R32...</div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:324</div></div> diff --git a/doc/html/_render_device_factory_d3_d11_8h_source.html b/doc/html/_render_device_factory_d3_d11_8h_source.html index e1778bc1..c49fd6df 100644 --- a/doc/html/_render_device_factory_d3_d11_8h_source.html +++ b/doc/html/_render_device_factory_d3_d11_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">RenderDeviceFactoryD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "EngineD3D11Attribs.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#if PLATFORM_UNIVERSAL_WINDOWS && defined(ENGINE_DLL)</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"># include "StringTools.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>IEngineFactoryD3D11</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDeviceAndContextsD3D11( <span class="keyword">const</span> EngineD3D11Attribs& EngineAttribs, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  IRenderDevice **ppDevice, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  IDeviceContext **ppContexts,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  Uint32 NumDeferredContexts ) = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSwapChainD3D11( IRenderDevice *pDevice, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  IDeviceContext *pImmediateContext, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">const</span> SwapChainDesc& SCDesc, </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span>* pNativeWndHandle, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  ISwapChain **ppSwapChain ) = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToD3D11Device(<span class="keywordtype">void</span> *pd3d11NativeDevice, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> *pd3d11ImmediateContext,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> EngineD3D11Attribs& EngineAttribs, </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  IRenderDevice **ppDevice, </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  IDeviceContext **ppContexts,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  Uint32 NumDeferredContexts) = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#ifdef ENGINE_DLL</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">typedef</span> Diligent::IEngineFactoryD3D11* (*GetEngineFactoryD3D11Type)();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="namespace_diligent.html#adfb2dafb678f595c8c1300cf53d14a15">LoadGraphicsEngineD3D11</a>(GetEngineFactoryD3D11Type &GetFactoryFunc)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  GetFactoryFunc = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::string LibName = <span class="stringliteral">"GraphicsEngineD3D11_"</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#if _WIN64</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  LibName += <span class="stringliteral">"64"</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  LibName += <span class="stringliteral">"32"</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  LibName += <span class="stringliteral">"d"</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  LibName += <span class="stringliteral">"r"</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  LibName += <span class="stringliteral">".dll"</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#if PLATFORM_WIN32</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">auto</span> hModule = LoadLibraryA( LibName.c_str() );</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#elif PLATFORM_UNIVERSAL_WINDOWS</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">auto</span> hModule = LoadPackagedLibrary(Diligent::WidenString(LibName).c_str(), 0);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor"># error Unexpected platform</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span>( hModule == NULL )</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  GetFactoryFunc = <span class="keyword">reinterpret_cast<</span>GetEngineFactoryD3D11Type<span class="keyword">></span>( GetProcAddress(hModule, <span class="stringliteral">"GetEngineFactoryD3D11"</span>) );</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>( GetFactoryFunc == NULL )</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load GetEngineFactoryD3D11() from "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  FreeLibrary( hModule );</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  Diligent::IEngineFactoryD3D11* GetEngineFactoryD3D11();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">}</span></div><div class="ttc" id="namespace_diligent_html_adfb2dafb678f595c8c1300cf53d14a15"><div class="ttname"><a href="namespace_diligent.html#adfb2dafb678f595c8c1300cf53d14a15">Diligent::LoadGraphicsEngineD3D11</a></div><div class="ttdeci">void LoadGraphicsEngineD3D11(GetEngineFactoryD3D11Type &GetFactoryFunc)</div><div class="ttdoc">Loads Direct3D11-based engine implementation and exports factory functions. </div><div class="ttdef"><b>Definition:</b> RenderDeviceFactoryD3D11.cpp:339</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "EngineD3D11Attribs.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#if PLATFORM_UNIVERSAL_WINDOWS && defined(ENGINE_DLL)</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"># include "StringTools.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>IEngineFactoryD3D11</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDeviceAndContextsD3D11( <span class="keyword">const</span> EngineD3D11Attribs& EngineAttribs, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  IRenderDevice **ppDevice, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  IDeviceContext **ppContexts,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  Uint32 NumDeferredContexts ) = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSwapChainD3D11( IRenderDevice *pDevice, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  IDeviceContext *pImmediateContext, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">const</span> SwapChainDesc& SCDesc, </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span>* pNativeWndHandle, </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  ISwapChain **ppSwapChain ) = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToD3D11Device(<span class="keywordtype">void</span> *pd3d11NativeDevice, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> *pd3d11ImmediateContext,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> EngineD3D11Attribs& EngineAttribs, </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  IRenderDevice **ppDevice, </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  IDeviceContext **ppContexts,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  Uint32 NumDeferredContexts) = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#ifdef ENGINE_DLL</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">typedef</span> Diligent::IEngineFactoryD3D11* (*GetEngineFactoryD3D11Type)();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="namespace_diligent.html#adfb2dafb678f595c8c1300cf53d14a15">LoadGraphicsEngineD3D11</a>(GetEngineFactoryD3D11Type &GetFactoryFunc)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  GetFactoryFunc = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::string LibName = <span class="stringliteral">"GraphicsEngineD3D11_"</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#if _WIN64</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  LibName += <span class="stringliteral">"64"</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  LibName += <span class="stringliteral">"32"</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  LibName += <span class="stringliteral">"d"</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  LibName += <span class="stringliteral">"r"</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  LibName += <span class="stringliteral">".dll"</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#if PLATFORM_WIN32</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">auto</span> hModule = LoadLibraryA( LibName.c_str() );</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#elif PLATFORM_UNIVERSAL_WINDOWS</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">auto</span> hModule = LoadPackagedLibrary(Diligent::WidenString(LibName).c_str(), 0);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor"># error Unexpected platform</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span>( hModule == NULL )</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  GetFactoryFunc = <span class="keyword">reinterpret_cast<</span>GetEngineFactoryD3D11Type<span class="keyword">></span>( GetProcAddress(hModule, <span class="stringliteral">"GetEngineFactoryD3D11"</span>) );</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>( GetFactoryFunc == NULL )</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load GetEngineFactoryD3D11() from "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  FreeLibrary( hModule );</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  Diligent::IEngineFactoryD3D11* GetEngineFactoryD3D11();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">}</span></div><div class="ttc" id="namespace_diligent_html_adfb2dafb678f595c8c1300cf53d14a15"><div class="ttname"><a href="namespace_diligent.html#adfb2dafb678f595c8c1300cf53d14a15">Diligent::LoadGraphicsEngineD3D11</a></div><div class="ttdeci">void LoadGraphicsEngineD3D11(GetEngineFactoryD3D11Type &GetFactoryFunc)</div><div class="ttdoc">Loads Direct3D11-based engine implementation and exports factory functions. </div><div class="ttdef"><b>Definition:</b> RenderDeviceFactoryD3D11.cpp:339</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_factory_d3_d12_8h_source.html b/doc/html/_render_device_factory_d3_d12_8h_source.html index e6e09190..07741167 100644 --- a/doc/html/_render_device_factory_d3_d12_8h_source.html +++ b/doc/html/_render_device_factory_d3_d12_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">RenderDeviceFactoryD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#if PLATFORM_UNIVERSAL_WINDOWS && defined(ENGINE_DLL)</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor"># include "StringTools.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>IEngineFactoryD3D12</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDeviceAndContextsD3D12( <span class="keyword">const</span> EngineD3D12Attribs& CreationAttribs, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  IRenderDevice **ppDevice, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  IDeviceContext **ppContexts,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  Uint32 NumDeferredContexts) = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToD3D12Device(<span class="keywordtype">void</span> *pd3d12NativeDevice, </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">class</span> ICommandQueueD3D12 *pCommandQueue,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> EngineD3D12Attribs& EngineAttribs, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  IRenderDevice **ppDevice, </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  IDeviceContext **ppContexts,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  Uint32 NumDeferredContexts) = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSwapChainD3D12( IRenderDevice *pDevice, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  IDeviceContext *pImmediateContext, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> SwapChainDesc& SwapChainDesc, </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span>* pNativeWndHandle, </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ISwapChain **ppSwapChain ) = 0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#ifdef ENGINE_DLL</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">typedef</span> Diligent::IEngineFactoryD3D12* (*GetEngineFactoryD3D12Type)();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="namespace_diligent.html#a8b3ac65ac7e5051a36f23aab198b7f26">LoadGraphicsEngineD3D12</a>(GetEngineFactoryD3D12Type &GetFactoryFunc)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  GetFactoryFunc = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::string LibName = <span class="stringliteral">"GraphicsEngineD3D12_"</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#if _WIN64</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  LibName += <span class="stringliteral">"64"</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  LibName += <span class="stringliteral">"32"</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  LibName += <span class="stringliteral">"d"</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  LibName += <span class="stringliteral">"r"</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  LibName += <span class="stringliteral">".dll"</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#if PLATFORM_WIN32</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">auto</span> hModule = LoadLibraryA(LibName.c_str());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#elif PLATFORM_UNIVERSAL_WINDOWS</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">auto</span> hModule = LoadPackagedLibrary(Diligent::WidenString(LibName).c_str(), 0);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor"># error Unexpected platform</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>( hModule == NULL )</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  GetFactoryFunc = <span class="keyword">reinterpret_cast<</span>GetEngineFactoryD3D12Type<span class="keyword">></span>( GetProcAddress(hModule, <span class="stringliteral">"GetEngineFactoryD3D12"</span>) );</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>( GetFactoryFunc == NULL )</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load GetEngineFactoryD3D12() from "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  FreeLibrary( hModule );</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Diligent::IEngineFactoryD3D12* GetEngineFactoryD3D12();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> }</div><div class="ttc" id="namespace_diligent_html_a8b3ac65ac7e5051a36f23aab198b7f26"><div class="ttname"><a href="namespace_diligent.html#a8b3ac65ac7e5051a36f23aab198b7f26">Diligent::LoadGraphicsEngineD3D12</a></div><div class="ttdeci">void LoadGraphicsEngineD3D12(GetEngineFactoryD3D12Type &GetFactoryFunc)</div><div class="ttdoc">Loads Direct3D12-based engine implementation and exports factory functions. </div><div class="ttdef"><b>Definition:</b> RenderDeviceFactoryD3D12.cpp:393</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#if PLATFORM_UNIVERSAL_WINDOWS && defined(ENGINE_DLL)</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor"># include "StringTools.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>IEngineFactoryD3D12</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDeviceAndContextsD3D12( <span class="keyword">const</span> EngineD3D12Attribs& CreationAttribs, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  IRenderDevice **ppDevice, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  IDeviceContext **ppContexts,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  Uint32 NumDeferredContexts) = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToD3D12Device(<span class="keywordtype">void</span> *pd3d12NativeDevice, </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">class</span> ICommandQueueD3D12 *pCommandQueue,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> EngineD3D12Attribs& EngineAttribs, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  IRenderDevice **ppDevice, </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  IDeviceContext **ppContexts,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  Uint32 NumDeferredContexts) = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSwapChainD3D12( IRenderDevice *pDevice, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  IDeviceContext *pImmediateContext, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> SwapChainDesc& SwapChainDesc, </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span>* pNativeWndHandle, </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ISwapChain **ppSwapChain ) = 0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#ifdef ENGINE_DLL</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">typedef</span> Diligent::IEngineFactoryD3D12* (*GetEngineFactoryD3D12Type)();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="namespace_diligent.html#a8b3ac65ac7e5051a36f23aab198b7f26">LoadGraphicsEngineD3D12</a>(GetEngineFactoryD3D12Type &GetFactoryFunc)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  GetFactoryFunc = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::string LibName = <span class="stringliteral">"GraphicsEngineD3D12_"</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#if _WIN64</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  LibName += <span class="stringliteral">"64"</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  LibName += <span class="stringliteral">"32"</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  LibName += <span class="stringliteral">"d"</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  LibName += <span class="stringliteral">"r"</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  LibName += <span class="stringliteral">".dll"</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#if PLATFORM_WIN32</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">auto</span> hModule = LoadLibraryA(LibName.c_str());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#elif PLATFORM_UNIVERSAL_WINDOWS</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">auto</span> hModule = LoadPackagedLibrary(Diligent::WidenString(LibName).c_str(), 0);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor"># error Unexpected platform</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>( hModule == NULL )</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  GetFactoryFunc = <span class="keyword">reinterpret_cast<</span>GetEngineFactoryD3D12Type<span class="keyword">></span>( GetProcAddress(hModule, <span class="stringliteral">"GetEngineFactoryD3D12"</span>) );</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>( GetFactoryFunc == NULL )</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load GetEngineFactoryD3D12() from "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  FreeLibrary( hModule );</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Diligent::IEngineFactoryD3D12* GetEngineFactoryD3D12();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> }</div><div class="ttc" id="namespace_diligent_html_a8b3ac65ac7e5051a36f23aab198b7f26"><div class="ttname"><a href="namespace_diligent.html#a8b3ac65ac7e5051a36f23aab198b7f26">Diligent::LoadGraphicsEngineD3D12</a></div><div class="ttdeci">void LoadGraphicsEngineD3D12(GetEngineFactoryD3D12Type &GetFactoryFunc)</div><div class="ttdoc">Loads Direct3D12-based engine implementation and exports factory functions. </div><div class="ttdef"><b>Definition:</b> RenderDeviceFactoryD3D12.cpp:393</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_factory_open_g_l_8h_source.html b/doc/html/_render_device_factory_open_g_l_8h_source.html index bf2d1f73..a482de39 100644 --- a/doc/html/_render_device_factory_open_g_l_8h_source.html +++ b/doc/html/_render_device_factory_open_g_l_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">RenderDeviceFactoryOpenGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "HLSL2GLSLConverter.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#if defined(PLATFORM_WIN32) || defined(PLATFORM_UNIVERSAL_WINDOWS)</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"># define API_QUALIFIER</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#elif defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"># ifdef ENGINE_DLL</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"># ifdef BUILDING_DLL</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// https://gcc.gnu.org/wiki/Visibility</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"># define API_QUALIFIER __attribute__((visibility("default")))</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define API_QUALIFIER __attribute__((visibility("default")))</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"># define API_QUALIFIER</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">class </span>IEngineFactoryOpenGL</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDeviceAndSwapChainGL(<span class="keyword">const</span> EngineCreationAttribs& CreationAttribs, </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  IRenderDevice **ppDevice,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  IDeviceContext **ppImmediateContext,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> SwapChainDesc& SCDesc,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">void</span> *pNativeWndHandle,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  #<span class="keywordflow">if</span> PLATFORM_LINUX</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">void</span> *pDisplay,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  #endif</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ISwapChain **ppSwapChain ) = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateHLSL2GLSLConverter(IHLSL2GLSLConverter **ppConverter) = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToActiveGLContext( <span class="keyword">const</span> EngineCreationAttribs& CreationAttribs, </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  IRenderDevice **ppDevice,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  IDeviceContext **ppImmediateContext ) = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#if defined(ENGINE_DLL) && (defined(PLATFORM_WIN32) || defined(PLATFORM_UNIVERSAL_WINDOWS))</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">typedef</span> Diligent::IEngineFactoryOpenGL* (*GetEngineFactoryOpenGLType)();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="namespace_diligent.html#a4102302b39db6902d51501d66e2fcfe6">LoadGraphicsEngineOpenGL</a>(GetEngineFactoryOpenGLType &GetFactoryFunc)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  GetFactoryFunc = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  std::string LibName = <span class="stringliteral">"GraphicsEngineOpenGL_"</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#if _WIN64</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  LibName += <span class="stringliteral">"64"</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  LibName += <span class="stringliteral">"32"</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  LibName += <span class="stringliteral">"d"</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  LibName += <span class="stringliteral">"r"</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  LibName += <span class="stringliteral">".dll"</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">auto</span> hModule = LoadLibraryA( LibName.c_str() );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>( hModule == NULL )</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  GetFactoryFunc = <span class="keyword">reinterpret_cast<</span>GetEngineFactoryOpenGLType<span class="keyword">></span>( GetProcAddress(hModule, <span class="stringliteral">"GetEngineFactoryOpenGL"</span>) );</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>( GetFactoryFunc == NULL )</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load GetEngineFactoryOpenGL() from "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  FreeLibrary( hModule );</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// Do not forget to call System.loadLibrary("GraphicsEngineOpenGL") in Java on Android!</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  API_QUALIFIER</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  Diligent::IEngineFactoryOpenGL* GetEngineFactoryOpenGL();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "HLSL2GLSLConverter.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#if defined(PLATFORM_WIN32) || defined(PLATFORM_UNIVERSAL_WINDOWS)</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"># define API_QUALIFIER</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#elif defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"># ifdef ENGINE_DLL</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"># ifdef BUILDING_DLL</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// https://gcc.gnu.org/wiki/Visibility</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"># define API_QUALIFIER __attribute__((visibility("default")))</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"># define API_QUALIFIER __attribute__((visibility("default")))</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"># define API_QUALIFIER</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">class </span>IEngineFactoryOpenGL</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDeviceAndSwapChainGL(<span class="keyword">const</span> EngineCreationAttribs& CreationAttribs, </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  IRenderDevice **ppDevice,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  IDeviceContext **ppImmediateContext,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> SwapChainDesc& SCDesc,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">void</span> *pNativeWndHandle,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  #<span class="keywordflow">if</span> PLATFORM_LINUX</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">void</span> *pDisplay,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  #endif</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ISwapChain **ppSwapChain ) = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateHLSL2GLSLConverter(IHLSL2GLSLConverter **ppConverter) = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToActiveGLContext( <span class="keyword">const</span> EngineCreationAttribs& CreationAttribs, </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  IRenderDevice **ppDevice,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  IDeviceContext **ppImmediateContext ) = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#if defined(ENGINE_DLL) && (defined(PLATFORM_WIN32) || defined(PLATFORM_UNIVERSAL_WINDOWS))</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">typedef</span> Diligent::IEngineFactoryOpenGL* (*GetEngineFactoryOpenGLType)();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="namespace_diligent.html#a4102302b39db6902d51501d66e2fcfe6">LoadGraphicsEngineOpenGL</a>(GetEngineFactoryOpenGLType &GetFactoryFunc)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  GetFactoryFunc = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  std::string LibName = <span class="stringliteral">"GraphicsEngineOpenGL_"</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#if _WIN64</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  LibName += <span class="stringliteral">"64"</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  LibName += <span class="stringliteral">"32"</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  LibName += <span class="stringliteral">"d"</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  LibName += <span class="stringliteral">"r"</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  LibName += <span class="stringliteral">".dll"</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">auto</span> hModule = LoadLibraryA( LibName.c_str() );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>( hModule == NULL )</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  GetFactoryFunc = <span class="keyword">reinterpret_cast<</span>GetEngineFactoryOpenGLType<span class="keyword">></span>( GetProcAddress(hModule, <span class="stringliteral">"GetEngineFactoryOpenGL"</span>) );</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>( GetFactoryFunc == NULL )</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  LOG_ERROR_MESSAGE( <span class="stringliteral">"Failed to load GetEngineFactoryOpenGL() from "</span>, LibName, <span class="stringliteral">" library."</span> );</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  FreeLibrary( hModule );</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// Do not forget to call System.loadLibrary("GraphicsEngineOpenGL") in Java on Android!</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  API_QUALIFIER</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  Diligent::IEngineFactoryOpenGL* GetEngineFactoryOpenGL();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespace_diligent_html_a4102302b39db6902d51501d66e2fcfe6"><div class="ttname"><a href="namespace_diligent.html#a4102302b39db6902d51501d66e2fcfe6">Diligent::LoadGraphicsEngineOpenGL</a></div><div class="ttdeci">void LoadGraphicsEngineOpenGL(GetEngineFactoryOpenGLType &GetFactoryFunc)</div><div class="ttdoc">Loads OpenGL-based engine implementation and exports factory functions. </div><div class="ttdef"><b>Definition:</b> RenderDeviceFactoryOpenGL.cpp:230</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_g_l_8h_source.html b/doc/html/_render_device_g_l_8h_source.html index bcf2f133..5a6dd888 100644 --- a/doc/html/_render_device_g_l_8h_source.html +++ b/doc/html/_render_device_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RenderDeviceGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "HLSL2GLSLConverter.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// {B4B395B9-AC99-4E8A-B7E1-9DCA0D485618}</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_RenderDeviceGL =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> { 0xb4b395b9, 0xac99, 0x4e8a, { 0xb7, 0xe1, 0x9d, 0xca, 0xd, 0x48, 0x56, 0x18 } };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_render_device_g_l.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device_g_l.html">IRenderDeviceGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_g_l.html#a7411430f035826a4bb9228e75fc0472c">CreateTextureFromGLHandle</a>(Uint32 GLHandle, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a> &TexDesc, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_g_l.html#afe347ae560c5847a3b49c4492ea4cb21">CreateBufferFromGLHandle</a>(Uint32 GLHandle, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a> &BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer) = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_g_l_html_a7411430f035826a4bb9228e75fc0472c"><div class="ttname"><a href="class_diligent_1_1_i_render_device_g_l.html#a7411430f035826a4bb9228e75fc0472c">Diligent::IRenderDeviceGL::CreateTextureFromGLHandle</a></div><div class="ttdeci">virtual void CreateTextureFromGLHandle(Uint32 GLHandle, const TextureDesc &TexDesc, ITexture **ppTexture)=0</div><div class="ttdoc">Creates a texture from OpenGL handle. </div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "HLSL2GLSLConverter.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// {B4B395B9-AC99-4E8A-B7E1-9DCA0D485618}</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_RenderDeviceGL =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> { 0xb4b395b9, 0xac99, 0x4e8a, { 0xb7, 0xe1, 0x9d, 0xca, 0xd, 0x48, 0x56, 0x18 } };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_render_device_g_l.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device_g_l.html">IRenderDeviceGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_g_l.html#a7411430f035826a4bb9228e75fc0472c">CreateTextureFromGLHandle</a>(Uint32 GLHandle, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a> &TexDesc, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture) = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_render_device_g_l.html#afe347ae560c5847a3b49c4492ea4cb21">CreateBufferFromGLHandle</a>(Uint32 GLHandle, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a> &BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer) = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_g_l_html_a7411430f035826a4bb9228e75fc0472c"><div class="ttname"><a href="class_diligent_1_1_i_render_device_g_l.html#a7411430f035826a4bb9228e75fc0472c">Diligent::IRenderDeviceGL::CreateTextureFromGLHandle</a></div><div class="ttdeci">virtual void CreateTextureFromGLHandle(Uint32 GLHandle, const TextureDesc &TexDesc, ITexture **ppTexture)=0</div><div class="ttdoc">Creates a texture from OpenGL handle. </div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_g_l_e_s_8h_source.html b/doc/html/_render_device_g_l_e_s_8h_source.html index 9a4f165f..5557664e 100644 --- a/doc/html/_render_device_g_l_e_s_8h_source.html +++ b/doc/html/_render_device_g_l_e_s_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RenderDeviceGLES.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceGL.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <android/native_window.h></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <EGL/egl.h></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// {F705A0D9-2023-4DE1-8B3C-C56E4CEB8DB7}</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">static</span> <span class="keyword">const</span> Diligent::INTERFACE_ID IID_RenderDeviceGLES =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> { 0xf705a0d9, 0x2023, 0x4de1, { 0x8b, 0x3c, 0xc5, 0x6e, 0x4c, 0xeb, 0x8d, 0xb7 } };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_render_device_g_l_e_s.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device_g_l_e_s.html">IRenderDeviceGLES</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_render_device_g_l.html">Diligent::IRenderDeviceGL</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Invalidate() = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Suspend() = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> EGLint Resume( ANativeWindow* window ) = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceGL.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <android/native_window.h></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <EGL/egl.h></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// {F705A0D9-2023-4DE1-8B3C-C56E4CEB8DB7}</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">static</span> <span class="keyword">const</span> Diligent::INTERFACE_ID IID_RenderDeviceGLES =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> { 0xf705a0d9, 0x2023, 0x4de1, { 0x8b, 0x3c, 0xc5, 0x6e, 0x4c, 0xeb, 0x8d, 0xb7 } };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_render_device_g_l_e_s.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_render_device_g_l_e_s.html">IRenderDeviceGLES</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_render_device_g_l.html">Diligent::IRenderDeviceGL</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Invalidate() = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Suspend() = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> EGLint Resume( ANativeWindow* window ) = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_g_l_e_s_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device_g_l_e_s.html">Diligent::IRenderDeviceGLES</a></div><div class="ttdoc">Interface to the render device object implemented in OpenGLES. </div><div class="ttdef"><b>Definition:</b> RenderDeviceGLES.h:41</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device_g_l.html">Diligent::IRenderDeviceGL</a></div><div class="ttdoc">Interface to the render device object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> RenderDeviceGL.h:41</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_g_l_e_s_impl_8h_source.html b/doc/html/_render_device_g_l_e_s_impl_8h_source.html index 0be23d7d..a0db543f 100644 --- a/doc/html/_render_device_g_l_e_s_impl_8h_source.html +++ b/doc/html/_render_device_g_l_e_s_impl_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">RenderDeviceGLESImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "RenderDeviceGLImpl.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>RenderDeviceGLESImpl : <span class="keyword">public</span> RenderDeviceGLImpl</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  RenderDeviceGLESImpl( IReferenceCounters *pRefCounters, IMemoryAllocator &RawMemAllocator, <span class="keyword">const</span> ContextInitInfo &InitInfo );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Invalidate();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Suspend();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> EGLint Resume( ANativeWindow* window );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "RenderDeviceGLImpl.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>RenderDeviceGLESImpl : <span class="keyword">public</span> RenderDeviceGLImpl</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  RenderDeviceGLESImpl( IReferenceCounters *pRefCounters, IMemoryAllocator &RawMemAllocator, <span class="keyword">const</span> ContextInitInfo &InitInfo );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Invalidate();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Suspend();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> EGLint Resume( ANativeWindow* window );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_render_device_g_l_impl_8h_source.html b/doc/html/_render_device_g_l_impl_8h_source.html index b8868f78..b365ee81 100644 --- a/doc/html/_render_device_g_l_impl_8h_source.html +++ b/doc/html/_render_device_g_l_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RenderDeviceGLImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "GLContext.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "VAOCache.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "FBOCache.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TexRegionRender.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">enum class</span> GPU_VENDOR</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  UNKNOWN, </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  INTEL,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  ATI,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  NVIDIA</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">struct </span>GPUInfo</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  GPU_VENDOR Vendor;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  GPUInfo() :</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  Vendor( GPU_VENDOR::UNKNOWN )</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {}</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_g_l_impl.html"> 53</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase</a><IGLDeviceBaseInterface></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase<IGLDeviceBaseInterface></a> <a class="code" href="class_diligent_1_1_render_device_base.html">TRenderDeviceBase</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a>( IReferenceCounters *pRefCounters, IMemoryAllocator &RawMemAllocator, <span class="keyword">const</span> ContextInitInfo &InitInfo );</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  ~<a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">void</span> CreateBuffer(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBufferLayout, <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBuffer(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBufferLayout)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">void</span> CreateShader(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>, <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> **ppShader, <span class="keywordtype">bool</span> bIsDeviceInternal );</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateShader(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>, <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> **ppShader)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">void</span> CreateTexture(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &Data, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture, <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTexture(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &Data, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> CreateSampler(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>, <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> **ppSampler, <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSampler(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>, <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> **ppSampler)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> CreatePipelineState( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc, <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPipelineState, <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreatePipelineState( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc, <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPipelineState )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTextureFromGLHandle(Uint32 GLHandle, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a> &TexDesc, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBufferFromGLHandle(Uint32 GLHandle, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a> &BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> GPUInfo& GetGPUInfo(){ <span class="keywordflow">return</span> m_GPUInfo; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  FBOCache& GetFBOCache(GLContext::NativeGLContextType Context);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">void</span> OnReleaseTexture(<a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  VAOCache& GetVAOCache(GLContext::NativeGLContextType Context);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> OnDestroyPSO(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPSO);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span> OnDestroyBuffer(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_g_l_impl.html">ShaderGLImpl</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html">TextureViewGLImpl</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html">SwapChainGLImpl</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">friend</span> <span class="keyword">class </span>GLContextState;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// Must be the first member because its constructor initializes OpenGL</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  GLContext m_GLContext; </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  std::unordered_set<String> m_ExtensionStrings;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  ThreadingTools::LockFlag m_VAOCacheLockFlag;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::unordered_map<GLContext::NativeGLContextType, VAOCache> m_VAOCache;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  ThreadingTools::LockFlag m_FBOCacheLockFlag;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  std::unordered_map<GLContext::NativeGLContextType, FBOCache> m_FBOCache;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  GPUInfo m_GPUInfo;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  TexRegionRender m_TexRegionRender;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> TestTextureFormat( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat )<span class="keyword">override</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">bool</span> CheckExtension(<span class="keyword">const</span> Char *ExtensionString);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> FlagSupportedTexFormats();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">void</span> QueryDeviceCaps();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> };</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "GLContext.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "VAOCache.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "FBOCache.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TexRegionRender.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">enum class</span> GPU_VENDOR</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  UNKNOWN, </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  INTEL,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  ATI,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  NVIDIA</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">struct </span>GPUInfo</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  GPU_VENDOR Vendor;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  GPUInfo() :</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  Vendor( GPU_VENDOR::UNKNOWN )</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {}</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_diligent_1_1_render_device_g_l_impl.html"> 53</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase</a><IGLDeviceBaseInterface></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase<IGLDeviceBaseInterface></a> <a class="code" href="class_diligent_1_1_render_device_base.html">TRenderDeviceBase</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a>( IReferenceCounters *pRefCounters, IMemoryAllocator &RawMemAllocator, <span class="keyword">const</span> ContextInitInfo &InitInfo );</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  ~<a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">void</span> CreateBuffer(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBufferLayout, <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBuffer(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a>& BuffDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_data.html">BufferData</a> &BuffData, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBufferLayout)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">void</span> CreateShader(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>, <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> **ppShader, <span class="keywordtype">bool</span> bIsDeviceInternal );</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateShader(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>, <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> **ppShader)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">void</span> CreateTexture(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &Data, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture, <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTexture(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &Data, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> CreateSampler(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>, <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> **ppSampler, <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSampler(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>, <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> **ppSampler)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> CreatePipelineState( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc, <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPipelineState, <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreatePipelineState( <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_pipeline_state_desc.html">PipelineStateDesc</a> &PipelineDesc, <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> **ppPipelineState )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateTextureFromGLHandle(Uint32 GLHandle, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a> &TexDesc, <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> **ppTexture)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateBufferFromGLHandle(Uint32 GLHandle, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_buffer_desc.html">BufferDesc</a> &BuffDesc, <a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> GPUInfo& GetGPUInfo(){ <span class="keywordflow">return</span> m_GPUInfo; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  FBOCache& GetFBOCache(GLContext::NativeGLContextType Context);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">void</span> OnReleaseTexture(<a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  VAOCache& GetVAOCache(GLContext::NativeGLContextType Context);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> OnDestroyPSO(<a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPSO);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span> OnDestroyBuffer(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *pBuffer);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_g_l_impl.html">ShaderGLImpl</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_buffer_g_l_impl.html">BufferGLImpl</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html">TextureViewGLImpl</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html">SwapChainGLImpl</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">friend</span> <span class="keyword">class </span>GLContextState;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// Must be the first member because its constructor initializes OpenGL</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  GLContext m_GLContext; </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  std::unordered_set<String> m_ExtensionStrings;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  ThreadingTools::LockFlag m_VAOCacheLockFlag;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::unordered_map<GLContext::NativeGLContextType, VAOCache> m_VAOCache;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  ThreadingTools::LockFlag m_FBOCacheLockFlag;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  std::unordered_map<GLContext::NativeGLContextType, FBOCache> m_FBOCache;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  GPUInfo m_GPUInfo;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  TexRegionRender m_TexRegionRender;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> TestTextureFormat( <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat )<span class="keyword">override</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">bool</span> CheckExtension(<span class="keyword">const</span> Char *ExtensionString);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> FlagSupportedTexFormats();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">void</span> QueryDeviceCaps();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> };</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="class_diligent_1_1_texture_base_g_l_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_g_l.html">Diligent::TextureBaseGL</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureGL interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseGL.h:41</div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_shader_g_l_impl_html"><div class="ttname"><a href="class_diligent_1_1_shader_g_l_impl.html">Diligent::ShaderGLImpl</a></div><div class="ttdoc">Implementation of the Diligent::IShaderGL interface. </div><div class="ttdef"><b>Definition:</b> ShaderGLImpl.h:67</div></div> @@ -97,7 +97,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_resource_mapping_8h_source.html b/doc/html/_resource_mapping_8h_source.html index 01e9f104..3ba98861 100644 --- a/doc/html/_resource_mapping_8h_source.html +++ b/doc/html/_resource_mapping_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ResourceMapping.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// {6C1AC7A6-B429-4139-9433-9E54E93E384A}</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">static</span> constexpr INTERFACE_ID IID_ResourceMapping =</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  { 0x6c1ac7a6, 0xb429, 0x4139, { 0x94, 0x33, 0x9e, 0x54, 0xe9, 0x3e, 0x38, 0x4a } };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_entry.html"> 38</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_resource_mapping_entry.html">ResourceMappingEntry</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_entry.html#a62f99ae784081dd78b7a3336c3e3662d"> 41</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a62f99ae784081dd78b7a3336c3e3662d">Name</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_entry.html#a82aeec5138b18d665bce3a4d5bec1bfb"> 44</a></span>  <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *<a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a82aeec5138b18d665bce3a4d5bec1bfb">pObject</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  Uint32 ArrayIndex;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_entry.html#a808d47001e26ace2b2387f93b90f9bfe"> 52</a></span>  <a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a808d47001e26ace2b2387f93b90f9bfe">ResourceMappingEntry</a>( <span class="keyword">const</span> Char* _Name = <span class="keyword">nullptr</span>, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *_pObject = <span class="keyword">nullptr</span>, Uint32 _ArrayIndex = 0) : </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a62f99ae784081dd78b7a3336c3e3662d">Name</a>( _Name ), </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a82aeec5138b18d665bce3a4d5bec1bfb">pObject</a>( _pObject ),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  ArrayIndex(_ArrayIndex)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_desc.html"> 60</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_resource_mapping_desc.html">ResourceMappingDesc</a></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8"> 65</a></span>  <a class="code" href="struct_diligent_1_1_resource_mapping_entry.html">ResourceMappingEntry</a> *<a class="code" href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8">pEntries</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_desc.html#a7832dd87176dbba566b4e77c8c2c26cf"> 72</a></span>  <a class="code" href="struct_diligent_1_1_resource_mapping_desc.html#a7832dd87176dbba566b4e77c8c2c26cf">ResourceMappingDesc</a>() : <a class="code" href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8">pEntries</a>( nullptr ){}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_resource_mapping.html"> 80</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#a0f3ac990caec67c9e02a3e0872763527">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#a89e4adea2dde57c68564fee88f4f4bb9">AddResource</a>( <span class="keyword">const</span> Char *Name, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, <span class="keywordtype">bool</span> bIsUnique ) = 0;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#af643b8dbc85ae5181d9daaab89bfe839">AddResourceArray</a>( <span class="keyword">const</span> Char *Name, Uint32 StartIndex, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 NumElements, <span class="keywordtype">bool</span> bIsUnique ) = 0;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#a8d3b4662cc80f6e6747a51736ae23ad0">RemoveResourceByName</a>( <span class="keyword">const</span> Char *Name, Uint32 ArrayIndex = 0 ) = 0;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#ad6c3c3a143fbf01ce135ac9130ba7d61">GetResource</a>( <span class="keyword">const</span> Char *Name, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> **ppResource, Uint32 ArrayIndex = 0 ) = 0;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#a7729bb877a951908260978f8646fab4c">GetSize</a>() = 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  };</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// {6C1AC7A6-B429-4139-9433-9E54E93E384A}</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">static</span> constexpr INTERFACE_ID IID_ResourceMapping =</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  { 0x6c1ac7a6, 0xb429, 0x4139, { 0x94, 0x33, 0x9e, 0x54, 0xe9, 0x3e, 0x38, 0x4a } };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_entry.html"> 38</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_resource_mapping_entry.html">ResourceMappingEntry</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_entry.html#a62f99ae784081dd78b7a3336c3e3662d"> 41</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a62f99ae784081dd78b7a3336c3e3662d">Name</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_entry.html#a82aeec5138b18d665bce3a4d5bec1bfb"> 44</a></span>  <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *<a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a82aeec5138b18d665bce3a4d5bec1bfb">pObject</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  Uint32 ArrayIndex;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_entry.html#a808d47001e26ace2b2387f93b90f9bfe"> 52</a></span>  <a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a808d47001e26ace2b2387f93b90f9bfe">ResourceMappingEntry</a>( <span class="keyword">const</span> Char* _Name = <span class="keyword">nullptr</span>, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *_pObject = <span class="keyword">nullptr</span>, Uint32 _ArrayIndex = 0) : </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a62f99ae784081dd78b7a3336c3e3662d">Name</a>( _Name ), </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="struct_diligent_1_1_resource_mapping_entry.html#a82aeec5138b18d665bce3a4d5bec1bfb">pObject</a>( _pObject ),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  ArrayIndex(_ArrayIndex)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_desc.html"> 60</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_resource_mapping_desc.html">ResourceMappingDesc</a></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8"> 65</a></span>  <a class="code" href="struct_diligent_1_1_resource_mapping_entry.html">ResourceMappingEntry</a> *<a class="code" href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8">pEntries</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_resource_mapping_desc.html#a7832dd87176dbba566b4e77c8c2c26cf"> 72</a></span>  <a class="code" href="struct_diligent_1_1_resource_mapping_desc.html#a7832dd87176dbba566b4e77c8c2c26cf">ResourceMappingDesc</a>() : <a class="code" href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8">pEntries</a>( nullptr ){}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_resource_mapping.html"> 80</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#a0f3ac990caec67c9e02a3e0872763527">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#a89e4adea2dde57c68564fee88f4f4bb9">AddResource</a>( <span class="keyword">const</span> Char *Name, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, <span class="keywordtype">bool</span> bIsUnique ) = 0;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#af643b8dbc85ae5181d9daaab89bfe839">AddResourceArray</a>( <span class="keyword">const</span> Char *Name, Uint32 StartIndex, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 NumElements, <span class="keywordtype">bool</span> bIsUnique ) = 0;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#a8d3b4662cc80f6e6747a51736ae23ad0">RemoveResourceByName</a>( <span class="keyword">const</span> Char *Name, Uint32 ArrayIndex = 0 ) = 0;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#ad6c3c3a143fbf01ce135ac9130ba7d61">GetResource</a>( <span class="keyword">const</span> Char *Name, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> **ppResource, Uint32 ArrayIndex = 0 ) = 0;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_i_resource_mapping.html#a7729bb877a951908260978f8646fab4c">GetSize</a>() = 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  };</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> <div class="ttc" id="struct_diligent_1_1_resource_mapping_desc_html_a3d3600aeb1bb02e90078c19f5a917fe8"><div class="ttname"><a href="struct_diligent_1_1_resource_mapping_desc.html#a3d3600aeb1bb02e90078c19f5a917fe8">Diligent::ResourceMappingDesc::pEntries</a></div><div class="ttdeci">ResourceMappingEntry * pEntries</div><div class="ttdoc">Pointer to the array of resource mapping entries. The last element in the array must be default value...</div><div class="ttdef"><b>Definition:</b> ResourceMapping.h:65</div></div> <div class="ttc" id="class_diligent_1_1_i_resource_mapping_html_a7729bb877a951908260978f8646fab4c"><div class="ttname"><a href="class_diligent_1_1_i_resource_mapping.html#a7729bb877a951908260978f8646fab4c">Diligent::IResourceMapping::GetSize</a></div><div class="ttdeci">virtual size_t GetSize()=0</div><div class="ttdoc">Returns the size of the resource mapping, i.e. the number of objects. </div></div> <div class="ttc" id="class_diligent_1_1_i_resource_mapping_html_af643b8dbc85ae5181d9daaab89bfe839"><div class="ttname"><a href="class_diligent_1_1_i_resource_mapping.html#af643b8dbc85ae5181d9daaab89bfe839">Diligent::IResourceMapping::AddResourceArray</a></div><div class="ttdeci">virtual void AddResourceArray(const Char *Name, Uint32 StartIndex, IDeviceObject *const *ppObjects, Uint32 NumElements, bool bIsUnique)=0</div><div class="ttdoc">Adds resource array to the mapping. </div></div> @@ -90,7 +90,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_resource_mapping_impl_8h_source.html b/doc/html/_resource_mapping_impl_8h_source.html index 88948841..3aa318b2 100644 --- a/doc/html/_resource_mapping_impl_8h_source.html +++ b/doc/html/_resource_mapping_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ResourceMappingImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">struct </span>ResMappingHashKey</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ResMappingHashKey(<span class="keyword">const</span> Char* Str, <span class="keywordtype">bool</span> bMakeCopy, Uint32 ArrInd):</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  StrKey(Str, bMakeCopy),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  ArrayIndex(ArrInd)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ResMappingHashKey(ResMappingHashKey &&rhs) : </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  StrKey(<a class="code" href="namespacestd.html">std</a>::move(rhs.StrKey)),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ArrayIndex(rhs.ArrayIndex)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> ResMappingHashKey& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> StrKey == RHS.StrKey && ArrayIndex == RHS.ArrayIndex;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">size_t</span> GetHash()<span class="keyword">const</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span>( Hash == 0 )</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  Hash = ComputeHash( StrKey, ArrayIndex );</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> Hash;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  ResMappingHashKey( <span class="keyword">const</span> ResMappingHashKey& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ResMappingHashKey& operator = ( <span class="keyword">const</span> ResMappingHashKey& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  ResMappingHashKey& operator = ( ResMappingHashKey&& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  HashMapStringKey StrKey;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  Uint32 ArrayIndex;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">mutable</span> <span class="keywordtype">size_t</span> Hash = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::ResMappingHashKey></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Diligent::ResMappingHashKey &Key )<span class="keyword"> const</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> Key.GetHash();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  } </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  };</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="class_diligent_1_1_resource_mapping_impl.html"> 93</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_resource_mapping_impl.html">ResourceMappingImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><IResourceMapping></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<IResourceMapping></a> <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="class_diligent_1_1_resource_mapping_impl.html#a5a3832b08344cc202f3e56bb5354c467"> 100</a></span>  <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#a5a3832b08344cc202f3e56bb5354c467">ResourceMappingImpl</a>(IReferenceCounters *pRefCounters, IMemoryAllocator &RawMemAllocator) : </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>(pRefCounters),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_HashTable(STD_ALLOCATOR_RAW_MEM(HashTableElem, RawMemAllocator, <span class="stringliteral">"Allocator for unordered_map< ResMappingHashKey, RefCntAutoPtr<IDeviceObject> >"</span>) )</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  ~<a class="code" href="class_diligent_1_1_resource_mapping_impl.html">ResourceMappingImpl</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#a2659a974bccf43ba5c97ad2c34707c94">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#a5563645976cf8dfc1107a6d4a663459a">AddResource</a>( <span class="keyword">const</span> Char *Name, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, <span class="keywordtype">bool</span> bIsUnique )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#a00d7867a060a590fd24b637dcd0c1c86">AddResourceArray</a>( <span class="keyword">const</span> Char *Name, Uint32 StartIndex, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> * <span class="keyword">const</span>* ppObjects, Uint32 NumElements, <span class="keywordtype">bool</span> bIsUnique )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#ae73c8979801d3aa935a820a1c7258c93">RemoveResourceByName</a>( <span class="keyword">const</span> Char *Name, Uint32 ArrayIndex )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#ac165e83d618f1dac9b1ebf4d59101d62">GetResource</a>( <span class="keyword">const</span> Char *Name, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> **ppResource, Uint32 ArrayIndex )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#afd919d655c3e00f4cb8064f6a5e8ae29">GetSize</a>()override final;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  private:</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="namespace_threading_tools.html">ThreadingTools</a>::LockHelper Lock();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="namespace_threading_tools.html">ThreadingTools</a>::LockFlag m_LockFlag;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  typedef <a class="code" href="namespacestd.html">std</a>::pair<const ResMappingHashKey, <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a><<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>> > HashTableElem;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="namespacestd.html">std</a>::unordered_map< ResMappingHashKey, <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a><<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>>, <a class="code" href="namespacestd.html">std</a>::hash<ResMappingHashKey>, <a class="code" href="namespacestd.html">std</a>::equal_to<ResMappingHashKey>, STDAllocatorRawMem<HashTableElem> > m_HashTable;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  };</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">struct </span>ResMappingHashKey</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ResMappingHashKey(<span class="keyword">const</span> Char* Str, <span class="keywordtype">bool</span> bMakeCopy, Uint32 ArrInd):</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  StrKey(Str, bMakeCopy),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  ArrayIndex(ArrInd)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ResMappingHashKey(ResMappingHashKey &&rhs) : </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  StrKey(<a class="code" href="namespacestd.html">std</a>::move(rhs.StrKey)),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ArrayIndex(rhs.ArrayIndex)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> ResMappingHashKey& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> StrKey == RHS.StrKey && ArrayIndex == RHS.ArrayIndex;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">size_t</span> GetHash()<span class="keyword">const</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span>( Hash == 0 )</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  Hash = ComputeHash( StrKey, ArrayIndex );</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> Hash;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  ResMappingHashKey( <span class="keyword">const</span> ResMappingHashKey& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ResMappingHashKey& operator = ( <span class="keyword">const</span> ResMappingHashKey& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  ResMappingHashKey& operator = ( ResMappingHashKey&& ) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  HashMapStringKey StrKey;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  Uint32 ArrayIndex;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">mutable</span> <span class="keywordtype">size_t</span> Hash = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::ResMappingHashKey></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">size_t</span> operator()( <span class="keyword">const</span> Diligent::ResMappingHashKey &Key )<span class="keyword"> const</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> Key.GetHash();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  } </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  };</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="class_diligent_1_1_resource_mapping_impl.html"> 93</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_resource_mapping_impl.html">ResourceMappingImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><IResourceMapping></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<IResourceMapping></a> <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="class_diligent_1_1_resource_mapping_impl.html#a5a3832b08344cc202f3e56bb5354c467"> 100</a></span>  <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#a5a3832b08344cc202f3e56bb5354c467">ResourceMappingImpl</a>(IReferenceCounters *pRefCounters, IMemoryAllocator &RawMemAllocator) : </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>(pRefCounters),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_HashTable(STD_ALLOCATOR_RAW_MEM(HashTableElem, RawMemAllocator, <span class="stringliteral">"Allocator for unordered_map< ResMappingHashKey, RefCntAutoPtr<IDeviceObject> >"</span>) )</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  ~<a class="code" href="class_diligent_1_1_resource_mapping_impl.html">ResourceMappingImpl</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#a2659a974bccf43ba5c97ad2c34707c94">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#a5563645976cf8dfc1107a6d4a663459a">AddResource</a>( <span class="keyword">const</span> Char *Name, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, <span class="keywordtype">bool</span> bIsUnique )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#a00d7867a060a590fd24b637dcd0c1c86">AddResourceArray</a>( <span class="keyword">const</span> Char *Name, Uint32 StartIndex, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> * <span class="keyword">const</span>* ppObjects, Uint32 NumElements, <span class="keywordtype">bool</span> bIsUnique )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#ae73c8979801d3aa935a820a1c7258c93">RemoveResourceByName</a>( <span class="keyword">const</span> Char *Name, Uint32 ArrayIndex )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#ac165e83d618f1dac9b1ebf4d59101d62">GetResource</a>( <span class="keyword">const</span> Char *Name, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> **ppResource, Uint32 ArrayIndex )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_resource_mapping_impl.html#afd919d655c3e00f4cb8064f6a5e8ae29">GetSize</a>()override final;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  private:</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="namespace_threading_tools.html">ThreadingTools</a>::LockHelper Lock();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="namespace_threading_tools.html">ThreadingTools</a>::LockFlag m_LockFlag;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  typedef <a class="code" href="namespacestd.html">std</a>::pair<const ResMappingHashKey, <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a><<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>> > HashTableElem;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="namespacestd.html">std</a>::unordered_map< ResMappingHashKey, <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr</a><<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>>, <a class="code" href="namespacestd.html">std</a>::hash<ResMappingHashKey>, <a class="code" href="namespacestd.html">std</a>::equal_to<ResMappingHashKey>, STDAllocatorRawMem<HashTableElem> > m_HashTable;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  };</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> <div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_ring_buffer_8h_source.html b/doc/html/_ring_buffer_8h_source.html index 0edabc61..3929b5b3 100644 --- a/doc/html/_ring_buffer_8h_source.html +++ b/doc/html/_ring_buffer_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">RingBuffer.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <deque></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ring_buffer.html"> 38</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> OffsetType;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">struct </span>FrameTailAttribs</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  FrameTailAttribs(<a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> fv, OffsetType off, OffsetType sz) : </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  FenceValue(fv),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  Offset(off),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  Size(sz)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// Fence value associated with the command list in which </span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// the allocation could have been referenced last time</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> FenceValue;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  OffsetType Offset;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  OffsetType Size;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">static</span> <span class="keyword">const</span> OffsetType InvalidOffset = <span class="keyword">static_cast<</span>OffsetType<span class="keyword">></span>(-1);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>(OffsetType MaxSize, <a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a> &Allocator)noexcept : </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_CompletedFrameTails(0, FrameTailAttribs(0,0,0), STD_ALLOCATOR_RAW_MEM(FrameTailAttribs, Allocator, <span class="stringliteral">"Allocator for vector<FrameNumOffsetPair>"</span> )),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_MaxSize(MaxSize)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>(<a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>&& rhs)noexcept : </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_CompletedFrameTails(std::move(rhs.m_CompletedFrameTails)),</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_Head(rhs.m_Head),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_Tail(rhs.m_Tail),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_MaxSize(rhs.m_MaxSize),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_UsedSize(rhs.m_UsedSize),</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_CurrFrameSize(rhs.m_CurrFrameSize)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  rhs.m_Head = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  rhs.m_Tail = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  rhs.m_MaxSize = 0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  rhs.m_UsedSize = 0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  rhs.m_CurrFrameSize = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>& operator = (<a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>&& rhs)noexcept</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_CompletedFrameTails = std::move(rhs.m_CompletedFrameTails);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_Head = rhs.m_Head;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_Tail = rhs.m_Tail;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_MaxSize = rhs.m_MaxSize;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_UsedSize = rhs.m_UsedSize;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_CurrFrameSize = rhs.m_CurrFrameSize;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  rhs.m_MaxSize = 0;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  rhs.m_Head = 0;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  rhs.m_Tail = 0;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  rhs.m_UsedSize = 0;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  rhs.m_CurrFrameSize = 0;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  ~<a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>()</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  VERIFY(m_UsedSize==0, <span class="stringliteral">"All space in the ring buffer must be released"</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  OffsetType Allocate(OffsetType Size)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(IsFull())</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> InvalidOffset;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (m_Tail >= m_Head )</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Head Tail MaxSize</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// [ xxxxxxxxxxxxxxxxx ]</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// </span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">//</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span> (m_Tail + Size <= m_MaxSize)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">auto</span> Offset = m_Tail;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_Tail += Size;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_UsedSize += Size;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_CurrFrameSize += Size;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> Offset;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(Size <= m_Head)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// Allocate from the beginning of the buffer</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  OffsetType AddSize = (m_MaxSize - m_Tail) + Size;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_UsedSize += AddSize;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_CurrFrameSize += AddSize;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_Tail = Size;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (m_Tail + Size <= m_Head )</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">//</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// Tail Head </span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// | | </span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// [xxxx xxxxxxxxxxxxxxxxxxxxxxxxxx]</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">//</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">auto</span> Offset = m_Tail;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_Tail += Size;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  m_UsedSize += Size;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  m_CurrFrameSize += Size;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> Offset;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> InvalidOffset;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// FenceValue is the fence value associated with the command list in which the tail</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// could have been referenced last time</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/managing-resource-lifetimes/</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">void</span> FinishCurrentFrame(<a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> FenceValue)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_CompletedFrameTails.emplace_back(FenceValue, m_Tail, m_CurrFrameSize);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_CurrFrameSize = 0;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// CompletedFenceValue indicates GPU progress</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/managing-resource-lifetimes/</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">void</span> ReleaseCompletedFrames(<a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> CompletedFenceValue)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// We can release all tails whose associated fence value is less than or equal to CompletedFenceValue</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">while</span>(!m_CompletedFrameTails.empty() && m_CompletedFrameTails.front().FenceValue <= CompletedFenceValue)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &OldestFrameTail = m_CompletedFrameTails.front();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  VERIFY_EXPR(OldestFrameTail.Size <= m_UsedSize);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_UsedSize -= OldestFrameTail.Size;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_Head = OldestFrameTail.Offset;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_CompletedFrameTails.pop_front();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  OffsetType GetMaxSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_MaxSize;}</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordtype">bool</span> IsFull()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_UsedSize==m_MaxSize; };</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">bool</span> IsEmpty()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_UsedSize==0; };</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  OffsetType GetUsedSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_UsedSize;}</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// Consider the following scenario for a 1024-byte buffer:</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// Allocate(512)</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">//</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// h t m</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// |xxxxx| |</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">// FinishCurrentFrame(0)</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">//</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// t0</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">// h t m</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// |xxxxx| |</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// ReleaseCompletedFrames(1)</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">//</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// h </span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// t m</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// FinishCurrentFrame(1)</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">//</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// t1 </span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// h </span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// t m</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// Allocate(512)</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">//</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// t1 t </span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// h m</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// | |xxxxx|</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// Allocate(512)</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">//</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// t </span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="comment">// t1 </span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">// h m</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// |xxxxx|xxxxx|</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// FinishCurrentFrame(2)</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">// </span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// t </span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// t1 </span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">// t2 </span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// h m</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// |xxxxx|xxxxx|</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// At this point there will be two tails in the queue, both at 512. m_UsedSize will be 0. When</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// ReleaseCompletedFrames(2) is called, there wil be no way to find out if the current frame is 0 </span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// or the entire buffer if we don't store the frame size</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  std::deque< FrameTailAttribs, STDAllocatorRawMem<FrameTailAttribs> > m_CompletedFrameTails;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  OffsetType m_Head = 0;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  OffsetType m_Tail = 0;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  OffsetType m_MaxSize = 0;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  OffsetType m_UsedSize = 0;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  OffsetType m_CurrFrameSize = 0;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  };</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <deque></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_ring_buffer.html"> 38</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> OffsetType;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">struct </span>FrameTailAttribs</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  FrameTailAttribs(<a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> fv, OffsetType off, OffsetType sz) : </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  FenceValue(fv),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  Offset(off),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  Size(sz)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// Fence value associated with the command list in which </span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// the allocation could have been referenced last time</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> FenceValue;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  OffsetType Offset;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  OffsetType Size;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">static</span> <span class="keyword">const</span> OffsetType InvalidOffset = <span class="keyword">static_cast<</span>OffsetType<span class="keyword">></span>(-1);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>(OffsetType MaxSize, <a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a> &Allocator)noexcept : </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_CompletedFrameTails(0, FrameTailAttribs(0,0,0), STD_ALLOCATOR_RAW_MEM(FrameTailAttribs, Allocator, <span class="stringliteral">"Allocator for vector<FrameNumOffsetPair>"</span> )),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_MaxSize(MaxSize)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>(<a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>&& rhs)noexcept : </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_CompletedFrameTails(std::move(rhs.m_CompletedFrameTails)),</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_Head(rhs.m_Head),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_Tail(rhs.m_Tail),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_MaxSize(rhs.m_MaxSize),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_UsedSize(rhs.m_UsedSize),</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_CurrFrameSize(rhs.m_CurrFrameSize)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  rhs.m_Head = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  rhs.m_Tail = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  rhs.m_MaxSize = 0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  rhs.m_UsedSize = 0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  rhs.m_CurrFrameSize = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>& operator = (<a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>&& rhs)noexcept</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_CompletedFrameTails = std::move(rhs.m_CompletedFrameTails);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_Head = rhs.m_Head;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_Tail = rhs.m_Tail;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_MaxSize = rhs.m_MaxSize;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_UsedSize = rhs.m_UsedSize;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_CurrFrameSize = rhs.m_CurrFrameSize;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  rhs.m_MaxSize = 0;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  rhs.m_Head = 0;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  rhs.m_Tail = 0;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  rhs.m_UsedSize = 0;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  rhs.m_CurrFrameSize = 0;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  ~<a class="code" href="class_diligent_1_1_ring_buffer.html">RingBuffer</a>()</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  VERIFY(m_UsedSize==0, <span class="stringliteral">"All space in the ring buffer must be released"</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  OffsetType Allocate(OffsetType Size)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(IsFull())</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> InvalidOffset;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (m_Tail >= m_Head )</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Head Tail MaxSize</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// [ xxxxxxxxxxxxxxxxx ]</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// </span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">//</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span> (m_Tail + Size <= m_MaxSize)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">auto</span> Offset = m_Tail;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_Tail += Size;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_UsedSize += Size;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_CurrFrameSize += Size;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> Offset;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(Size <= m_Head)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// Allocate from the beginning of the buffer</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  OffsetType AddSize = (m_MaxSize - m_Tail) + Size;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_UsedSize += AddSize;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_CurrFrameSize += AddSize;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_Tail = Size;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (m_Tail + Size <= m_Head )</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">//</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// Tail Head </span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// | | </span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// [xxxx xxxxxxxxxxxxxxxxxxxxxxxxxx]</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">//</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">auto</span> Offset = m_Tail;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_Tail += Size;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  m_UsedSize += Size;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  m_CurrFrameSize += Size;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> Offset;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> InvalidOffset;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// FenceValue is the fence value associated with the command list in which the tail</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// could have been referenced last time</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/managing-resource-lifetimes/</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">void</span> FinishCurrentFrame(<a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> FenceValue)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_CompletedFrameTails.emplace_back(FenceValue, m_Tail, m_CurrFrameSize);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_CurrFrameSize = 0;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// CompletedFenceValue indicates GPU progress</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/managing-resource-lifetimes/</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">void</span> ReleaseCompletedFrames(<a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> CompletedFenceValue)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// We can release all tails whose associated fence value is less than or equal to CompletedFenceValue</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">while</span>(!m_CompletedFrameTails.empty() && m_CompletedFrameTails.front().FenceValue <= CompletedFenceValue)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &OldestFrameTail = m_CompletedFrameTails.front();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  VERIFY_EXPR(OldestFrameTail.Size <= m_UsedSize);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_UsedSize -= OldestFrameTail.Size;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_Head = OldestFrameTail.Offset;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_CompletedFrameTails.pop_front();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  OffsetType GetMaxSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_MaxSize;}</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordtype">bool</span> IsFull()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_UsedSize==m_MaxSize; };</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">bool</span> IsEmpty()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_UsedSize==0; };</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  OffsetType GetUsedSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_UsedSize;}</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// Consider the following scenario for a 1024-byte buffer:</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// Allocate(512)</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">//</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// h t m</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// |xxxxx| |</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">// FinishCurrentFrame(0)</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">//</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// t0</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">// h t m</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// |xxxxx| |</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// ReleaseCompletedFrames(1)</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">//</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// h </span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// t m</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// FinishCurrentFrame(1)</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">//</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// t1 </span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// h </span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// t m</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// Allocate(512)</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">//</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// t1 t </span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// h m</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// | |xxxxx|</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// Allocate(512)</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">//</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// t </span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="comment">// t1 </span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">// h m</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// |xxxxx|xxxxx|</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// FinishCurrentFrame(2)</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">// </span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// t </span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// t1 </span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">// t2 </span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// h m</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// |xxxxx|xxxxx|</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// At this point there will be two tails in the queue, both at 512. m_UsedSize will be 0. When</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// ReleaseCompletedFrames(2) is called, there wil be no way to find out if the current frame is 0 </span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// or the entire buffer if we don't store the frame size</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  std::deque< FrameTailAttribs, STDAllocatorRawMem<FrameTailAttribs> > m_CompletedFrameTails;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  OffsetType m_Head = 0;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  OffsetType m_Tail = 0;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  OffsetType m_MaxSize = 0;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  OffsetType m_UsedSize = 0;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  OffsetType m_CurrFrameSize = 0;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  };</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a217aba875c8d4bd7843939762d6ff492"><div class="ttname"><a href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Diligent::Uint64</a></div><div class="ttdeci">uint64_t Uint64</div><div class="ttdoc">64-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:38</div></div> <div class="ttc" id="class_diligent_1_1_i_memory_allocator_html"><div class="ttname"><a href="class_diligent_1_1_i_memory_allocator.html">Diligent::IMemoryAllocator</a></div><div class="ttdoc">Base interface for a raw memory allocator. </div><div class="ttdef"><b>Definition:</b> MemoryAllocator.h:35</div></div> <div class="ttc" id="class_diligent_1_1_ring_buffer_html"><div class="ttname"><a href="class_diligent_1_1_ring_buffer.html">Diligent::RingBuffer</a></div><div class="ttdoc">Implementation of a ring buffer. The class is not thread-safe. </div><div class="ttdef"><b>Definition:</b> RingBuffer.h:38</div></div> diff --git a/doc/html/_root_signature_8h_source.html b/doc/html/_root_signature_8h_source.html index 2640db53..d6b698de 100644 --- a/doc/html/_root_signature_8h_source.html +++ b/doc/html/_root_signature_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">RootSignature.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "ShaderD3DBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderTypeFromShaderVisibility(D3D12_SHADER_VISIBILITY ShaderVisibility);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> D3D12_SHADER_VISIBILITY GetShaderVisibility(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> D3D12_DESCRIPTOR_HEAP_TYPE dbgHeapTypeFromRangeType(D3D12_DESCRIPTOR_RANGE_TYPE RangeType);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>RootParameter</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  RootParameter(D3D12_ROOT_PARAMETER_TYPE ParameterType, Uint32 RootIndex, UINT Register, UINT RegisterSpace, D3D12_SHADER_VISIBILITY Visibility, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType) : </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_RootIndex(RootIndex),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_ShaderVarType(VarType)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  VERIFY(ParameterType == D3D12_ROOT_PARAMETER_TYPE_CBV || ParameterType == D3D12_ROOT_PARAMETER_TYPE_SRV || ParameterType == D3D12_ROOT_PARAMETER_TYPE_UAV, <span class="stringliteral">"Unexpected parameter type - verify argument list"</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_RootParam.ParameterType = ParameterType;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_RootParam.ShaderVisibility = Visibility;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_RootParam.Descriptor.ShaderRegister = Register;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_RootParam.Descriptor.RegisterSpace = RegisterSpace;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  RootParameter( D3D12_ROOT_PARAMETER_TYPE ParameterType, Uint32 RootIndex, UINT Register, UINT RegisterSpace, UINT NumDwords, D3D12_SHADER_VISIBILITY Visibility, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType) : </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_RootIndex(RootIndex),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_ShaderVarType(VarType)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  VERIFY(ParameterType == D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS, <span class="stringliteral">"Unexpected parameter type - verify argument list"</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_RootParam.ParameterType = ParameterType;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_RootParam.ShaderVisibility = Visibility;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_RootParam.Constants.Num32BitValues = NumDwords;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_RootParam.Constants.ShaderRegister = Register;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_RootParam.Constants.RegisterSpace = RegisterSpace;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  RootParameter( D3D12_ROOT_PARAMETER_TYPE ParameterType, Uint32 RootIndex, UINT NumRanges, D3D12_DESCRIPTOR_RANGE *pRanges, D3D12_SHADER_VISIBILITY Visibility, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType) : </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_RootIndex(RootIndex),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_ShaderVarType(VarType)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  VERIFY(ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, <span class="stringliteral">"Unexpected parameter type - verify argument list"</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  VERIFY_EXPR(pRanges != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_RootParam.ParameterType = ParameterType;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_RootParam.ShaderVisibility = Visibility;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_RootParam.DescriptorTable.NumDescriptorRanges = NumRanges;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_RootParam.DescriptorTable.pDescriptorRanges = pRanges;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">for</span>(Uint32 r=0; r < NumRanges; ++r)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  pRanges[r].RangeType = static_cast<D3D12_DESCRIPTOR_RANGE_TYPE>(-1);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  RootParameter(<span class="keyword">const</span> RootParameter &RP):</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_RootParam( RP.m_RootParam),</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_DescriptorTableSize(RP.m_DescriptorTableSize),</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_ShaderVarType(RP.m_ShaderVarType),</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_RootIndex(RP.m_RootIndex)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  VERIFY(m_RootParam.ParameterType != D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, <span class="stringliteral">"Use another constructor to copy descriptor table"</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  RootParameter(<span class="keyword">const</span> RootParameter &RP, UINT NumRanges, D3D12_DESCRIPTOR_RANGE *pRanges):</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_RootParam( RP.m_RootParam),</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_DescriptorTableSize(RP.m_DescriptorTableSize),</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_ShaderVarType(RP.m_ShaderVarType),</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_RootIndex(RP.m_RootIndex)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  VERIFY(m_RootParam.ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, <span class="stringliteral">"Root parameter is expected to be a descriptor table"</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  VERIFY(NumRanges >= m_RootParam.DescriptorTable.NumDescriptorRanges, <span class="stringliteral">"New table must be larger than source one"</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">auto</span> &DstTbl = m_RootParam.DescriptorTable;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  DstTbl.NumDescriptorRanges = NumRanges;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  DstTbl.pDescriptorRanges = pRanges;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &SrcTbl = RP.m_RootParam.DescriptorTable;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  memcpy(pRanges, SrcTbl.pDescriptorRanges, SrcTbl.NumDescriptorRanges * <span class="keyword">sizeof</span>(D3D12_DESCRIPTOR_RANGE));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  Uint32 dbgTableSize = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">for</span> (Uint32 r = 0; r < SrcTbl.NumDescriptorRanges; ++r)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &Range = SrcTbl.pDescriptorRanges[r];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  dbgTableSize = std::max(dbgTableSize, Range.OffsetInDescriptorsFromTableStart + Range.NumDescriptors);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  VERIFY(dbgTableSize == m_DescriptorTableSize, <span class="stringliteral">"Incorrect descriptor table size"</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">for</span> (Uint32 r = SrcTbl.NumDescriptorRanges; r < DstTbl.NumDescriptorRanges; ++r)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  pRanges[r].RangeType = <span class="keyword">static_cast<</span>D3D12_DESCRIPTOR_RANGE_TYPE<span class="keyword">></span>(-1);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  RootParameter& operator = (<span class="keyword">const</span> RootParameter &RP) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  RootParameter& operator = (RootParameter &&RP) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> SetDescriptorRange( UINT RangeIndex, D3D12_DESCRIPTOR_RANGE_TYPE Type, UINT Register, UINT Count, UINT Space = 0, UINT OffsetFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  VERIFY(m_RootParam.ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, <span class="stringliteral">"Incorrect parameter table: descriptor table is expected"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">auto</span> &Tbl = m_RootParam.DescriptorTable;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  VERIFY(RangeIndex < Tbl.NumDescriptorRanges, <span class="stringliteral">"Invalid descriptor range index"</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  D3D12_DESCRIPTOR_RANGE &range = <span class="keyword">const_cast<</span>D3D12_DESCRIPTOR_RANGE &<span class="keyword">></span>(Tbl.pDescriptorRanges[RangeIndex]);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  VERIFY(range.RangeType == static_cast<D3D12_DESCRIPTOR_RANGE_TYPE>(-1), <span class="stringliteral">"Descriptor range has already been initialized. m_DescriptorTableSize may be updated incorrectly"</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  range.RangeType = Type;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  range.NumDescriptors = Count;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  range.BaseShaderRegister = Register;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  range.RegisterSpace = Space;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  range.OffsetInDescriptorsFromTableStart = OffsetFromTableStart;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_DescriptorTableSize = std::max(m_DescriptorTableSize, OffsetFromTableStart + Count);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> GetShaderVariableType()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_ShaderVarType; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  Uint32 GetDescriptorTableSize()<span class="keyword">const</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  VERIFY(m_RootParam.ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, <span class="stringliteral">"Incorrect parameter table: descriptor table is expected"</span>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> m_DescriptorTableSize;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  D3D12_SHADER_VISIBILITY GetShaderVisibility()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_RootParam.ShaderVisibility;}</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  D3D12_ROOT_PARAMETER_TYPE GetParameterType()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_RootParam.ParameterType;}</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  Uint32 GetRootIndex()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_RootIndex;}</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">operator</span> <span class="keyword">const</span> D3D12_ROOT_PARAMETER&()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_RootParam;}</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> m_ShaderVarType = <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a><span class="keyword">></span>(-1);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  D3D12_ROOT_PARAMETER m_RootParam = {};</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  Uint32 m_DescriptorTableSize = 0;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  Uint32 m_RootIndex = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> };</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="class_diligent_1_1_root_signature.html"> 161</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a>();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordtype">void</span> AllocateStaticSamplers(<a class="code" href="class_diligent_1_1_i_shader.html">IShader</a>* <span class="keyword">const</span> *ppShaders, Uint32 NumShaders);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordtype">void</span> Finalize(ID3D12Device *pd3d12Device);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  ID3D12RootSignature* GetD3D12RootSignature()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pd3d12RootSignature;}</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">void</span> InitResourceCache(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12Impl, <span class="keyword">class</span> ShaderResourceCacheD3D12& ResourceCache, IMemoryAllocator &CacheMemAllocator)<span class="keyword">const</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">void</span> InitStaticSampler(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> String &TextureName, <span class="keyword">const</span> D3DShaderResourceAttribs &ShaderResAttribs);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">void</span> AllocateResourceSlot(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> D3DShaderResourceAttribs &ShaderResAttribs, D3D12_DESCRIPTOR_RANGE_TYPE RangeType, Uint32 &RootIndex, Uint32 &OffsetFromTableStart);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// This method should be thread-safe as it does not modify any object state</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  void (<a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a>::*CommitDescriptorHandles)(<span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">class </span>CommandContext &Ctx, </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">bool</span> IsCompute)<span class="keyword">const</span> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  void (<a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a>::*TransitionAndCommitDescriptorHandles)(<span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keyword">class </span>CommandContext &Ctx, </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">bool</span> IsCompute)<span class="keyword">const</span> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">void</span> TransitionResources(ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">class</span> CommandContext &Ctx)<span class="keyword">const</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">void</span> CommitRootViews(ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">class</span> CommandContext &Ctx, </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">bool</span> IsCompute,</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  Uint32 ContextId)<span class="keyword">const</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  Uint32 GetTotalSrvCbvUavSlots(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType)<span class="keyword">const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  VERIFY_EXPR(VarType >= 0 && VarType < <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> m_TotalSrvCbvUavSlots[VarType];</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  Uint32 GetTotalSamplerSlots(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType)<span class="keyword">const</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  VERIFY_EXPR(VarType >= 0 && VarType < <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> m_TotalSamplerSlots[VarType];</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">void</span> dbgVerifyRootParameters()<span class="keyword">const</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  Uint32 m_TotalSrvCbvUavSlots[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>];</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  Uint32 m_TotalSamplerSlots[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>];</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  CComPtr<ID3D12RootSignature> m_pd3d12RootSignature;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">class </span>RootParamsManager</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  RootParamsManager(IMemoryAllocator &MemAllocator);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  RootParamsManager(<span class="keyword">const</span> RootParamsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  RootParamsManager& operator= (<span class="keyword">const</span> RootParamsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  RootParamsManager(RootParamsManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  RootParamsManager& operator= (RootParamsManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  Uint32 GetNumRootTables()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumRootTables;}</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  Uint32 GetNumRootViews()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumRootViews;}</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">const</span> RootParameter& GetRootTable(Uint32 TableInd)<span class="keyword">const</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  VERIFY_EXPR(TableInd < m_NumRootTables);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> m_pRootTables[TableInd];</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  RootParameter& GetRootTable(Uint32 TableInd)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  VERIFY_EXPR(TableInd < m_NumRootTables);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> m_pRootTables[TableInd];</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const</span> RootParameter& GetRootView(Uint32 ViewInd)<span class="keyword">const</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  VERIFY_EXPR(ViewInd < m_NumRootViews);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> m_pRootViews[ViewInd];</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  RootParameter& GetRootView(Uint32 ViewInd)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  VERIFY_EXPR(ViewInd < m_NumRootViews);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> m_pRootViews[ViewInd];</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordtype">void</span> AddRootView(D3D12_ROOT_PARAMETER_TYPE ParameterType, Uint32 RootIndex, UINT Register, D3D12_SHADER_VISIBILITY Visibility, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordtype">void</span> AddRootTable(Uint32 RootIndex, D3D12_SHADER_VISIBILITY Visibility, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 NumRangesInNewTable = 1);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordtype">void</span> AddDescriptorRanges(Uint32 RootTableInd, Uint32 NumExtraRanges = 1);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">template</span><<span class="keyword">class</span> TOperation></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">void</span> ProcessRootTables(TOperation)<span class="keyword">const</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">size_t</span> GetRequiredMemorySize(Uint32 NumExtraRootTables, Uint32 NumExtraRootViews, Uint32 NumExtraDescriptorRanges)<span class="keyword">const</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  D3D12_DESCRIPTOR_RANGE* Extend(Uint32 NumExtraRootTables, Uint32 NumExtraRootViews, Uint32 NumExtraDescriptorRanges, Uint32 RootTableToAddRanges = static_cast<Uint32>(-1));</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  IMemoryAllocator &m_MemAllocator;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  std::unique_ptr<void, STDDeleter<void, IMemoryAllocator>> m_pMemory;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  Uint32 m_NumRootTables = 0;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  Uint32 m_NumRootViews = 0;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  Uint32 m_TotalDescriptorRanges = 0;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  RootParameter *m_pRootTables = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  RootParameter *m_pRootViews = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  };</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">static</span> constexpr Uint8 InvalidRootTableIndex = <span class="keyword">static_cast<</span>Uint8<span class="keyword">></span>(-1);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// The array below contains array index of a CBV/SRV/UAV root table </span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// in m_RootParams (NOT the Root Index!), for every variable type </span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// (static, mutable, dynamic) and every shader type,</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// or -1, if the table is not yet assigned to the combination</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  Uint8 m_SrvCbvUavRootTablesMap[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a> * 6];</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// This array contains the same data for Sampler root table</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  Uint8 m_SamplerRootTablesMap[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a> * 6];</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  RootParamsManager m_RootParams;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">struct </span>StaticSamplerAttribs</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  UINT ShaderRegister = <span class="keyword">static_cast<</span>UINT<span class="keyword">></span>(-1);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  UINT ArraySize = 0;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  UINT RegisterSpace = 0;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  D3D12_SHADER_VISIBILITY ShaderVisibility = <span class="keyword">static_cast<</span>D3D12_SHADER_VISIBILITY<span class="keyword">></span>(-1);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  StaticSamplerAttribs(){}</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  StaticSamplerAttribs(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>& SamDesc, D3D12_SHADER_VISIBILITY Visibility) : </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>(SamDesc),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  ShaderVisibility(Visibility)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  {}</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  };</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// Note: sizeof(m_StaticSamplers) == 56 (MS compiler, release x64)</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  std::vector<StaticSamplerAttribs, STDAllocatorRawMem<StaticSamplerAttribs> > m_StaticSamplers;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  IMemoryAllocator &m_MemAllocator;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// Commits descriptor handles for static and mutable variables</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">template</span><<span class="keywordtype">bool</span> PerformResourceTransitions></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordtype">void</span> CommitDescriptorHandlesInternal_SM(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">class</span> CommandContext &Ctx, </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordtype">bool</span> IsCompute)<span class="keyword">const</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">template</span><<span class="keywordtype">bool</span> PerformResourceTransitions></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// Commits descriptor handles for static, mutable, and dynamic variables</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordtype">void</span> CommitDescriptorHandlesInternal_SMD(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">class</span> CommandContext &Ctx, </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">bool</span> IsCompute)<span class="keyword">const</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> };</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "ShaderD3DBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderTypeFromShaderVisibility(D3D12_SHADER_VISIBILITY ShaderVisibility);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> D3D12_SHADER_VISIBILITY GetShaderVisibility(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> D3D12_DESCRIPTOR_HEAP_TYPE dbgHeapTypeFromRangeType(D3D12_DESCRIPTOR_RANGE_TYPE RangeType);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>RootParameter</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  RootParameter(D3D12_ROOT_PARAMETER_TYPE ParameterType, Uint32 RootIndex, UINT Register, UINT RegisterSpace, D3D12_SHADER_VISIBILITY Visibility, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType) : </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_RootIndex(RootIndex),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_ShaderVarType(VarType)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  VERIFY(ParameterType == D3D12_ROOT_PARAMETER_TYPE_CBV || ParameterType == D3D12_ROOT_PARAMETER_TYPE_SRV || ParameterType == D3D12_ROOT_PARAMETER_TYPE_UAV, <span class="stringliteral">"Unexpected parameter type - verify argument list"</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_RootParam.ParameterType = ParameterType;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_RootParam.ShaderVisibility = Visibility;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_RootParam.Descriptor.ShaderRegister = Register;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_RootParam.Descriptor.RegisterSpace = RegisterSpace;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  RootParameter( D3D12_ROOT_PARAMETER_TYPE ParameterType, Uint32 RootIndex, UINT Register, UINT RegisterSpace, UINT NumDwords, D3D12_SHADER_VISIBILITY Visibility, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType) : </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_RootIndex(RootIndex),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_ShaderVarType(VarType)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  VERIFY(ParameterType == D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS, <span class="stringliteral">"Unexpected parameter type - verify argument list"</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_RootParam.ParameterType = ParameterType;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_RootParam.ShaderVisibility = Visibility;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_RootParam.Constants.Num32BitValues = NumDwords;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_RootParam.Constants.ShaderRegister = Register;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_RootParam.Constants.RegisterSpace = RegisterSpace;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  RootParameter( D3D12_ROOT_PARAMETER_TYPE ParameterType, Uint32 RootIndex, UINT NumRanges, D3D12_DESCRIPTOR_RANGE *pRanges, D3D12_SHADER_VISIBILITY Visibility, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType) : </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_RootIndex(RootIndex),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_ShaderVarType(VarType)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  VERIFY(ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, <span class="stringliteral">"Unexpected parameter type - verify argument list"</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  VERIFY_EXPR(pRanges != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_RootParam.ParameterType = ParameterType;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_RootParam.ShaderVisibility = Visibility;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_RootParam.DescriptorTable.NumDescriptorRanges = NumRanges;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_RootParam.DescriptorTable.pDescriptorRanges = pRanges;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">for</span>(Uint32 r=0; r < NumRanges; ++r)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  pRanges[r].RangeType = static_cast<D3D12_DESCRIPTOR_RANGE_TYPE>(-1);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  RootParameter(<span class="keyword">const</span> RootParameter &RP):</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_RootParam( RP.m_RootParam),</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_DescriptorTableSize(RP.m_DescriptorTableSize),</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_ShaderVarType(RP.m_ShaderVarType),</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_RootIndex(RP.m_RootIndex)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  VERIFY(m_RootParam.ParameterType != D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, <span class="stringliteral">"Use another constructor to copy descriptor table"</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  RootParameter(<span class="keyword">const</span> RootParameter &RP, UINT NumRanges, D3D12_DESCRIPTOR_RANGE *pRanges):</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_RootParam( RP.m_RootParam),</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_DescriptorTableSize(RP.m_DescriptorTableSize),</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_ShaderVarType(RP.m_ShaderVarType),</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_RootIndex(RP.m_RootIndex)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  VERIFY(m_RootParam.ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, <span class="stringliteral">"Root parameter is expected to be a descriptor table"</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  VERIFY(NumRanges >= m_RootParam.DescriptorTable.NumDescriptorRanges, <span class="stringliteral">"New table must be larger than source one"</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">auto</span> &DstTbl = m_RootParam.DescriptorTable;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  DstTbl.NumDescriptorRanges = NumRanges;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  DstTbl.pDescriptorRanges = pRanges;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &SrcTbl = RP.m_RootParam.DescriptorTable;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  memcpy(pRanges, SrcTbl.pDescriptorRanges, SrcTbl.NumDescriptorRanges * <span class="keyword">sizeof</span>(D3D12_DESCRIPTOR_RANGE));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  Uint32 dbgTableSize = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">for</span> (Uint32 r = 0; r < SrcTbl.NumDescriptorRanges; ++r)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &Range = SrcTbl.pDescriptorRanges[r];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  dbgTableSize = std::max(dbgTableSize, Range.OffsetInDescriptorsFromTableStart + Range.NumDescriptors);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  VERIFY(dbgTableSize == m_DescriptorTableSize, <span class="stringliteral">"Incorrect descriptor table size"</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">for</span> (Uint32 r = SrcTbl.NumDescriptorRanges; r < DstTbl.NumDescriptorRanges; ++r)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  pRanges[r].RangeType = <span class="keyword">static_cast<</span>D3D12_DESCRIPTOR_RANGE_TYPE<span class="keyword">></span>(-1);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  RootParameter& operator = (<span class="keyword">const</span> RootParameter &RP) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  RootParameter& operator = (RootParameter &&RP) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> SetDescriptorRange( UINT RangeIndex, D3D12_DESCRIPTOR_RANGE_TYPE Type, UINT Register, UINT Count, UINT Space = 0, UINT OffsetFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  VERIFY(m_RootParam.ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, <span class="stringliteral">"Incorrect parameter table: descriptor table is expected"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">auto</span> &Tbl = m_RootParam.DescriptorTable;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  VERIFY(RangeIndex < Tbl.NumDescriptorRanges, <span class="stringliteral">"Invalid descriptor range index"</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  D3D12_DESCRIPTOR_RANGE &range = <span class="keyword">const_cast<</span>D3D12_DESCRIPTOR_RANGE &<span class="keyword">></span>(Tbl.pDescriptorRanges[RangeIndex]);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  VERIFY(range.RangeType == static_cast<D3D12_DESCRIPTOR_RANGE_TYPE>(-1), <span class="stringliteral">"Descriptor range has already been initialized. m_DescriptorTableSize may be updated incorrectly"</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  range.RangeType = Type;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  range.NumDescriptors = Count;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  range.BaseShaderRegister = Register;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  range.RegisterSpace = Space;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  range.OffsetInDescriptorsFromTableStart = OffsetFromTableStart;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_DescriptorTableSize = std::max(m_DescriptorTableSize, OffsetFromTableStart + Count);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> GetShaderVariableType()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_ShaderVarType; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  Uint32 GetDescriptorTableSize()<span class="keyword">const</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  VERIFY(m_RootParam.ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE, <span class="stringliteral">"Incorrect parameter table: descriptor table is expected"</span>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> m_DescriptorTableSize;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  D3D12_SHADER_VISIBILITY GetShaderVisibility()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_RootParam.ShaderVisibility;}</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  D3D12_ROOT_PARAMETER_TYPE GetParameterType()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_RootParam.ParameterType;}</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  Uint32 GetRootIndex()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_RootIndex;}</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">operator</span> <span class="keyword">const</span> D3D12_ROOT_PARAMETER&()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_RootParam;}</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> m_ShaderVarType = <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a><span class="keyword">></span>(-1);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  D3D12_ROOT_PARAMETER m_RootParam = {};</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  Uint32 m_DescriptorTableSize = 0;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  Uint32 m_RootIndex = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> };</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="class_diligent_1_1_root_signature.html"> 161</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a>();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordtype">void</span> AllocateStaticSamplers(<a class="code" href="class_diligent_1_1_i_shader.html">IShader</a>* <span class="keyword">const</span> *ppShaders, Uint32 NumShaders);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordtype">void</span> Finalize(ID3D12Device *pd3d12Device);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  ID3D12RootSignature* GetD3D12RootSignature()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pd3d12RootSignature;}</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">void</span> InitResourceCache(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12Impl, <span class="keyword">class</span> ShaderResourceCacheD3D12& ResourceCache, IMemoryAllocator &CacheMemAllocator)<span class="keyword">const</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">void</span> InitStaticSampler(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> String &TextureName, <span class="keyword">const</span> D3DShaderResourceAttribs &ShaderResAttribs);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">void</span> AllocateResourceSlot(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> D3DShaderResourceAttribs &ShaderResAttribs, D3D12_DESCRIPTOR_RANGE_TYPE RangeType, Uint32 &RootIndex, Uint32 &OffsetFromTableStart);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// This method should be thread-safe as it does not modify any object state</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  void (<a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a>::*CommitDescriptorHandles)(<span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">class </span>CommandContext &Ctx, </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">bool</span> IsCompute)<span class="keyword">const</span> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  void (<a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a>::*TransitionAndCommitDescriptorHandles)(<span class="keyword">class </span><a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keyword">class </span>CommandContext &Ctx, </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">bool</span> IsCompute)<span class="keyword">const</span> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">void</span> TransitionResources(ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">class</span> CommandContext &Ctx)<span class="keyword">const</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">void</span> CommitRootViews(ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">class</span> CommandContext &Ctx, </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">bool</span> IsCompute,</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  Uint32 ContextId)<span class="keyword">const</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  Uint32 GetTotalSrvCbvUavSlots(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType)<span class="keyword">const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  VERIFY_EXPR(VarType >= 0 && VarType < <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> m_TotalSrvCbvUavSlots[VarType];</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  Uint32 GetTotalSamplerSlots(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType)<span class="keyword">const</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  VERIFY_EXPR(VarType >= 0 && VarType < <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> m_TotalSamplerSlots[VarType];</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">void</span> dbgVerifyRootParameters()<span class="keyword">const</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  Uint32 m_TotalSrvCbvUavSlots[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>];</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  Uint32 m_TotalSamplerSlots[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>];</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  CComPtr<ID3D12RootSignature> m_pd3d12RootSignature;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">class </span>RootParamsManager</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  RootParamsManager(IMemoryAllocator &MemAllocator);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  RootParamsManager(<span class="keyword">const</span> RootParamsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  RootParamsManager& operator= (<span class="keyword">const</span> RootParamsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  RootParamsManager(RootParamsManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  RootParamsManager& operator= (RootParamsManager&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  Uint32 GetNumRootTables()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumRootTables;}</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  Uint32 GetNumRootViews()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumRootViews;}</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">const</span> RootParameter& GetRootTable(Uint32 TableInd)<span class="keyword">const</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  VERIFY_EXPR(TableInd < m_NumRootTables);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> m_pRootTables[TableInd];</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  RootParameter& GetRootTable(Uint32 TableInd)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  VERIFY_EXPR(TableInd < m_NumRootTables);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> m_pRootTables[TableInd];</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const</span> RootParameter& GetRootView(Uint32 ViewInd)<span class="keyword">const</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  VERIFY_EXPR(ViewInd < m_NumRootViews);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> m_pRootViews[ViewInd];</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  RootParameter& GetRootView(Uint32 ViewInd)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  VERIFY_EXPR(ViewInd < m_NumRootViews);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> m_pRootViews[ViewInd];</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordtype">void</span> AddRootView(D3D12_ROOT_PARAMETER_TYPE ParameterType, Uint32 RootIndex, UINT Register, D3D12_SHADER_VISIBILITY Visibility, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordtype">void</span> AddRootTable(Uint32 RootIndex, D3D12_SHADER_VISIBILITY Visibility, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 NumRangesInNewTable = 1);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordtype">void</span> AddDescriptorRanges(Uint32 RootTableInd, Uint32 NumExtraRanges = 1);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">template</span><<span class="keyword">class</span> TOperation></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">void</span> ProcessRootTables(TOperation)<span class="keyword">const</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">size_t</span> GetRequiredMemorySize(Uint32 NumExtraRootTables, Uint32 NumExtraRootViews, Uint32 NumExtraDescriptorRanges)<span class="keyword">const</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  D3D12_DESCRIPTOR_RANGE* Extend(Uint32 NumExtraRootTables, Uint32 NumExtraRootViews, Uint32 NumExtraDescriptorRanges, Uint32 RootTableToAddRanges = static_cast<Uint32>(-1));</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  IMemoryAllocator &m_MemAllocator;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  std::unique_ptr<void, STDDeleter<void, IMemoryAllocator>> m_pMemory;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  Uint32 m_NumRootTables = 0;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  Uint32 m_NumRootViews = 0;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  Uint32 m_TotalDescriptorRanges = 0;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  RootParameter *m_pRootTables = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  RootParameter *m_pRootViews = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  };</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">static</span> constexpr Uint8 InvalidRootTableIndex = <span class="keyword">static_cast<</span>Uint8<span class="keyword">></span>(-1);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// The array below contains array index of a CBV/SRV/UAV root table </span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// in m_RootParams (NOT the Root Index!), for every variable type </span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// (static, mutable, dynamic) and every shader type,</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// or -1, if the table is not yet assigned to the combination</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  Uint8 m_SrvCbvUavRootTablesMap[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a> * 6];</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// This array contains the same data for Sampler root table</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  Uint8 m_SamplerRootTablesMap[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a> * 6];</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  RootParamsManager m_RootParams;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">struct </span>StaticSamplerAttribs</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  UINT ShaderRegister = <span class="keyword">static_cast<</span>UINT<span class="keyword">></span>(-1);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  UINT ArraySize = 0;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  UINT RegisterSpace = 0;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  D3D12_SHADER_VISIBILITY ShaderVisibility = <span class="keyword">static_cast<</span>D3D12_SHADER_VISIBILITY<span class="keyword">></span>(-1);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  StaticSamplerAttribs(){}</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  StaticSamplerAttribs(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>& SamDesc, D3D12_SHADER_VISIBILITY Visibility) : </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>(SamDesc),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  ShaderVisibility(Visibility)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  {}</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  };</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// Note: sizeof(m_StaticSamplers) == 56 (MS compiler, release x64)</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  std::vector<StaticSamplerAttribs, STDAllocatorRawMem<StaticSamplerAttribs> > m_StaticSamplers;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  IMemoryAllocator &m_MemAllocator;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// Commits descriptor handles for static and mutable variables</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">template</span><<span class="keywordtype">bool</span> PerformResourceTransitions></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordtype">void</span> CommitDescriptorHandlesInternal_SM(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">class</span> CommandContext &Ctx, </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordtype">bool</span> IsCompute)<span class="keyword">const</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">template</span><<span class="keywordtype">bool</span> PerformResourceTransitions></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// Commits descriptor handles for static, mutable, and dynamic variables</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordtype">void</span> CommitDescriptorHandlesInternal_SMD(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  ShaderResourceCacheD3D12& ResourceCache, </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">class</span> CommandContext &Ctx, </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">bool</span> IsCompute)<span class="keyword">const</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> };</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> <div class="ttc" id="class_diligent_1_1_root_signature_html"><div class="ttname"><a href="class_diligent_1_1_root_signature.html">Diligent::RootSignature</a></div><div class="ttdoc">Implementation of the Diligent::RootSignature class. </div><div class="ttdef"><b>Definition:</b> RootSignature.h:161</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_s_t_d_allocator_8h_source.html b/doc/html/_s_t_d_allocator_8h_source.html index ef0e522a..275fdbf1 100644 --- a/doc/html/_s_t_d_allocator_8h_source.html +++ b/doc/html/_s_t_d_allocator_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">STDAllocator.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <limits></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> AllocatorType></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">struct </span>STDAllocator</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> T value_type;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> value_type* pointer;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <span class="keyword">const</span> value_type* const_pointer;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> value_type& reference;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <span class="keyword">const</span> value_type& const_reference;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> std::size_t size_type;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">typedef</span> std::ptrdiff_t difference_type;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  STDAllocator(AllocatorType& Allocator, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> Char* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)noexcept : </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_Allocator(Allocator),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_dbgDescription(dbgDescription),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_dbgFileName(dbgFileName),</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_dbgLineNumber(dbgLineNumber)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">template</span> <<span class="keyword">class</span> U> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  STDAllocator(<span class="keyword">const</span> STDAllocator<U, AllocatorType>& other)noexcept : </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_Allocator(other.m_Allocator),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_dbgDescription(other.m_dbgDescription),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_dbgFileName(other.m_dbgFileName),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_dbgLineNumber(other.m_dbgLineNumber)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">template</span> <<span class="keyword">class</span> U> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  STDAllocator(STDAllocator<U, AllocatorType>&& other)noexcept : </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_Allocator(other.m_Allocator),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_dbgDescription(other.m_dbgDescription),</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_dbgFileName(other.m_dbgFileName),</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_dbgLineNumber(other.m_dbgLineNumber)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">template</span> <<span class="keyword">class</span> U> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  STDAllocator& operator = (STDAllocator<U, AllocatorType>&& other)noexcept</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// Android build requires this operator to be defined - I have no idea why</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  VERIFY_EXPR(&m_Allocator == &other.m_Allocator);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_dbgDescription = other.m_dbgDescription;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_dbgFileName = other.m_dbgFileName;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_dbgLineNumber = other.m_dbgLineNumber;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">template</span>< <span class="keyword">class</span> U > <span class="keyword">struct </span>rebind</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  { </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">typedef</span> STDAllocator<U, AllocatorType> other;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  };</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  T* allocate(std::size_t count)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>( m_Allocator.Allocate(count * <span class="keyword">sizeof</span>(T), m_dbgDescription, m_dbgFileName, m_dbgLineNumber ) );</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> deallocate(T* p, std::size_t count)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_Allocator.Free(p);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">inline</span> size_type max_size()<span class="keyword"> const </span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword"> </span>{ </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> std::numeric_limits<size_type>::max() / <span class="keyword">sizeof</span>(T); </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// construction/destruction</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">template</span>< <span class="keyword">class </span>U, <span class="keyword">class</span>... Args ></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">void</span> construct( U* p, Args&&... args )</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  { </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  ::new(p) U(std::forward<Args>(args)...); </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> destroy(pointer p)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  { </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  p->~T(); </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  AllocatorType &m_Allocator;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">const</span> Char* m_dbgDescription;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">const</span> Char* m_dbgFileName;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  Int32 m_dbgLineNumber;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">#define STD_ALLOCATOR(Type, AllocatorType, Allocator, Description) STDAllocator<Type, AllocatorType>(Allocator, Description, __FILE__, __LINE__)</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> U, <span class="keyword">class</span> A></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> STDAllocator<T, A>&left, <span class="keyword">const</span> STDAllocator<U, A>&right)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> &left.m_Allocator == &right.m_Allocator;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> U, <span class="keyword">class</span> A></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> STDAllocator<T, A> &left, <span class="keyword">const</span> STDAllocator<U, A> &right)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> !(left == right);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">using</span> STDAllocatorRawMem = STDAllocator<T, IMemoryAllocator>; </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#define STD_ALLOCATOR_RAW_MEM(Type, Allocator, Description) STDAllocatorRawMem<Type>(Allocator, Description, __FILE__, __LINE__)</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keyword">template</span>< <span class="keyword">class</span> T, <span class="keyword">typename</span> AllocatorType > </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">struct </span>STDDeleter</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  STDDeleter(AllocatorType &Allocator) : </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_Allocator(Allocator)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {}</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">void</span> operator()(T *ptr)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  ptr->~T();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_Allocator.Free(ptr);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  AllocatorType &m_Allocator;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> };</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">using</span> STDDeleterRawMem = STDDeleter<T, IMemoryAllocator>; </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <limits></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> AllocatorType></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">struct </span>STDAllocator</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> T value_type;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> value_type* pointer;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <span class="keyword">const</span> value_type* const_pointer;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> value_type& reference;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <span class="keyword">const</span> value_type& const_reference;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> std::size_t size_type;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">typedef</span> std::ptrdiff_t difference_type;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  STDAllocator(AllocatorType& Allocator, <span class="keyword">const</span> Char* dbgDescription, <span class="keyword">const</span> Char* dbgFileName, <span class="keyword">const</span> Int32 dbgLineNumber)noexcept : </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_Allocator(Allocator),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_dbgDescription(dbgDescription),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_dbgFileName(dbgFileName),</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_dbgLineNumber(dbgLineNumber)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">template</span> <<span class="keyword">class</span> U> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  STDAllocator(<span class="keyword">const</span> STDAllocator<U, AllocatorType>& other)noexcept : </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_Allocator(other.m_Allocator),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_dbgDescription(other.m_dbgDescription),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_dbgFileName(other.m_dbgFileName),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_dbgLineNumber(other.m_dbgLineNumber)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">template</span> <<span class="keyword">class</span> U> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  STDAllocator(STDAllocator<U, AllocatorType>&& other)noexcept : </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_Allocator(other.m_Allocator),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_dbgDescription(other.m_dbgDescription),</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_dbgFileName(other.m_dbgFileName),</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_dbgLineNumber(other.m_dbgLineNumber)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">template</span> <<span class="keyword">class</span> U> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  STDAllocator& operator = (STDAllocator<U, AllocatorType>&& other)noexcept</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// Android build requires this operator to be defined - I have no idea why</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  VERIFY_EXPR(&m_Allocator == &other.m_Allocator);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_dbgDescription = other.m_dbgDescription;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_dbgFileName = other.m_dbgFileName;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_dbgLineNumber = other.m_dbgLineNumber;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">template</span>< <span class="keyword">class</span> U > <span class="keyword">struct </span>rebind</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  { </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">typedef</span> STDAllocator<U, AllocatorType> other;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  };</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  T* allocate(std::size_t count)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>( m_Allocator.Allocate(count * <span class="keyword">sizeof</span>(T), m_dbgDescription, m_dbgFileName, m_dbgLineNumber ) );</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> deallocate(T* p, std::size_t count)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_Allocator.Free(p);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">inline</span> size_type max_size()<span class="keyword"> const </span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword"> </span>{ </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> std::numeric_limits<size_type>::max() / <span class="keyword">sizeof</span>(T); </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// construction/destruction</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">template</span>< <span class="keyword">class </span>U, <span class="keyword">class</span>... Args ></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">void</span> construct( U* p, Args&&... args )</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  { </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  ::new(p) U(std::forward<Args>(args)...); </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> destroy(pointer p)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  { </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  p->~T(); </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  AllocatorType &m_Allocator;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">const</span> Char* m_dbgDescription;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">const</span> Char* m_dbgFileName;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  Int32 m_dbgLineNumber;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">#define STD_ALLOCATOR(Type, AllocatorType, Allocator, Description) STDAllocator<Type, AllocatorType>(Allocator, Description, __FILE__, __LINE__)</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> U, <span class="keyword">class</span> A></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> STDAllocator<T, A>&left, <span class="keyword">const</span> STDAllocator<U, A>&right)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> &left.m_Allocator == &right.m_Allocator;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> U, <span class="keyword">class</span> A></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> STDAllocator<T, A> &left, <span class="keyword">const</span> STDAllocator<U, A> &right)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> !(left == right);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">using</span> STDAllocatorRawMem = STDAllocator<T, IMemoryAllocator>; </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#define STD_ALLOCATOR_RAW_MEM(Type, Allocator, Description) STDAllocatorRawMem<Type>(Allocator, Description, __FILE__, __LINE__)</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keyword">template</span>< <span class="keyword">class</span> T, <span class="keyword">typename</span> AllocatorType > </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">struct </span>STDDeleter</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  STDDeleter(AllocatorType &Allocator) : </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_Allocator(Allocator)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {}</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">void</span> operator()(T *ptr)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  ptr->~T();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_Allocator.Free(ptr);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  AllocatorType &m_Allocator;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> };</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">using</span> STDDeleterRawMem = STDDeleter<T, IMemoryAllocator>; </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_sampler_8h_source.html b/doc/html/_sampler_8h_source.html index df685486..69c6d46c 100644 --- a/doc/html/_sampler_8h_source.html +++ b/doc/html/_sampler_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">Sampler.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <cfloat></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// {595A59BF-FA81-4855-BC5E-C0E048745A95}</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_Sampler =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> { 0x595a59bf, 0xfa81, 0x4855, { 0xbc, 0x5e, 0xc0, 0xe0, 0x48, 0x74, 0x5a, 0x95 } };</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html"> 52</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107"> 55</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107">MinFilter</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd"> 58</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd">MagFilter</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce"> 63</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce">MipFilter</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24"> 66</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24">AddressU</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89"> 69</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89">AddressV</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2"> 72</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2">AddressW</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696"> 77</a></span>  Float32 <a class="code" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696">MipLODBias</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025"> 80</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025">MaxAnisotropy</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48"> 84</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48">ComparisonFunc</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9"> 87</a></span>  Float32 <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[4];</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61"> 91</a></span>  <span class="keywordtype">float</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61">MinLOD</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306"> 95</a></span>  <span class="keywordtype">float</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">MaxLOD</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a84f55fe6afe0c2397039503695bbfefb"> 113</a></span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a84f55fe6afe0c2397039503695bbfefb">SamplerDesc</a>(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> _MinFilter = <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> _MagFilter = <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> _MipFilter = <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> _AddressU = <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> _AddressV = <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> _AddressW = <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  Float32 _MipLODBias = 0,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  Uint32 _MaxAnisotropy = 0,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> _ComparisonFunc = <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb">COMPARISON_FUNC_NEVER</a>,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">float</span> _MinLOD = 0,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">float</span> _MaxLOD = +FLT_MAX) : </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107">MinFilter</a>(_MinFilter),</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd">MagFilter</a>(_MagFilter),</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce">MipFilter</a>(_MipFilter),</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24">AddressU</a>(_AddressU),</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89">AddressV</a>(_AddressV),</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2">AddressW</a>(_AddressW),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696">MipLODBias</a>(_MipLODBias),</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025">MaxAnisotropy</a>(_MaxAnisotropy),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48">ComparisonFunc</a>(_ComparisonFunc),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61">MinLOD</a>(_MinLOD),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">MaxLOD</a>(_MaxLOD)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[0] = <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[1] = <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[2] = <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[3] = 0;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a84f55fe6afe0c2397039503695bbfefb">SamplerDesc</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>&) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a84f55fe6afe0c2397039503695bbfefb">SamplerDesc</a>(<a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>&&) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& operator = (<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>&) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& operator = (<a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>&&) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#ae8684fb685c5e6e6accc6dbbca52e26d"> 152</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html#ae8684fb685c5e6e6accc6dbbca52e26d">operator ==</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Name is primarily used for debug purposes and does not affect the state.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// It is ignored in comparison operation.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> <span class="comment">// strcmp(Name, RHS.Name) == 0 &&</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107">MinFilter</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107">MinFilter</a> &&</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd">MagFilter</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd">MagFilter</a> && </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce">MipFilter</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce">MipFilter</a> && </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24">AddressU</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24">AddressU</a> && </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89">AddressV</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89">AddressV</a> && </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2">AddressW</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2">AddressW</a> && </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696">MipLODBias</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696">MipLODBias</a> && </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025">MaxAnisotropy</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025">MaxAnisotropy</a> && </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48">ComparisonFunc</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48">ComparisonFunc</a> && </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[0] == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[0] && </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[1] == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[1] &&</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[2] == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[2] &&</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[3] == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[3] &&</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61">MinLOD</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61">MinLOD</a> && </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">MaxLOD</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">MaxLOD</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> };</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_sampler.html"> 180</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_sampler.html#a0a9bd69ab4d5ffa6cdb3a94b5b80b468">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="class_diligent_1_1_i_sampler.html#a1bfd5f947448b739ea28d757a2de9727">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> };</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <cfloat></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// {595A59BF-FA81-4855-BC5E-C0E048745A95}</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_Sampler =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> { 0x595a59bf, 0xfa81, 0x4855, { 0xbc, 0x5e, 0xc0, 0xe0, 0x48, 0x74, 0x5a, 0x95 } };</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html"> 52</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107"> 55</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107">MinFilter</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd"> 58</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd">MagFilter</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce"> 63</a></span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce">MipFilter</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24"> 66</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24">AddressU</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89"> 69</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89">AddressV</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2"> 72</a></span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2">AddressW</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696"> 77</a></span>  Float32 <a class="code" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696">MipLODBias</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025"> 80</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025">MaxAnisotropy</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48"> 84</a></span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> <a class="code" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48">ComparisonFunc</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9"> 87</a></span>  Float32 <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[4];</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61"> 91</a></span>  <span class="keywordtype">float</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61">MinLOD</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306"> 95</a></span>  <span class="keywordtype">float</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">MaxLOD</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#a84f55fe6afe0c2397039503695bbfefb"> 113</a></span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a84f55fe6afe0c2397039503695bbfefb">SamplerDesc</a>(<a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> _MinFilter = <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> _MagFilter = <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3">FILTER_TYPE</a> _MipFilter = <a class="code" href="namespace_diligent.html#a9001a5a822d4d0901acdc2c8cbe600b3a167655f3ace23033921e2e4066796751">FILTER_TYPE_LINEAR</a>,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> _AddressU = <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> _AddressV = <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1">TEXTURE_ADDRESS_MODE</a> _AddressW = <a class="code" href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">TEXTURE_ADDRESS_CLAMP</a>,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  Float32 _MipLODBias = 0,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  Uint32 _MaxAnisotropy = 0,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3">COMPARISON_FUNCTION</a> _ComparisonFunc = <a class="code" href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb">COMPARISON_FUNC_NEVER</a>,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">float</span> _MinLOD = 0,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">float</span> _MaxLOD = +FLT_MAX) : </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107">MinFilter</a>(_MinFilter),</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd">MagFilter</a>(_MagFilter),</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce">MipFilter</a>(_MipFilter),</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24">AddressU</a>(_AddressU),</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89">AddressV</a>(_AddressV),</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2">AddressW</a>(_AddressW),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696">MipLODBias</a>(_MipLODBias),</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025">MaxAnisotropy</a>(_MaxAnisotropy),</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48">ComparisonFunc</a>(_ComparisonFunc),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61">MinLOD</a>(_MinLOD),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">MaxLOD</a>(_MaxLOD)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[0] = <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[1] = <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[2] = <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[3] = 0;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a84f55fe6afe0c2397039503695bbfefb">SamplerDesc</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>&) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a84f55fe6afe0c2397039503695bbfefb">SamplerDesc</a>(<a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>&&) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& operator = (<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>&) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& operator = (<a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>&&) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_sampler_desc.html#ae8684fb685c5e6e6accc6dbbca52e26d"> 152</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html#ae8684fb685c5e6e6accc6dbbca52e26d">operator ==</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Name is primarily used for debug purposes and does not affect the state.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// It is ignored in comparison operation.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> <span class="comment">// strcmp(Name, RHS.Name) == 0 &&</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107">MinFilter</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a033ebb2c7d97f8c4ec464d05499a9107">MinFilter</a> &&</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd">MagFilter</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a86e07a8b1c2943695b996dc5043e26bd">MagFilter</a> && </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce">MipFilter</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a64df7cb18ed8d2ed09f2fdd106f17dce">MipFilter</a> && </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24">AddressU</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a47c2269a565a1260a2bb8f07fef57e24">AddressU</a> && </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89">AddressV</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a751e2c38fde79fca035b90316f2b4f89">AddressV</a> && </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2">AddressW</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#af674beea5aed837b3f3423f81bef13a2">AddressW</a> && </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696">MipLODBias</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#ae63028ae64656ff35520dab609f94696">MipLODBias</a> && </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025">MaxAnisotropy</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a20c78bf3c4e7c05781f1e32dce60f025">MaxAnisotropy</a> && </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48">ComparisonFunc</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#ad20a594bd0a1bf52da3612a73753bf48">ComparisonFunc</a> && </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[0] == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[0] && </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[1] == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[1] &&</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[2] == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[2] &&</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[3] == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a6ce9635826a946dfbadacd2adcff63e9">BorderColor</a>[3] &&</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61">MinLOD</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a5af812014f093aeea8edaf2dd26e0f61">MinLOD</a> && </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">MaxLOD</a> == RHS.<a class="code" href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">MaxLOD</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> };</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_sampler.html"> 180</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_sampler.html#a0a9bd69ab4d5ffa6cdb3a94b5b80b468">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="class_diligent_1_1_i_sampler.html#a1bfd5f947448b739ea28d757a2de9727">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> };</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> <div class="ttc" id="struct_diligent_1_1_sampler_desc_html_a8e476ea05829137b4d53c47f41c1f306"><div class="ttname"><a href="struct_diligent_1_1_sampler_desc.html#a8e476ea05829137b4d53c47f41c1f306">Diligent::SamplerDesc::MaxLOD</a></div><div class="ttdeci">float MaxLOD</div><div class="ttdoc">Specifies the maximum value that LOD is clamped to before accessing the texture MIP levels...</div><div class="ttdef"><b>Definition:</b> Sampler.h:95</div></div> <div class="ttc" id="namespace_diligent_html_a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f"><div class="ttname"><a href="namespace_diligent.html#a26cf0ec56d87b480b66e884231d113b1a5fc53ee0a53cc9c08ab0ede8c1305c7f">Diligent::TEXTURE_ADDRESS_CLAMP</a></div><div class="ttdoc">Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively. Direct3D Counterpart: D3D11_TEXTURE_ADDRESS_CLAMP/D3D12_TEXTURE_ADDRESS_MODE_CLAMP. OpenGL counterpart: GL_CLAMP_TO_EDGE. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:821</div></div> <div class="ttc" id="namespace_diligent_html_a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb"><div class="ttname"><a href="namespace_diligent.html#a8d1dad077555a8b379c65d86c15518b3a00b70a0d0b44e0eb2e2ab88ca2a509bb">Diligent::COMPARISON_FUNC_NEVER</a></div><div class="ttdoc">Comparison never passes. Direct3D counterpart: D3D11_COMPARISON_NEVER/D3D12_COMPARISON_FUNC_NEVER. OpenGL counterpart: GL_NEVER. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:854</div></div> @@ -101,7 +101,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_sampler_base_8h_source.html b/doc/html/_sampler_base_8h_source.html index 3e74143f..c7c99e03 100644 --- a/doc/html/_sampler_base_8h_source.html +++ b/doc/html/_sampler_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SamplerBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> RenderDeviceBaseInterface></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_base.html"> 43</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, SamplerDesc></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, SamplerDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase<RenderDeviceBaseInterface></a> <a class="code" href="class_diligent_1_1_render_device_base.html">TRenderDeviceBase</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_base.html#a1fcacfa05ea3acc53ae68d6e6b9e6879"> 54</a></span>  <a class="code" href="class_diligent_1_1_sampler_base.html#a1fcacfa05ea3acc53ae68d6e6b9e6879">SamplerBase</a>( IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& SamDesc, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, SamDesc, bIsDeviceInternal )</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_base.html#ae5d5e692c43d7d262265e4226d031007"> 58</a></span>  <a class="code" href="class_diligent_1_1_sampler_base.html#ae5d5e692c43d7d262265e4226d031007">~SamplerBase</a>()</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">auto</span> &SamplerRegistry = <span class="keyword">static_cast<</span><a class="code" href="class_diligent_1_1_render_device_base.html">TRenderDeviceBase</a> *<span class="keyword">></span>(this->GetDevice())->GetSamplerRegistry();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  SamplerRegistry.ReportDeletedObject();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_Sampler, TDeviceObjectBase )</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> };</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RenderDeviceBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> RenderDeviceBaseInterface></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_base.html"> 43</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, SamplerDesc></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, SamplerDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_render_device_base.html">RenderDeviceBase<RenderDeviceBaseInterface></a> <a class="code" href="class_diligent_1_1_render_device_base.html">TRenderDeviceBase</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_base.html#a1fcacfa05ea3acc53ae68d6e6b9e6879"> 54</a></span>  <a class="code" href="class_diligent_1_1_sampler_base.html#a1fcacfa05ea3acc53ae68d6e6b9e6879">SamplerBase</a>( IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& SamDesc, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, SamDesc, bIsDeviceInternal )</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_base.html#ae5d5e692c43d7d262265e4226d031007"> 58</a></span>  <a class="code" href="class_diligent_1_1_sampler_base.html#ae5d5e692c43d7d262265e4226d031007">~SamplerBase</a>()</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">auto</span> &SamplerRegistry = <span class="keyword">static_cast<</span><a class="code" href="class_diligent_1_1_render_device_base.html">TRenderDeviceBase</a> *<span class="keyword">></span>(this->GetDevice())->GetSamplerRegistry();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  SamplerRegistry.ReportDeletedObject();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_Sampler, TDeviceObjectBase )</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> };</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="struct_diligent_1_1_sampler_desc_html"><div class="ttname"><a href="struct_diligent_1_1_sampler_desc.html">Diligent::SamplerDesc</a></div><div class="ttdoc">Sampler description. </div><div class="ttdef"><b>Definition:</b> Sampler.h:52</div></div> <div class="ttc" id="class_diligent_1_1_render_device_base_html"><div class="ttname"><a href="class_diligent_1_1_render_device_base.html">Diligent::RenderDeviceBase</a></div><div class="ttdoc">Base implementation of a render device. </div><div class="ttdef"><b>Definition:</b> DeviceObjectBase.h:36</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_sampler_d3_d11_8h_source.html b/doc/html/_sampler_d3_d11_8h_source.html index 288507f4..d436fbfc 100644 --- a/doc/html/_sampler_d3_d11_8h_source.html +++ b/doc/html/_sampler_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SamplerD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {31A3BFAF-738E-4D8C-AD18-B021C5D948DD}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SamplerD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x31a3bfaf, 0x738e, 0x4d8c, { 0xad, 0x18, 0xb0, 0x21, 0xc5, 0xd9, 0x48, 0xdd } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_sampler_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_sampler_d3_d11.html">ISamplerD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11SamplerState* <a class="code" href="class_diligent_1_1_i_sampler_d3_d11.html#a4f7b5e0793bf488c51135cdecd62718d">GetD3D11SamplerState</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {31A3BFAF-738E-4D8C-AD18-B021C5D948DD}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SamplerD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x31a3bfaf, 0x738e, 0x4d8c, { 0xad, 0x18, 0xb0, 0x21, 0xc5, 0xd9, 0x48, 0xdd } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_sampler_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_sampler_d3_d11.html">ISamplerD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11SamplerState* <a class="code" href="class_diligent_1_1_i_sampler_d3_d11.html#a4f7b5e0793bf488c51135cdecd62718d">GetD3D11SamplerState</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_sampler_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_i_sampler_d3_d11.html">Diligent::ISamplerD3D11</a></div><div class="ttdoc">Interface to the sampler object implemented in D3D11. </div><div class="ttdef"><b>Definition:</b> SamplerD3D11.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_sampler_d3_d11_html_a4f7b5e0793bf488c51135cdecd62718d"><div class="ttname"><a href="class_diligent_1_1_i_sampler_d3_d11.html#a4f7b5e0793bf488c51135cdecd62718d">Diligent::ISamplerD3D11::GetD3D11SamplerState</a></div><div class="ttdeci">virtual ID3D11SamplerState * GetD3D11SamplerState()=0</div><div class="ttdoc">Returns a pointer to the ID3D11SamplerState interface of the internal Direct3D11 object. </div></div> <div class="ttc" id="class_diligent_1_1_i_sampler_html"><div class="ttname"><a href="class_diligent_1_1_i_sampler.html">Diligent::ISampler</a></div><div class="ttdoc">Texture sampler interface. </div><div class="ttdef"><b>Definition:</b> Sampler.h:180</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_sampler_d3_d11_impl_8h_source.html b/doc/html/_sampler_d3_d11_impl_8h_source.html index fab1a26a..a68323fd 100644 --- a/doc/html/_sampler_d3_d11_impl_8h_source.html +++ b/doc/html/_sampler_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SamplerD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SamplerD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SamplerBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_d3_d11_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html">SamplerD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase</a><ISamplerD3D11, IRenderDeviceD3D11></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase<ISamplerD3D11, IRenderDeviceD3D11></a> <a class="code" href="class_diligent_1_1_sampler_base.html">TSamplerBase</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html">SamplerD3D11Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pRenderDeviceD3D11, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ~<a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html">SamplerD3D11Impl</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html#a288b876e2307d2d1dace7248fff024bf">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) <span class="keyword">final</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_d3_d11_impl.html#addc99d4fe70241e90f4f852659be9828"> 48</a></span>  <span class="keyword">virtual</span> ID3D11SamplerState* <a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html#addc99d4fe70241e90f4f852659be9828">GetD3D11SamplerState</a>()override final{ <span class="keywordflow">return</span> m_pd3dSampler; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  CComPtr<ID3D11SamplerState> m_pd3dSampler;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> };</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SamplerD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SamplerBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_d3_d11_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html">SamplerD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase</a><ISamplerD3D11, IRenderDeviceD3D11></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase<ISamplerD3D11, IRenderDeviceD3D11></a> <a class="code" href="class_diligent_1_1_sampler_base.html">TSamplerBase</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html">SamplerD3D11Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pRenderDeviceD3D11, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ~<a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html">SamplerD3D11Impl</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html#a288b876e2307d2d1dace7248fff024bf">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) <span class="keyword">final</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_d3_d11_impl.html#addc99d4fe70241e90f4f852659be9828"> 48</a></span>  <span class="keyword">virtual</span> ID3D11SamplerState* <a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html#addc99d4fe70241e90f4f852659be9828">GetD3D11SamplerState</a>()override final{ <span class="keywordflow">return</span> m_pd3dSampler; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  CComPtr<ID3D11SamplerState> m_pd3dSampler;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> };</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="struct_diligent_1_1_sampler_desc_html"><div class="ttname"><a href="struct_diligent_1_1_sampler_desc.html">Diligent::SamplerDesc</a></div><div class="ttdoc">Sampler description. </div><div class="ttdef"><b>Definition:</b> Sampler.h:52</div></div> <div class="ttc" id="class_diligent_1_1_sampler_base_html"><div class="ttname"><a href="class_diligent_1_1_sampler_base.html">Diligent::SamplerBase</a></div><div class="ttdoc">Template class implementing base functionality for a sampler object. </div><div class="ttdef"><b>Definition:</b> SamplerBase.h:43</div></div> <div class="ttc" id="class_diligent_1_1_render_device_d3_d11_impl_html"><div class="ttname"><a href="class_diligent_1_1_render_device_d3_d11_impl.html">Diligent::RenderDeviceD3D11Impl</a></div><div class="ttdoc">Implementation of the Diligent::IRenderDeviceD3D11 interface. </div><div class="ttdef"><b>Definition:</b> RenderDeviceD3D11Impl.h:38</div></div> @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_sampler_d3_d12_8h_source.html b/doc/html/_sampler_d3_d12_8h_source.html index 7cda765d..e3908419 100644 --- a/doc/html/_sampler_d3_d12_8h_source.html +++ b/doc/html/_sampler_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SamplerD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {31A3BFAF-738E-4D8C-AD18-B021C5D948DD}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SamplerD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x31a3bfaf, 0x738e, 0x4d8c, { 0xad, 0x18, 0xb0, 0x21, 0xc5, 0xd9, 0x48, 0xdd } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_sampler_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_sampler_d3_d12.html">ISamplerD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_i_sampler_d3_d12.html#a8f84ff506887f9a81b1332e6020b2b92">GetCPUDescriptorHandle</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {31A3BFAF-738E-4D8C-AD18-B021C5D948DD}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SamplerD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x31a3bfaf, 0x738e, 0x4d8c, { 0xad, 0x18, 0xb0, 0x21, 0xc5, 0xd9, 0x48, 0xdd } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_sampler_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_sampler_d3_d12.html">ISamplerD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_i_sampler_d3_d12.html#a8f84ff506887f9a81b1332e6020b2b92">GetCPUDescriptorHandle</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_sampler_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_sampler_d3_d12.html">Diligent::ISamplerD3D12</a></div><div class="ttdoc">Interface to the sampler object implemented in D3D12. </div><div class="ttdef"><b>Definition:</b> SamplerD3D12.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_sampler_html"><div class="ttname"><a href="class_diligent_1_1_i_sampler.html">Diligent::ISampler</a></div><div class="ttdoc">Texture sampler interface. </div><div class="ttdef"><b>Definition:</b> Sampler.h:180</div></div> <div class="ttc" id="class_diligent_1_1_i_sampler_d3_d12_html_a8f84ff506887f9a81b1332e6020b2b92"><div class="ttname"><a href="class_diligent_1_1_i_sampler_d3_d12.html#a8f84ff506887f9a81b1332e6020b2b92">Diligent::ISamplerD3D12::GetCPUDescriptorHandle</a></div><div class="ttdeci">virtual D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandle()=0</div><div class="ttdoc">Returns a CPU descriptor handle of the D3D12 sampler object. </div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_sampler_d3_d12_impl_8h_source.html b/doc/html/_sampler_d3_d12_impl_8h_source.html index 570f6bf1..352486ad 100644 --- a/doc/html/_sampler_d3_d12_impl_8h_source.html +++ b/doc/html/_sampler_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SamplerD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SamplerD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SamplerBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_d3_d12_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_sampler_d3_d12_impl.html">SamplerD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase</a><ISamplerD3D12, IRenderDeviceD3D12></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase<ISamplerD3D12, IRenderDeviceD3D12></a> <a class="code" href="class_diligent_1_1_sampler_base.html">TSamplerBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_sampler_d3_d12_impl.html">SamplerD3D12Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_diligent_1_1_sampler_d3_d12_impl.html">SamplerD3D12Impl</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_sampler_d3_d12_impl.html#a1d6be9611628ca7eaa48c83cb671a672">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_d3_d12_impl.html#a4f535e5053330f7030523f2e85bf5e65"> 49</a></span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_sampler_d3_d12_impl.html#a4f535e5053330f7030523f2e85bf5e65">GetCPUDescriptorHandle</a>()<span class="keyword">override</span>{ <span class="keywordflow">return</span> m_Descriptor.GetCpuHandle(); }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html">ShaderD3D12Impl</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  DescriptorHeapAllocation m_Descriptor;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SamplerD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SamplerBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_d3_d12_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_sampler_d3_d12_impl.html">SamplerD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase</a><ISamplerD3D12, IRenderDeviceD3D12></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase<ISamplerD3D12, IRenderDeviceD3D12></a> <a class="code" href="class_diligent_1_1_sampler_base.html">TSamplerBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_sampler_d3_d12_impl.html">SamplerD3D12Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_diligent_1_1_sampler_d3_d12_impl.html">SamplerD3D12Impl</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_sampler_d3_d12_impl.html#a1d6be9611628ca7eaa48c83cb671a672">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_d3_d12_impl.html#a4f535e5053330f7030523f2e85bf5e65"> 49</a></span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_sampler_d3_d12_impl.html#a4f535e5053330f7030523f2e85bf5e65">GetCPUDescriptorHandle</a>()<span class="keyword">override</span>{ <span class="keywordflow">return</span> m_Descriptor.GetCpuHandle(); }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html">ShaderD3D12Impl</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  DescriptorHeapAllocation m_Descriptor;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_sampler_d3_d12_impl_html"><div class="ttname"><a href="class_diligent_1_1_sampler_d3_d12_impl.html">Diligent::SamplerD3D12Impl</a></div><div class="ttdoc">Implementation of the Diligent::ISamplerD3D12 interface. </div><div class="ttdef"><b>Definition:</b> SamplerD3D12Impl.h:39</div></div> <div class="ttc" id="struct_diligent_1_1_sampler_desc_html"><div class="ttname"><a href="struct_diligent_1_1_sampler_desc.html">Diligent::SamplerDesc</a></div><div class="ttdoc">Sampler description. </div><div class="ttdef"><b>Definition:</b> Sampler.h:52</div></div> <div class="ttc" id="class_diligent_1_1_sampler_base_html"><div class="ttname"><a href="class_diligent_1_1_sampler_base.html">Diligent::SamplerBase</a></div><div class="ttdoc">Template class implementing base functionality for a sampler object. </div><div class="ttdef"><b>Definition:</b> SamplerBase.h:43</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_sampler_g_l_8h_source.html b/doc/html/_sampler_g_l_8h_source.html index bec17130..8bfbd3be 100644 --- a/doc/html/_sampler_g_l_8h_source.html +++ b/doc/html/_sampler_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SamplerGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {3E9EB89E-E955-447A-9D13-92C10541F727}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SamplerGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x3e9eb89e, 0xe955, 0x447a, { 0x9d, 0x13, 0x92, 0xc1, 0x5, 0x41, 0xf7, 0x27 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_sampler_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_sampler_g_l.html">ISamplerGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">//const GLObjectWrappers::GLSamplerObj& GetHandle(){ return m_GlSampler; }</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {3E9EB89E-E955-447A-9D13-92C10541F727}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SamplerGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x3e9eb89e, 0xe955, 0x447a, { 0x9d, 0x13, 0x92, 0xc1, 0x5, 0x41, 0xf7, 0x27 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_sampler_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_sampler_g_l.html">ISamplerGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">//const GLObjectWrappers::GLSamplerObj& GetHandle(){ return m_GlSampler; }</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_sampler_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_sampler_g_l.html">Diligent::ISamplerGL</a></div><div class="ttdoc">Interface to the sampler object object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> SamplerGL.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_sampler_html"><div class="ttname"><a href="class_diligent_1_1_i_sampler.html">Diligent::ISampler</a></div><div class="ttdoc">Texture sampler interface. </div><div class="ttdef"><b>Definition:</b> Sampler.h:180</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_sampler_g_l_impl_8h_source.html b/doc/html/_sampler_g_l_impl_8h_source.html index cf9b3fa9..18351e90 100644 --- a/doc/html/_sampler_g_l_impl_8h_source.html +++ b/doc/html/_sampler_g_l_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SamplerGLImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "SamplerGL.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "SamplerBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_g_l_impl.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_sampler_g_l_impl.html">SamplerGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase</a><ISamplerGL, IGLDeviceBaseInterface></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase<ISamplerGL, IGLDeviceBaseInterface></a> <a class="code" href="class_diligent_1_1_sampler_base.html">TSamplerBase</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_diligent_1_1_sampler_g_l_impl.html">SamplerGLImpl</a>( IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ~<a class="code" href="class_diligent_1_1_sampler_g_l_impl.html">SamplerGLImpl</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_sampler_g_l_impl.html#ad888f914793198afb6347eb416a832fc">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">const</span> GLObjectWrappers::GLSamplerObj& GetHandle(){ <span class="keywordflow">return</span> m_GlSampler; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  GLObjectWrappers::GLSamplerObj m_GlSampler;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="class_diligent_1_1_sampler_g_l_impl_html"><div class="ttname"><a href="class_diligent_1_1_sampler_g_l_impl.html">Diligent::SamplerGLImpl</a></div><div class="ttdoc">Implementation of the Diligent::ISamplerGL interface. </div><div class="ttdef"><b>Definition:</b> SamplerGLImpl.h:37</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "SamplerGL.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "SamplerBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_sampler_g_l_impl.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_sampler_g_l_impl.html">SamplerGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase</a><ISamplerGL, IGLDeviceBaseInterface></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_sampler_base.html">SamplerBase<ISamplerGL, IGLDeviceBaseInterface></a> <a class="code" href="class_diligent_1_1_sampler_base.html">TSamplerBase</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_diligent_1_1_sampler_g_l_impl.html">SamplerGLImpl</a>( IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>& <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a>, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ~<a class="code" href="class_diligent_1_1_sampler_g_l_impl.html">SamplerGLImpl</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_sampler_g_l_impl.html#ad888f914793198afb6347eb416a832fc">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">const</span> GLObjectWrappers::GLSamplerObj& GetHandle(){ <span class="keywordflow">return</span> m_GlSampler; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  GLObjectWrappers::GLSamplerObj m_GlSampler;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="ttc" id="class_diligent_1_1_sampler_g_l_impl_html"><div class="ttname"><a href="class_diligent_1_1_sampler_g_l_impl.html">Diligent::SamplerGLImpl</a></div><div class="ttdoc">Implementation of the Diligent::ISamplerGL interface. </div><div class="ttdef"><b>Definition:</b> SamplerGLImpl.h:37</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_render_device_g_l_impl_html"><div class="ttname"><a href="class_diligent_1_1_render_device_g_l_impl.html">Diligent::RenderDeviceGLImpl</a></div><div class="ttdoc">Implementation of the render device interface in OpenGL. </div><div class="ttdef"><b>Definition:</b> RenderDeviceGLImpl.h:53</div></div> <div class="ttc" id="struct_diligent_1_1_sampler_desc_html"><div class="ttname"><a href="struct_diligent_1_1_sampler_desc.html">Diligent::SamplerDesc</a></div><div class="ttdoc">Sampler description. </div><div class="ttdef"><b>Definition:</b> Sampler.h:52</div></div> @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_8h_source.html b/doc/html/_shader_8h_source.html index c5ab13ae..a5813a0c 100644 --- a/doc/html/_shader_8h_source.html +++ b/doc/html/_shader_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">Shader.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "FileStream.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// {2989B45C-143D-4886-B89C-C3271C2DCC5D}</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_Shader =</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> { 0x2989b45c, 0x143d, 0x4886, { 0xb8, 0x9c, 0xc3, 0x27, 0x1c, 0x2d, 0xcc, 0x5d } };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// {0D57DF3F-977D-4C8F-B64C-6675814BC80C}</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderVariable =</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> { 0xd57df3f, 0x977d, 0x4c8f, { 0xb6, 0x4c, 0x66, 0x75, 0x81, 0x4b, 0xc8, 0xc } };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2"> 46</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> : Int32</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a"> 48</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a> = 0x000, </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f"> 49</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a> = 0x001, </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34"> 50</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a> = 0x002, </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3"> 51</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a> = 0x004, </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b"> 52</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a> = 0x008, </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf"> 53</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a> = 0x010, </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29"> 54</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a> = 0x020 </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">enum</span> SHADER_PROFILE : Int32</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  SHADER_PROFILE_DEFAULT = 0,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  SHADER_PROFILE_DX_4_0,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  SHADER_PROFILE_DX_5_0,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  SHADER_PROFILE_DX_5_1,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  SHADER_PROFILE_GL_4_2</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0"> 67</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0">SHADER_SOURCE_LANGUAGE</a> : Int32</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98"> 70</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98">SHADER_SOURCE_LANGUAGE_DEFAULT</a> = 0,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0ae2902026c29ba5ceeec9a0bb4f25e111"> 73</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0ae2902026c29ba5ceeec9a0bb4f25e111">SHADER_SOURCE_LANGUAGE_HLSL</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a0fb7dd30648819a279edf2829d258561"> 76</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a0fb7dd30648819a279edf2829d258561">SHADER_SOURCE_LANGUAGE_GLSL</a></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8"> 81</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8">BIND_SHADER_RESOURCES_FLAGS</a> : Int32</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a356bf35ddf7ca9489736c0d8992d3032"> 85</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a356bf35ddf7ca9489736c0d8992d3032">BIND_SHADER_RESOURCES_RESET_BINDINGS</a> = 0x01,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a6a7da6200cf9bedda2d76b51b2233170"> 91</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a6a7da6200cf9bedda2d76b51b2233170">BIND_SHADER_RESOURCES_UPDATE_UNRESOLVED</a> = 0x02,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a996116faf0124f92452cb6b65a66a4bd"> 96</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a996116faf0124f92452cb6b65a66a4bd">BIND_SHADER_RESOURCES_ALL_RESOLVED</a> = 0x04</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698"> 100</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> : Int32</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3"> 105</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a> = 0, </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a"> 110</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16"> 114</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16">SHADER_VARIABLE_TYPE_DYNAMIC</a>,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb"> 117</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html"> 121</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> {</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce"> 124</a></span>  <span class="keyword">const</span> Char *<a class="code" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce">Name</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3"> 127</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3">Type</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a>(<span class="keyword">const</span> Char *_Name = <span class="keyword">nullptr</span>, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _Type = <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>) : </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce">Name</a>(_Name),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3">Type</a>(_Type)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {}</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> };</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html"> 136</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c"> 139</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c">TextureName</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf"> 142</a></span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a> <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf">Desc</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>(){};</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>(<span class="keyword">const</span> Char* _TexName, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a> &_Desc) : </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c">TextureName</a>(_TexName),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf">Desc</a>(_Desc)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {}</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> };</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html"> 152</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68"> 155</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68">ShaderType</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  Bool bCacheCompiledShader;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  SHADER_PROFILE TargetProfile;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481"> 163</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481">DefaultVariableType</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a"> 166</a></span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a> *<a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f"> 169</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f">NumVariables</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979"> 172</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979">NumStaticSamplers</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf"> 175</a></span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a> *<a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a>() : </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68">ShaderType</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>),</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  bCacheCompiledShader(False),</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  TargetProfile(SHADER_PROFILE_DEFAULT),</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481">DefaultVariableType</a>(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>),</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>(nullptr),</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f">NumVariables</a>(0),</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979">NumStaticSamplers</a>(0),</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>(nullptr)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {}</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> };</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_source_input_stream_factory.html"> 190</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateInputStream(<span class="keyword">const</span> Diligent::Char *Name, IFileStream **ppStream) = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> };</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="keyword">struct </span>ShaderMacro</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">const</span> Char* Name;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">const</span> Char* Definition;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  ShaderMacro(<span class="keyword">const</span> Char* _Name, <span class="keyword">const</span> Char* _Def) : Name( _Name ), Definition( _Def ) {}</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> };</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html"> 204</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a26734decb81a8c8d625f12596348096d"> 209</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a26734decb81a8c8d625f12596348096d">FilePath</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a5e2f0d77ee1090be19d6d55c06df5972"> 215</a></span>  <a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a> *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a5e2f0d77ee1090be19d6d55c06df5972">pShaderSourceStreamFactory</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a7cab639ba508ebc065290f8d9d0c8e91"> 228</a></span>  <span class="keyword">class </span>IHLSL2GLSLConversionStream **<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a7cab639ba508ebc065290f8d9d0c8e91">ppConversionStream</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec"> 233</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec">Source</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  </div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ab91e80c16df5ee5624e56f8fdbb0e98d"> 239</a></span>  <span class="keyword">const</span> <span class="keywordtype">void</span> *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ab91e80c16df5ee5624e56f8fdbb0e98d">ByteCode</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a2dc3b36f68b617161f138be5df2138f5"> 244</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a2dc3b36f68b617161f138be5df2138f5">ByteCodeSize</a> = 0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ae06a6f4125da854f03b39f31ac0ad013"> 249</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ae06a6f4125da854f03b39f31ac0ad013">EntryPoint</a> = <span class="stringliteral">"main"</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#afa568255f209ad0f61ef97e57bb0d402"> 254</a></span>  <span class="keyword">const</span> ShaderMacro *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#afa568255f209ad0f61ef97e57bb0d402">Macros</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#afc6c0ca2303848fec84b25e8c4a444fd"> 257</a></span>  <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#afc6c0ca2303848fec84b25e8c4a444fd">Desc</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ab4f1dc9f9314d639690bde42a8b56535"> 260</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0">SHADER_SOURCE_LANGUAGE</a> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ab4f1dc9f9314d639690bde42a8b56535">SourceLanguage</a> = <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98">SHADER_SOURCE_LANGUAGE_DEFAULT</a>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> };</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_variable.html"> 265</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html#abf1fd12f07f3d932f04e8e34a981d896">Set</a>(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject) = 0;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html#a1485fa8a056824cf955b5bdbe1d7cd17">SetArray</a>(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements) = 0;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> };</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader.html"> 288</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader.html#a1927ad928f908db0d6f4f669202b90b2">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> &<a class="code" href="class_diligent_1_1_i_shader.html#a4bd05dd784c6881c7f80e68df675f5e8">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader.html#a631860cef0bb50e081bab0acd1345cf1">BindResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags ) = 0;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* <a class="code" href="class_diligent_1_1_i_shader.html#ad3e51fa57cd1db70da2bc07773c1fdea">GetShaderVariable</a>(<span class="keyword">const</span> Char* Name) = 0;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> };</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> }</div><div class="ttc" id="struct_diligent_1_1_shader_creation_attribs_html_aef8d7926abec30fe25ee611f2f40d6ec"><div class="ttname"><a href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec">Diligent::ShaderCreationAttribs::Source</a></div><div class="ttdeci">const Char * Source</div><div class="ttdoc">Shader source. </div><div class="ttdef"><b>Definition:</b> Shader.h:233</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ResourceMapping.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "FileStream.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Sampler.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// {2989B45C-143D-4886-B89C-C3271C2DCC5D}</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_Shader =</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> { 0x2989b45c, 0x143d, 0x4886, { 0xb8, 0x9c, 0xc3, 0x27, 0x1c, 0x2d, 0xcc, 0x5d } };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// {0D57DF3F-977D-4C8F-B64C-6675814BC80C}</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderVariable =</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> { 0xd57df3f, 0x977d, 0x4c8f, { 0xb6, 0x4c, 0x66, 0x75, 0x81, 0x4b, 0xc8, 0xc } };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2"> 46</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> : Int32</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a"> 48</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a> = 0x000, </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f"> 49</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a> = 0x001, </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34"> 50</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a> = 0x002, </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3"> 51</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a> = 0x004, </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b"> 52</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a> = 0x008, </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf"> 53</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a> = 0x010, </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29"> 54</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a> = 0x020 </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">enum</span> SHADER_PROFILE : Int32</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  SHADER_PROFILE_DEFAULT = 0,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  SHADER_PROFILE_DX_4_0,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  SHADER_PROFILE_DX_5_0,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  SHADER_PROFILE_DX_5_1,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  SHADER_PROFILE_GL_4_2</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0"> 67</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0">SHADER_SOURCE_LANGUAGE</a> : Int32</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98"> 70</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98">SHADER_SOURCE_LANGUAGE_DEFAULT</a> = 0,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0ae2902026c29ba5ceeec9a0bb4f25e111"> 73</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0ae2902026c29ba5ceeec9a0bb4f25e111">SHADER_SOURCE_LANGUAGE_HLSL</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a0fb7dd30648819a279edf2829d258561"> 76</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a0fb7dd30648819a279edf2829d258561">SHADER_SOURCE_LANGUAGE_GLSL</a></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8"> 81</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8">BIND_SHADER_RESOURCES_FLAGS</a> : Int32</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a356bf35ddf7ca9489736c0d8992d3032"> 85</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a356bf35ddf7ca9489736c0d8992d3032">BIND_SHADER_RESOURCES_RESET_BINDINGS</a> = 0x01,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a6a7da6200cf9bedda2d76b51b2233170"> 91</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a6a7da6200cf9bedda2d76b51b2233170">BIND_SHADER_RESOURCES_UPDATE_UNRESOLVED</a> = 0x02,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a996116faf0124f92452cb6b65a66a4bd"> 96</a></span>  <a class="code" href="namespace_diligent.html#aa19d2573adf9fdd5763e4ff3a06ac1e8a996116faf0124f92452cb6b65a66a4bd">BIND_SHADER_RESOURCES_ALL_RESOLVED</a> = 0x04</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698"> 100</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> : Int32</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3"> 105</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a> = 0, </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a"> 110</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16"> 114</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16">SHADER_VARIABLE_TYPE_DYNAMIC</a>,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb"> 117</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html"> 121</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> {</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce"> 124</a></span>  <span class="keyword">const</span> Char *<a class="code" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce">Name</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3"> 127</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3">Type</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a>(<span class="keyword">const</span> Char *_Name = <span class="keyword">nullptr</span>, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _Type = <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>) : </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#a469f1c83d48f666ec71cc8ec1015cfce">Name</a>(_Name),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="struct_diligent_1_1_shader_variable_desc.html#ab64013ee9fa8680ff4bc065adec33fa3">Type</a>(_Type)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {}</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> };</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html"> 136</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c"> 139</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c">TextureName</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf"> 142</a></span>  <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a> <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf">Desc</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>(){};</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>(<span class="keyword">const</span> Char* _TexName, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_sampler_desc.html">SamplerDesc</a> &_Desc) : </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#a956d466b6039e2b23d3e14ee85b1b28c">TextureName</a>(_TexName),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="struct_diligent_1_1_static_sampler_desc.html#af69223a4da9c3fa37a6b728e541a51bf">Desc</a>(_Desc)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {}</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> };</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html"> 152</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68"> 155</a></span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68">ShaderType</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  Bool bCacheCompiledShader;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  SHADER_PROFILE TargetProfile;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481"> 163</a></span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> <a class="code" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481">DefaultVariableType</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a"> 166</a></span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a> *<a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f"> 169</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f">NumVariables</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979"> 172</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979">NumStaticSamplers</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf"> 175</a></span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a> *<a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a>() : </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#aded0e0cabe436be3da39e2353683ff68">ShaderType</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>),</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  bCacheCompiledShader(False),</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  TargetProfile(SHADER_PROFILE_DEFAULT),</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a585e792ee56999c8558a104bcb341481">DefaultVariableType</a>(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>),</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>(nullptr),</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f">NumVariables</a>(0),</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979">NumStaticSamplers</a>(0),</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>(nullptr)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {}</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> };</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_source_input_stream_factory.html"> 190</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateInputStream(<span class="keyword">const</span> Diligent::Char *Name, IFileStream **ppStream) = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> };</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="keyword">struct </span>ShaderMacro</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">const</span> Char* Name;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">const</span> Char* Definition;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  ShaderMacro(<span class="keyword">const</span> Char* _Name, <span class="keyword">const</span> Char* _Def) : Name( _Name ), Definition( _Def ) {}</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> };</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html"> 204</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a26734decb81a8c8d625f12596348096d"> 209</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a26734decb81a8c8d625f12596348096d">FilePath</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a5e2f0d77ee1090be19d6d55c06df5972"> 215</a></span>  <a class="code" href="class_diligent_1_1_i_shader_source_input_stream_factory.html">IShaderSourceInputStreamFactory</a> *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a5e2f0d77ee1090be19d6d55c06df5972">pShaderSourceStreamFactory</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a7cab639ba508ebc065290f8d9d0c8e91"> 228</a></span>  <span class="keyword">class </span>IHLSL2GLSLConversionStream **<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a7cab639ba508ebc065290f8d9d0c8e91">ppConversionStream</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec"> 233</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec">Source</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  </div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ab91e80c16df5ee5624e56f8fdbb0e98d"> 239</a></span>  <span class="keyword">const</span> <span class="keywordtype">void</span> *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ab91e80c16df5ee5624e56f8fdbb0e98d">ByteCode</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#a2dc3b36f68b617161f138be5df2138f5"> 244</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#a2dc3b36f68b617161f138be5df2138f5">ByteCodeSize</a> = 0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ae06a6f4125da854f03b39f31ac0ad013"> 249</a></span>  <span class="keyword">const</span> Char* <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ae06a6f4125da854f03b39f31ac0ad013">EntryPoint</a> = <span class="stringliteral">"main"</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#afa568255f209ad0f61ef97e57bb0d402"> 254</a></span>  <span class="keyword">const</span> ShaderMacro *<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#afa568255f209ad0f61ef97e57bb0d402">Macros</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#afc6c0ca2303848fec84b25e8c4a444fd"> 257</a></span>  <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#afc6c0ca2303848fec84b25e8c4a444fd">Desc</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_creation_attribs.html#ab4f1dc9f9314d639690bde42a8b56535"> 260</a></span>  <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0">SHADER_SOURCE_LANGUAGE</a> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html#ab4f1dc9f9314d639690bde42a8b56535">SourceLanguage</a> = <a class="code" href="namespace_diligent.html#afefecb3e9dff6f9b8b9f00cd2770c7b0a80f04185cf1c04a1785f95352ce8fe98">SHADER_SOURCE_LANGUAGE_DEFAULT</a>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> };</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_variable.html"> 265</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html#abf1fd12f07f3d932f04e8e34a981d896">Set</a>(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject) = 0;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html#a1485fa8a056824cf955b5bdbe1d7cd17">SetArray</a>(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements) = 0;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> };</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader.html"> 288</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader.html">IShader</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader.html#a1927ad928f908db0d6f4f669202b90b2">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> &<a class="code" href="class_diligent_1_1_i_shader.html#a4bd05dd784c6881c7f80e68df675f5e8">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader.html#a631860cef0bb50e081bab0acd1345cf1">BindResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags ) = 0;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* <a class="code" href="class_diligent_1_1_i_shader.html#ad3e51fa57cd1db70da2bc07773c1fdea">GetShaderVariable</a>(<span class="keyword">const</span> Char* Name) = 0;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> };</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> }</div><div class="ttc" id="struct_diligent_1_1_shader_creation_attribs_html_aef8d7926abec30fe25ee611f2f40d6ec"><div class="ttname"><a href="struct_diligent_1_1_shader_creation_attribs.html#aef8d7926abec30fe25ee611f2f40d6ec">Diligent::ShaderCreationAttribs::Source</a></div><div class="ttdeci">const Char * Source</div><div class="ttdoc">Shader source. </div><div class="ttdef"><b>Definition:</b> Shader.h:233</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_source_input_stream_factory_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_source_input_stream_factory.html">Diligent::IShaderSourceInputStreamFactory</a></div><div class="ttdoc">Shader source stream factory interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:190</div></div> <div class="ttc" id="struct_diligent_1_1_shader_creation_attribs_html_ae06a6f4125da854f03b39f31ac0ad013"><div class="ttname"><a href="struct_diligent_1_1_shader_creation_attribs.html#ae06a6f4125da854f03b39f31ac0ad013">Diligent::ShaderCreationAttribs::EntryPoint</a></div><div class="ttdeci">const Char * EntryPoint</div><div class="ttdoc">Shader entry point. </div><div class="ttdef"><b>Definition:</b> Shader.h:249</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> @@ -133,7 +133,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_base_8h_source.html b/doc/html/_shader_base_8h_source.html index 8720de98..7c075d0a 100644 --- a/doc/html/_shader_base_8h_source.html +++ b/doc/html/_shader_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "PlatformMisc.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "EngineMemory.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> GetShaderTypeFromIndex( Int32 Index )</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a><span class="keyword">></span>(1 << Index);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">inline</span> Int32 GetShaderTypeIndex( <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> Type )</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  Int32 ShaderIndex = PlatformMisc::GetLSB(Type);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">switch</span>( Type )</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>: VERIFY_EXPR(ShaderIndex == -1); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>: VERIFY_EXPR(ShaderIndex == 0); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a>: VERIFY_EXPR(ShaderIndex == 1); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a>:VERIFY_EXPR(ShaderIndex == 2); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a>: VERIFY_EXPR(ShaderIndex == 3); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a>: VERIFY_EXPR(ShaderIndex == 4); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a>: VERIFY_EXPR(ShaderIndex == 5); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unexpected shader type ("</span>, Type, <span class="stringliteral">")"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  VERIFY( Type == GetShaderTypeFromIndex(ShaderIndex), <span class="stringliteral">"Incorrect shader type index"</span> );</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> ShaderIndex;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> VSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> GSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> HSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> DSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> CSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">template</span><<span class="keyword">typename</span> TNameCompare></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> GetShaderVariableType(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> DefaultVariableType, <span class="keyword">const</span> ShaderVariableDesc *VariableDesc, Uint32 NumVars, TNameCompare NameCompare)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">for</span> (Uint32 v = 0; v < NumVars; ++v)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &CurrVarDesc = VariableDesc[v];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> ( NameCompare(CurrVarDesc.Name) )</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> CurrVarDesc.Type;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> DefaultVariableType;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> GetShaderVariableType(<span class="keyword">const</span> Char* Name, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> DefaultVariableType, <span class="keyword">const</span> ShaderVariableDesc *VariableDesc, Uint32 NumVars)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> GetShaderVariableType(DefaultVariableType, VariableDesc, NumVars, </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  [&](<span class="keyword">const</span> <span class="keywordtype">char</span> *VarName)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> strcmp(VarName, Name) == 0;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  );</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_base.html"> 98</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_variable_base.html">ShaderVariableBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="struct_diligent_1_1_shader_variable_base.html">ShaderVariableBase</a>(IObject &Owner) : </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// Shader variables are always created as part of the shader, or </span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// shader resource binding, so we must provide owner pointer to </span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// the base class constructor</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_Owner(Owner)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  IObject& GetOwner()</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> m_Owner;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> IReferenceCounters* GetReferenceCounters()<span class="keyword">const</span> <span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> m_Owner.GetReferenceCounters();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">virtual</span> Atomics::Long AddRef()<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> m_Owner.AddRef();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">virtual</span> Atomics::Long Release()<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> m_Owner.Release();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>( ppInterface == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  *ppInterface = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>( IID == IID_ShaderVariable || IID == IID_Unknown )</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  *ppInterface = <span class="keyword">this</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  (*ppInterface)->AddRef();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  IObject &m_Owner;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> };</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dummy_shader_variable.html"> 146</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a> : <a class="code" href="struct_diligent_1_1_shader_variable_base.html">ShaderVariableBase</a></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a>(IObject &Owner) :</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_diligent_1_1_shader_variable_base.html">ShaderVariableBase</a>(Owner)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {}</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dummy_shader_variable.html#a10bc22958bd424b656d4c25a628c1deb"> 152</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html#a10bc22958bd424b656d4c25a628c1deb">Set</a>( <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Ignore operation</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// Probably output warning</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dummy_shader_variable.html#ac2c2d893e25346364e4d180ca03937f9"> 158</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html#ac2c2d893e25346364e4d180ca03937f9">SetArray</a>(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// Ignore operation</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// Probably output warning</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> };</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> RenderDeviceBaseInterface></div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html"> 172</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, ShaderDesc></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, ShaderDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html#a7c4b7d4aaed6b8ef56ff03b2009d5f65"> 182</a></span>  <a class="code" href="class_diligent_1_1_shader_base.html#a7c4b7d4aaed6b8ef56ff03b2009d5f65">ShaderBase</a>( IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a>& ShdrDesc, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, ShdrDesc, bIsDeviceInternal ),</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="class_diligent_1_1_shader_base.html#acfa66df57c881400087081985a26431e">m_DummyShaderVar</a>(*this),</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>(ShdrDesc.NumVariables, <a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a>(), STD_ALLOCATOR_RAW_MEM(<a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a>, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<ShaderVariableDesc>"</span>) ),</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="class_diligent_1_1_shader_base.html#a64f93fb831a7678033d7240c81483095">m_StringPool</a>(ShdrDesc.NumVariables + ShdrDesc.NumStaticSamplers, String(), STD_ALLOCATOR_RAW_MEM(String, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<String>"</span>)),</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>(ShdrDesc.NumStaticSamplers, <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>(), STD_ALLOCATOR_RAW_MEM(<a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<StaticSamplerDesc>"</span>) )</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">auto</span> Str = <a class="code" href="class_diligent_1_1_shader_base.html#a64f93fb831a7678033d7240c81483095">m_StringPool</a>.begin();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">for</span> (Uint32 v = 0; v < this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f">NumVariables</a>; ++v, ++Str)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>[v] = this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>[v];</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  VERIFY(<a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>[v].Name != <span class="keyword">nullptr</span>, <span class="stringliteral">"Variable name not provided"</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  *Str = <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>[v].Name;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>[v].Name = Str->c_str();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a> = <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>.data();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span>(this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">for</span> (Uint32 s = 0; s < this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979">NumStaticSamplers</a>; ++s, ++Str)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>[s] = this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>[s];</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  VERIFY(<a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>[s].TextureName != <span class="keyword">nullptr</span>, <span class="stringliteral">"Static sampler texture name not provided"</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  *Str = <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>[s].TextureName;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>[s].TextureName = Str->c_str();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BorderColor = <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>[s].Desc.BorderColor;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>( !( (BorderColor[0] == 0 && BorderColor[1] == 0 && BorderColor[2] == 0 && BorderColor[3] == 0) ||</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  (BorderColor[0] == 0 && BorderColor[1] == 0 && BorderColor[2] == 0 && BorderColor[3] == 1) ||</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  (BorderColor[0] == 1 && BorderColor[1] == 1 && BorderColor[2] == 1 && BorderColor[3] == 0) ) )</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Static sampler for variable \""</span>, *Str , <span class="stringliteral">"\" specifies border color ("</span>, BorderColor[0], <span class="stringliteral">", "</span>, BorderColor[1], <span class="stringliteral">", "</span>, BorderColor[2], <span class="stringliteral">", "</span>, BorderColor[3], <span class="stringliteral">"). D3D12 static samplers only allow transparent black (0,0,0,1), opaque black (0,0,0,0) or opaque white (1,1,1,0) as border colors"</span>);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a> = <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>.data();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  VERIFY_EXPR(Str == <a class="code" href="class_diligent_1_1_shader_base.html#a64f93fb831a7678033d7240c81483095">m_StringPool</a>.end());</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_Shader, TDeviceObjectBase )</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html#acfa66df57c881400087081985a26431e"> 228</a></span>  <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a> <a class="code" href="class_diligent_1_1_shader_base.html#acfa66df57c881400087081985a26431e">m_DummyShaderVar</a>; </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa"> 231</a></span>  std::vector<ShaderVariableDesc, STDAllocatorRawMem<ShaderVariableDesc> > <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html#a64f93fb831a7678033d7240c81483095"> 233</a></span>  std::vector<String, STDAllocatorRawMem<String> > <a class="code" href="class_diligent_1_1_shader_base.html#a64f93fb831a7678033d7240c81483095">m_StringPool</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295"> 235</a></span>  std::vector<StaticSamplerDesc, STDAllocatorRawMem<StaticSamplerDesc> > <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> };</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "PlatformMisc.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "EngineMemory.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> GetShaderTypeFromIndex( Int32 Index )</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a><span class="keyword">></span>(1 << Index);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">inline</span> Int32 GetShaderTypeIndex( <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> Type )</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  Int32 ShaderIndex = PlatformMisc::GetLSB(Type);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">switch</span>( Type )</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>: VERIFY_EXPR(ShaderIndex == -1); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>: VERIFY_EXPR(ShaderIndex == 0); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a>: VERIFY_EXPR(ShaderIndex == 1); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a>:VERIFY_EXPR(ShaderIndex == 2); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a>: VERIFY_EXPR(ShaderIndex == 3); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a>: VERIFY_EXPR(ShaderIndex == 4); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a>: VERIFY_EXPR(ShaderIndex == 5); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unexpected shader type ("</span>, Type, <span class="stringliteral">")"</span> ); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  VERIFY( Type == GetShaderTypeFromIndex(ShaderIndex), <span class="stringliteral">"Incorrect shader type index"</span> );</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> ShaderIndex;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> VSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> PSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> GSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> HSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> DSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> CSInd = GetShaderTypeIndex(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">template</span><<span class="keyword">typename</span> TNameCompare></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> GetShaderVariableType(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> DefaultVariableType, <span class="keyword">const</span> ShaderVariableDesc *VariableDesc, Uint32 NumVars, TNameCompare NameCompare)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">for</span> (Uint32 v = 0; v < NumVars; ++v)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &CurrVarDesc = VariableDesc[v];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> ( NameCompare(CurrVarDesc.Name) )</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> CurrVarDesc.Type;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> DefaultVariableType;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> GetShaderVariableType(<span class="keyword">const</span> Char* Name, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> DefaultVariableType, <span class="keyword">const</span> ShaderVariableDesc *VariableDesc, Uint32 NumVars)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> GetShaderVariableType(DefaultVariableType, VariableDesc, NumVars, </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  [&](<span class="keyword">const</span> <span class="keywordtype">char</span> *VarName)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> strcmp(VarName, Name) == 0;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  );</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_variable_base.html"> 98</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_variable_base.html">ShaderVariableBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="struct_diligent_1_1_shader_variable_base.html">ShaderVariableBase</a>(IObject &Owner) : </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// Shader variables are always created as part of the shader, or </span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// shader resource binding, so we must provide owner pointer to </span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// the base class constructor</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_Owner(Owner)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  IObject& GetOwner()</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> m_Owner;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> IReferenceCounters* GetReferenceCounters()<span class="keyword">const</span> <span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> m_Owner.GetReferenceCounters();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">virtual</span> Atomics::Long AddRef()<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> m_Owner.AddRef();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">virtual</span> Atomics::Long Release()<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> m_Owner.Release();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>( ppInterface == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  *ppInterface = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>( IID == IID_ShaderVariable || IID == IID_Unknown )</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  *ppInterface = <span class="keyword">this</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  (*ppInterface)->AddRef();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  IObject &m_Owner;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> };</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dummy_shader_variable.html"> 146</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a> : <a class="code" href="struct_diligent_1_1_shader_variable_base.html">ShaderVariableBase</a></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a>(IObject &Owner) :</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_diligent_1_1_shader_variable_base.html">ShaderVariableBase</a>(Owner)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {}</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dummy_shader_variable.html#a10bc22958bd424b656d4c25a628c1deb"> 152</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html#a10bc22958bd424b656d4c25a628c1deb">Set</a>( <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Ignore operation</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// Probably output warning</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_dummy_shader_variable.html#ac2c2d893e25346364e4d180ca03937f9"> 158</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html#ac2c2d893e25346364e4d180ca03937f9">SetArray</a>(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// Ignore operation</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// Probably output warning</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> };</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> RenderDeviceBaseInterface></div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html"> 172</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, ShaderDesc></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, ShaderDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html#a7c4b7d4aaed6b8ef56ff03b2009d5f65"> 182</a></span>  <a class="code" href="class_diligent_1_1_shader_base.html#a7c4b7d4aaed6b8ef56ff03b2009d5f65">ShaderBase</a>( IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a>& ShdrDesc, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, ShdrDesc, bIsDeviceInternal ),</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="class_diligent_1_1_shader_base.html#acfa66df57c881400087081985a26431e">m_DummyShaderVar</a>(*this),</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>(ShdrDesc.NumVariables, <a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a>(), STD_ALLOCATOR_RAW_MEM(<a class="code" href="struct_diligent_1_1_shader_variable_desc.html">ShaderVariableDesc</a>, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<ShaderVariableDesc>"</span>) ),</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="class_diligent_1_1_shader_base.html#a64f93fb831a7678033d7240c81483095">m_StringPool</a>(ShdrDesc.NumVariables + ShdrDesc.NumStaticSamplers, String(), STD_ALLOCATOR_RAW_MEM(String, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<String>"</span>)),</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>(ShdrDesc.NumStaticSamplers, <a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>(), STD_ALLOCATOR_RAW_MEM(<a class="code" href="struct_diligent_1_1_static_sampler_desc.html">StaticSamplerDesc</a>, <a class="code" href="namespace_diligent.html#aef792a75d6b4771705fb4ed083428dc8">GetRawAllocator</a>(), <span class="stringliteral">"Allocator for vector<StaticSamplerDesc>"</span>) )</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">auto</span> Str = <a class="code" href="class_diligent_1_1_shader_base.html#a64f93fb831a7678033d7240c81483095">m_StringPool</a>.begin();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">for</span> (Uint32 v = 0; v < this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#a0f313b46740d5a80c371acf89e29ec0f">NumVariables</a>; ++v, ++Str)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>[v] = this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a>[v];</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  VERIFY(<a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>[v].Name != <span class="keyword">nullptr</span>, <span class="stringliteral">"Variable name not provided"</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  *Str = <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>[v].Name;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>[v].Name = Str->c_str();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#a23854ef77a41630f14fcfc44b679f99a">VariableDesc</a> = <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>.data();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span>(this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">for</span> (Uint32 s = 0; s < this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#ab7980cf953bf039450eabd77c6a79979">NumStaticSamplers</a>; ++s, ++Str)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>[s] = this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a>[s];</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  VERIFY(<a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>[s].TextureName != <span class="keyword">nullptr</span>, <span class="stringliteral">"Static sampler texture name not provided"</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  *Str = <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>[s].TextureName;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>[s].TextureName = Str->c_str();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BorderColor = <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>[s].Desc.BorderColor;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>( !( (BorderColor[0] == 0 && BorderColor[1] == 0 && BorderColor[2] == 0 && BorderColor[3] == 0) ||</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  (BorderColor[0] == 0 && BorderColor[1] == 0 && BorderColor[2] == 0 && BorderColor[3] == 1) ||</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  (BorderColor[0] == 1 && BorderColor[1] == 1 && BorderColor[2] == 1 && BorderColor[3] == 0) ) )</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  LOG_WARNING_MESSAGE(<span class="stringliteral">"Static sampler for variable \""</span>, *Str , <span class="stringliteral">"\" specifies border color ("</span>, BorderColor[0], <span class="stringliteral">", "</span>, BorderColor[1], <span class="stringliteral">", "</span>, BorderColor[2], <span class="stringliteral">", "</span>, BorderColor[3], <span class="stringliteral">"). D3D12 static samplers only allow transparent black (0,0,0,1), opaque black (0,0,0,0) or opaque white (1,1,1,0) as border colors"</span>);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_shader_desc.html#accd32c314fc0290fd912f568e54709bf">StaticSamplers</a> = <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>.data();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  VERIFY_EXPR(Str == <a class="code" href="class_diligent_1_1_shader_base.html#a64f93fb831a7678033d7240c81483095">m_StringPool</a>.end());</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_Shader, TDeviceObjectBase )</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html#acfa66df57c881400087081985a26431e"> 228</a></span>  <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a> <a class="code" href="class_diligent_1_1_shader_base.html#acfa66df57c881400087081985a26431e">m_DummyShaderVar</a>; </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa"> 231</a></span>  std::vector<ShaderVariableDesc, STDAllocatorRawMem<ShaderVariableDesc> > <a class="code" href="class_diligent_1_1_shader_base.html#ade4d8dd8b6fc208f6d1318e4dffd7aaa">m_VariablesDesc</a>;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html#a64f93fb831a7678033d7240c81483095"> 233</a></span>  std::vector<String, STDAllocatorRawMem<String> > <a class="code" href="class_diligent_1_1_shader_base.html#a64f93fb831a7678033d7240c81483095">m_StringPool</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295"> 235</a></span>  std::vector<StaticSamplerDesc, STDAllocatorRawMem<StaticSamplerDesc> > <a class="code" href="class_diligent_1_1_shader_base.html#a812944988f3a2cf9d4a1d074f1915295">m_StaticSamplers</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> };</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="struct_diligent_1_1_dummy_shader_variable_html_ac2c2d893e25346364e4d180ca03937f9"><div class="ttname"><a href="struct_diligent_1_1_dummy_shader_variable.html#ac2c2d893e25346364e4d180ca03937f9">Diligent::DummyShaderVariable::SetArray</a></div><div class="ttdeci">virtual void SetArray(IDeviceObject *const *ppObjects, Uint32 FirstElement, Uint32 NumElements) override final</div><div class="ttdoc">Sets the variable array. </div><div class="ttdef"><b>Definition:</b> ShaderBase.h:158</div></div> <div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> @@ -107,7 +107,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_d3_d11_8h_source.html b/doc/html/_shader_d3_d11_8h_source.html index 28cf0109..034c651d 100644 --- a/doc/html/_shader_d3_d11_8h_source.html +++ b/doc/html/_shader_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {C513E83E-B037-405B-8B49-BF8F5C220DEE}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xc513e83e, 0xb037, 0x405b, { 0x8b, 0x49, 0xbf, 0x8f, 0x5c, 0x22, 0xd, 0xee } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_d3_d11.html">IShaderD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11DeviceChild* <a class="code" href="class_diligent_1_1_i_shader_d3_d11.html#abfcdd672f89e4b1a783f4495e461da60">GetD3D11Shader</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {C513E83E-B037-405B-8B49-BF8F5C220DEE}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xc513e83e, 0xb037, 0x405b, { 0x8b, 0x49, 0xbf, 0x8f, 0x5c, 0x22, 0xd, 0xee } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_d3_d11.html">IShaderD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11DeviceChild* <a class="code" href="class_diligent_1_1_i_shader_d3_d11.html#abfcdd672f89e4b1a783f4495e461da60">GetD3D11Shader</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_d3_d11.html">Diligent::IShaderD3D11</a></div><div class="ttdoc">Interface to the shader object implemented in D3D11. </div><div class="ttdef"><b>Definition:</b> ShaderD3D11.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_d3_d11_html_abfcdd672f89e4b1a783f4495e461da60"><div class="ttname"><a href="class_diligent_1_1_i_shader_d3_d11.html#abfcdd672f89e4b1a783f4495e461da60">Diligent::IShaderD3D11::GetD3D11Shader</a></div><div class="ttdeci">virtual ID3D11DeviceChild * GetD3D11Shader()=0</div><div class="ttdoc">Returns a pointer to the ID3D11DeviceChild interface of the internal Direct3D11 object. </div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_d3_d11_impl_8h_source.html b/doc/html/_shader_d3_d11_impl_8h_source.html index 305105c1..54d3e43f 100644 --- a/doc/html/_shader_d3_d11_impl_8h_source.html +++ b/doc/html/_shader_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ShaderD3DBase.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D11.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "ShaderResourceCacheD3D11.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "EngineD3D11Defines.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "ShaderResourcesD3D11.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>ResourceMapping;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_d3_d11_impl.html"> 45</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html">ShaderD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase</a><IShaderD3D11, IRenderDeviceD3D11>, <span class="keyword">public</span> ShaderD3DBase</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase<IShaderD3D11, IRenderDeviceD3D11></a> <a class="code" href="class_diligent_1_1_shader_base.html">TShaderBase</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html">ShaderD3D11Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pRenderDeviceD3D11, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &CreationAttribs);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  ~<a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html">ShaderD3D11Impl</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html#a20405a4386a02d45de3c9b84fd510fb3">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html#a730f5bf535b07fd1f14134cb67214dbd">BindResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* <a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html#a0751ea45f162db3a99e13550056e5232">GetShaderVariable</a>( <span class="keyword">const</span> Char* Name )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_d3_d11_impl.html#a429a1560f416ca65f09748e4ef7fa887"> 59</a></span>  <span class="keyword">virtual</span> ID3D11DeviceChild* <a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html#a429a1560f416ca65f09748e4ef7fa887">GetD3D11Shader</a>()override final{ <span class="keywordflow">return</span> m_pShader; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  ID3DBlob* GetBytecode(){<span class="keywordflow">return</span> m_pShaderByteCode;}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ShaderResourceLayoutD3D11& GetStaticResourceLayout(){<span class="keywordflow">return</span> m_StaticResLayout;}</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">const</span> std::shared_ptr<const ShaderResourcesD3D11>& GetResources(){<span class="keywordflow">return</span> m_pShaderResources;}</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Uint32 GetShaderTypeIndex(){<span class="keywordflow">return</span> m_ShaderTypeIndex;}</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  DummyShaderVariable m_DummyShaderVar; </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  CComPtr<ID3D11DeviceChild> m_pShader;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// ShaderResources class instance must be referenced through the shared pointer, because </span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// it is referenced by ShaderResourceLayoutD3D11 class instances</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  std::shared_ptr<const ShaderResourcesD3D11> m_pShaderResources;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  ShaderResourceCacheD3D11 m_StaticResCache;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  ShaderResourceLayoutD3D11 m_StaticResLayout;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint32 m_ShaderTypeIndex; <span class="comment">// VS == 0, PS == 1, GS == 2, HS == 3, DS == 4, CS == 5</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> };</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ShaderD3DBase.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D11.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "ShaderResourceCacheD3D11.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "EngineD3D11Defines.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "ShaderResourcesD3D11.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>ResourceMapping;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_d3_d11_impl.html"> 45</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html">ShaderD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase</a><IShaderD3D11, IRenderDeviceD3D11>, <span class="keyword">public</span> ShaderD3DBase</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase<IShaderD3D11, IRenderDeviceD3D11></a> <a class="code" href="class_diligent_1_1_shader_base.html">TShaderBase</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html">ShaderD3D11Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pRenderDeviceD3D11, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &CreationAttribs);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  ~<a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html">ShaderD3D11Impl</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html#a20405a4386a02d45de3c9b84fd510fb3">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html#a730f5bf535b07fd1f14134cb67214dbd">BindResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* <a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html#a0751ea45f162db3a99e13550056e5232">GetShaderVariable</a>( <span class="keyword">const</span> Char* Name )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_d3_d11_impl.html#a429a1560f416ca65f09748e4ef7fa887"> 59</a></span>  <span class="keyword">virtual</span> ID3D11DeviceChild* <a class="code" href="class_diligent_1_1_shader_d3_d11_impl.html#a429a1560f416ca65f09748e4ef7fa887">GetD3D11Shader</a>()override final{ <span class="keywordflow">return</span> m_pShader; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  ID3DBlob* GetBytecode(){<span class="keywordflow">return</span> m_pShaderByteCode;}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ShaderResourceLayoutD3D11& GetStaticResourceLayout(){<span class="keywordflow">return</span> m_StaticResLayout;}</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">const</span> std::shared_ptr<const ShaderResourcesD3D11>& GetResources(){<span class="keywordflow">return</span> m_pShaderResources;}</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Uint32 GetShaderTypeIndex(){<span class="keywordflow">return</span> m_ShaderTypeIndex;}</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  DummyShaderVariable m_DummyShaderVar; </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  CComPtr<ID3D11DeviceChild> m_pShader;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// ShaderResources class instance must be referenced through the shared pointer, because </span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// it is referenced by ShaderResourceLayoutD3D11 class instances</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  std::shared_ptr<const ShaderResourcesD3D11> m_pShaderResources;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  ShaderResourceCacheD3D11 m_StaticResCache;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  ShaderResourceLayoutD3D11 m_StaticResLayout;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint32 m_ShaderTypeIndex; <span class="comment">// VS == 0, PS == 1, GS == 2, HS == 3, DS == 4, CS == 5</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> };</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_shader_base_html"><div class="ttname"><a href="class_diligent_1_1_shader_base.html">Diligent::ShaderBase</a></div><div class="ttdoc">Template class implementing base functionality for a shader object. </div><div class="ttdef"><b>Definition:</b> ShaderBase.h:172</div></div> <div class="ttc" id="class_diligent_1_1_i_resource_mapping_html"><div class="ttname"><a href="class_diligent_1_1_i_resource_mapping.html">Diligent::IResourceMapping</a></div><div class="ttdoc">Resouce mapping. </div><div class="ttdef"><b>Definition:</b> ResourceMapping.h:80</div></div> @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_d3_d12_8h_source.html b/doc/html/_shader_d3_d12_8h_source.html index 03412f4d..413e659a 100644 --- a/doc/html/_shader_d3_d12_8h_source.html +++ b/doc/html/_shader_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {C059B160-7F31-4029-943D-0996B98EE79A}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xc059b160, 0x7f31, 0x4029, { 0x94, 0x3d, 0x9, 0x96, 0xb9, 0x8e, 0xe7, 0x9a } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_d3_d12.html">IShaderD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">//virtual ID3D12DeviceChild* GetD3D12Shader() = 0;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_d3_d12.html">Diligent::IShaderD3D12</a></div><div class="ttdoc">Interface to the shader object implemented in D3D12. </div><div class="ttdef"><b>Definition:</b> ShaderD3D12.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {C059B160-7F31-4029-943D-0996B98EE79A}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xc059b160, 0x7f31, 0x4029, { 0x94, 0x3d, 0x9, 0x96, 0xb9, 0x8e, 0xe7, 0x9a } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_d3_d12.html">IShaderD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">//virtual ID3D12DeviceChild* GetD3D12Shader() = 0;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_d3_d12.html">Diligent::IShaderD3D12</a></div><div class="ttdoc">Interface to the shader object implemented in D3D12. </div><div class="ttdef"><b>Definition:</b> ShaderD3D12.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_d3_d12_impl_8h_source.html b/doc/html/_shader_d3_d12_impl_8h_source.html index e4fcd3f3..22878963 100644 --- a/doc/html/_shader_d3_d12_impl_8h_source.html +++ b/doc/html/_shader_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ShaderD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ShaderD3DBase.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D12.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"># define VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>ResourceMapping;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_d3_d12_impl.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html">ShaderD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase</a><IShaderD3D12, IRenderDeviceD3D12>, <span class="keyword">public</span> ShaderD3DBase</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase<IShaderD3D12, IRenderDeviceD3D12></a> <a class="code" href="class_diligent_1_1_shader_base.html">TShaderBase</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html">ShaderD3D12Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  ~<a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html">ShaderD3D12Impl</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">//virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface )override;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html#a01f14dcdf380c178da27c4fc11f03b9c">BindResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags )<span class="keyword">override</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* <a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html#acaa2359a4d4b3c5bac5c418477acc6c5">GetShaderVariable</a>(<span class="keyword">const</span> Char* Name)<span class="keyword">override</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ID3DBlob* GetShaderByteCode(){<span class="keywordflow">return</span> m_pShaderByteCode;}</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">const</span> std::shared_ptr<const ShaderResourcesD3D12>& GetShaderResources()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pShaderResources;}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>& GetConstResLayout()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_StaticResLayout;}</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#ifdef VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">void</span> DbgVerifyStaticResourceBindings();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a> m_DummyShaderVar; </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// ShaderResources class instance must be referenced through the shared pointer, because </span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// it is referenced by ShaderResourceLayoutD3D12 class instances</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  std::shared_ptr<const ShaderResourcesD3D12> m_pShaderResources;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> m_StaticResLayout;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  ShaderResourceCacheD3D12 m_ConstResCache;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="ttc" id="class_diligent_1_1_shader_d3_d12_impl_html_a01f14dcdf380c178da27c4fc11f03b9c"><div class="ttname"><a href="class_diligent_1_1_shader_d3_d12_impl.html#a01f14dcdf380c178da27c4fc11f03b9c">Diligent::ShaderD3D12Impl::BindResources</a></div><div class="ttdeci">virtual void BindResources(IResourceMapping *pResourceMapping, Uint32 Flags) override</div><div class="ttdoc">Binds shader resources. </div><div class="ttdef"><b>Definition:</b> ShaderD3D12Impl.cpp:62</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ShaderD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ShaderD3DBase.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D12.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"># define VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>ResourceMapping;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_d3_d12_impl.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html">ShaderD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase</a><IShaderD3D12, IRenderDeviceD3D12>, <span class="keyword">public</span> ShaderD3DBase</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase<IShaderD3D12, IRenderDeviceD3D12></a> <a class="code" href="class_diligent_1_1_shader_base.html">TShaderBase</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html">ShaderD3D12Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pRenderDeviceD3D12, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  ~<a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html">ShaderD3D12Impl</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">//virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface )override;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html#a01f14dcdf380c178da27c4fc11f03b9c">BindResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags )<span class="keyword">override</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* <a class="code" href="class_diligent_1_1_shader_d3_d12_impl.html#acaa2359a4d4b3c5bac5c418477acc6c5">GetShaderVariable</a>(<span class="keyword">const</span> Char* Name)<span class="keyword">override</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ID3DBlob* GetShaderByteCode(){<span class="keywordflow">return</span> m_pShaderByteCode;}</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">const</span> std::shared_ptr<const ShaderResourcesD3D12>& GetShaderResources()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pShaderResources;}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>& GetConstResLayout()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_StaticResLayout;}</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#ifdef VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">void</span> DbgVerifyStaticResourceBindings();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a> m_DummyShaderVar; </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// ShaderResources class instance must be referenced through the shared pointer, because </span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// it is referenced by ShaderResourceLayoutD3D12 class instances</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  std::shared_ptr<const ShaderResourcesD3D12> m_pShaderResources;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> m_StaticResLayout;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  ShaderResourceCacheD3D12 m_ConstResCache;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="ttc" id="class_diligent_1_1_shader_d3_d12_impl_html_a01f14dcdf380c178da27c4fc11f03b9c"><div class="ttname"><a href="class_diligent_1_1_shader_d3_d12_impl.html#a01f14dcdf380c178da27c4fc11f03b9c">Diligent::ShaderD3D12Impl::BindResources</a></div><div class="ttdeci">virtual void BindResources(IResourceMapping *pResourceMapping, Uint32 Flags) override</div><div class="ttdoc">Binds shader resources. </div><div class="ttdef"><b>Definition:</b> ShaderD3D12Impl.cpp:62</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_shader_base_html"><div class="ttname"><a href="class_diligent_1_1_shader_base.html">Diligent::ShaderBase</a></div><div class="ttdoc">Template class implementing base functionality for a shader object. </div><div class="ttdef"><b>Definition:</b> ShaderBase.h:172</div></div> @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_d3_d_base_8h_source.html b/doc/html/_shader_d3_d_base_8h_source.html index 107d757e..a552c12e 100644 --- a/doc/html/_shader_d3_d_base_8h_source.html +++ b/doc/html/_shader_d3_d_base_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderD3DBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <d3dcommon.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_d3_d_base.html"> 36</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_d3_d_base.html">ShaderD3DBase</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_shader_d3_d_base.html">ShaderD3DBase</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &CreationAttribs);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  CComPtr<ID3DBlob> m_pShaderByteCode;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="class_diligent_1_1_shader_d3_d_base_html"><div class="ttname"><a href="class_diligent_1_1_shader_d3_d_base.html">Diligent::ShaderD3DBase</a></div><div class="ttdoc">Base implementation of a D3D shader. </div><div class="ttdef"><b>Definition:</b> ShaderD3DBase.h:36</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <d3dcommon.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_d3_d_base.html"> 36</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_d3_d_base.html">ShaderD3DBase</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_shader_d3_d_base.html">ShaderD3DBase</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &CreationAttribs);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  CComPtr<ID3DBlob> m_pShaderByteCode;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="class_diligent_1_1_shader_d3_d_base_html"><div class="ttname"><a href="class_diligent_1_1_shader_d3_d_base.html">Diligent::ShaderD3DBase</a></div><div class="ttdoc">Base implementation of a D3D shader. </div><div class="ttdef"><b>Definition:</b> ShaderD3DBase.h:36</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="struct_diligent_1_1_shader_creation_attribs_html"><div class="ttname"><a href="struct_diligent_1_1_shader_creation_attribs.html">Diligent::ShaderCreationAttribs</a></div><div class="ttdoc">Shader creation attributes. </div><div class="ttdef"><b>Definition:</b> Shader.h:204</div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/doc/html/_shader_g_l_8h_source.html b/doc/html/_shader_g_l_8h_source.html index f8fac2e9..6744e3e7 100644 --- a/doc/html/_shader_g_l_8h_source.html +++ b/doc/html/_shader_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {2FF3C191-285B-4E6C-BD0B-D084DDEA6FCC}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x2ff3c191, 0x285b, 0x4e6c, { 0xbd, 0xb, 0xd0, 0x84, 0xdd, 0xea, 0x6f, 0xcc } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_g_l.html">IShaderGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {2FF3C191-285B-4E6C-BD0B-D084DDEA6FCC}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x2ff3c191, 0x285b, 0x4e6c, { 0xbd, 0xb, 0xd0, 0x84, 0xdd, 0xea, 0x6f, 0xcc } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_g_l.html">IShaderGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader.html">IShader</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_html"><div class="ttname"><a href="class_diligent_1_1_i_shader.html">Diligent::IShader</a></div><div class="ttdoc">Shader interface. </div><div class="ttdef"><b>Definition:</b> Shader.h:288</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_g_l.html">Diligent::IShaderGL</a></div><div class="ttdoc">Interface to the shader object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> ShaderGL.h:39</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_g_l_impl_8h_source.html b/doc/html/_shader_g_l_impl_8h_source.html index 247043cf..d87767c4 100644 --- a/doc/html/_shader_g_l_impl_8h_source.html +++ b/doc/html/_shader_g_l_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderGLImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "ShaderGL.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GLProgram.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">inline</span> GLenum GetGLShaderType(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">switch</span>(ShaderType)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>: <span class="keywordflow">return</span> GL_VERTEX_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a>: <span class="keywordflow">return</span> GL_FRAGMENT_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a>: <span class="keywordflow">return</span> GL_GEOMETRY_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a>: <span class="keywordflow">return</span> GL_TESS_CONTROL_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a>: <span class="keywordflow">return</span> GL_TESS_EVALUATION_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a>: <span class="keywordflow">return</span> GL_COMPUTE_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">inline</span> GLenum ShaderTypeToGLShaderBit(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">switch</span>(ShaderType)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>: <span class="keywordflow">return</span> GL_VERTEX_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a>: <span class="keywordflow">return</span> GL_FRAGMENT_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a>: <span class="keywordflow">return</span> GL_GEOMETRY_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a>: <span class="keywordflow">return</span> GL_TESS_CONTROL_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a>: <span class="keywordflow">return</span> GL_TESS_EVALUATION_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a>: <span class="keywordflow">return</span> GL_COMPUTE_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_g_l_impl.html"> 67</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_g_l_impl.html">ShaderGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase</a><IShaderGL, IGLDeviceBaseInterface></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase<IShaderGL, IGLDeviceBaseInterface></a> <a class="code" href="class_diligent_1_1_shader_base.html">TShaderBase</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="class_diligent_1_1_shader_g_l_impl.html">ShaderGLImpl</a>( IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> );</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  ~<a class="code" href="class_diligent_1_1_shader_g_l_impl.html">ShaderGLImpl</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_g_l_impl.html#a51ebcf3c80febe6c70f47998f4509e40">BindResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags )<span class="keyword">override</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_g_l_impl.html#a734ec646a56520d6a375f29c6ea973f8">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* <a class="code" href="class_diligent_1_1_shader_g_l_impl.html#ab870e3303471b852a0ddd3ed72be881e">GetShaderVariable</a>( <span class="keyword">const</span> Char* Name )<span class="keyword">override</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  GLProgram& GetGlProgram(){<span class="keywordflow">return</span> m_GlProgObj;}</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  GLProgram m_GlProgObj; <span class="comment">// Used if program pipeline supported</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  GLObjectWrappers::GLShaderObj m_GLShaderObj; <span class="comment">// Used if program pipelines are not supported</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> };</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="ttc" id="class_diligent_1_1_shader_g_l_impl_html"><div class="ttname"><a href="class_diligent_1_1_shader_g_l_impl.html">Diligent::ShaderGLImpl</a></div><div class="ttdoc">Implementation of the Diligent::IShaderGL interface. </div><div class="ttdef"><b>Definition:</b> ShaderGLImpl.h:67</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "ShaderGL.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GLProgram.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">inline</span> GLenum GetGLShaderType(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">switch</span>(ShaderType)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>: <span class="keywordflow">return</span> GL_VERTEX_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a>: <span class="keywordflow">return</span> GL_FRAGMENT_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a>: <span class="keywordflow">return</span> GL_GEOMETRY_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a>: <span class="keywordflow">return</span> GL_TESS_CONTROL_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a>: <span class="keywordflow">return</span> GL_TESS_EVALUATION_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a>: <span class="keywordflow">return</span> GL_COMPUTE_SHADER; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">inline</span> GLenum ShaderTypeToGLShaderBit(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">switch</span>(ShaderType)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a87d1509b84a192c452468277f015616f">SHADER_TYPE_VERTEX</a>: <span class="keywordflow">return</span> GL_VERTEX_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a9d50afa47ec991c605f6cde4dd872c34">SHADER_TYPE_PIXEL</a>: <span class="keywordflow">return</span> GL_FRAGMENT_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a3b18cd56185efef18ea985def8b8a8c3">SHADER_TYPE_GEOMETRY</a>: <span class="keywordflow">return</span> GL_GEOMETRY_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a25b84b38676bde314e05af55f07a5e6b">SHADER_TYPE_HULL</a>: <span class="keywordflow">return</span> GL_TESS_CONTROL_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a5af9fe9cb224f5fc51edb07ff11108bf">SHADER_TYPE_DOMAIN</a>: <span class="keywordflow">return</span> GL_TESS_EVALUATION_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a50dd2ab500bd69a67c8fd0f2790c6f29">SHADER_TYPE_COMPUTE</a>: <span class="keywordflow">return</span> GL_COMPUTE_SHADER_BIT; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_g_l_impl.html"> 67</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_g_l_impl.html">ShaderGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase</a><IShaderGL, IGLDeviceBaseInterface></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_base.html">ShaderBase<IShaderGL, IGLDeviceBaseInterface></a> <a class="code" href="class_diligent_1_1_shader_base.html">TShaderBase</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="class_diligent_1_1_shader_g_l_impl.html">ShaderGLImpl</a>( IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a> &<a class="code" href="struct_diligent_1_1_shader_creation_attribs.html">ShaderCreationAttribs</a>, <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> );</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  ~<a class="code" href="class_diligent_1_1_shader_g_l_impl.html">ShaderGLImpl</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_g_l_impl.html#a51ebcf3c80febe6c70f47998f4509e40">BindResources</a>( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags )<span class="keyword">override</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_g_l_impl.html#a734ec646a56520d6a375f29c6ea973f8">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* <a class="code" href="class_diligent_1_1_shader_g_l_impl.html#ab870e3303471b852a0ddd3ed72be881e">GetShaderVariable</a>( <span class="keyword">const</span> Char* Name )<span class="keyword">override</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  GLProgram& GetGlProgram(){<span class="keywordflow">return</span> m_GlProgObj;}</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  GLProgram m_GlProgObj; <span class="comment">// Used if program pipeline supported</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  GLObjectWrappers::GLShaderObj m_GLShaderObj; <span class="comment">// Used if program pipelines are not supported</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> };</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="ttc" id="class_diligent_1_1_shader_g_l_impl_html"><div class="ttname"><a href="class_diligent_1_1_shader_g_l_impl.html">Diligent::ShaderGLImpl</a></div><div class="ttdoc">Implementation of the Diligent::IShaderGL interface. </div><div class="ttdef"><b>Definition:</b> ShaderGLImpl.h:67</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -93,7 +93,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_macro_helper_8h_source.html b/doc/html/_shader_macro_helper_8h_source.html index 2d972e5d..2da53c9e 100644 --- a/doc/html/_shader_macro_helper_8h_source.html +++ b/doc/html/_shader_macro_helper_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderMacroHelper.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//--------------------------------------------------------------------------------------</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// Copyright 2013 Intel Corporation</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// All Rights Reserved</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Permission is granted to use, copy, distribute and prepare derivative works of this</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// software for any purpose and without fee, provided, that the above copyright notice</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// and this statement appear in all copies. Intel makes no representations about the</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// suitability of this software for any purpose. THIS SOFTWARE IS PROVIDED "AS IS."</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// INTEL SPECIFICALLY DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, AND ALL LIABILITY,</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// INCLUDING CONSEQUENTIAL AND OTHER INDIRECT DAMAGES, FOR THE USE OF THIS SOFTWARE,</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PROPRIETARY RIGHTS, AND INCLUDING THE</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Intel does not</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// assume any responsibility for any errors which may appear in this software nor any</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// responsibility to update it.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//--------------------------------------------------------------------------------------</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <iomanip></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">class </span>ShaderMacroHelper</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Def<span class="keywordtype">int</span>ionType></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> AddShaderMacro( <span class="keyword">const</span> Diligent::Char* Name, DefintionType Definition )</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::ostringstream ss;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ss << Definition;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  AddShaderMacro<const Diligent::Char*>( Name, ss.str().c_str() );</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">void</span> Finalize()</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (!m_bIsFinalized)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_Macros.emplace_back(<span class="keyword">nullptr</span>, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_bIsFinalized = <span class="keyword">true</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">void</span> Reopen()</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span> (m_bIsFinalized)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  VERIFY_EXPR(m_Macros.size() > 0 && m_Macros.back().Name == <span class="keyword">nullptr</span> && m_Macros.back().Definition == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_Macros.pop_back();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_bIsFinalized = <span class="keyword">false</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">void</span> Clear()</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_Macros.clear();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_DefinitionsPool.clear();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_bIsFinalized = <span class="keyword">false</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">operator</span> <span class="keyword">const</span> ShaderMacro* ()</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span> (m_Macros.size() > 0 && !m_bIsFinalized)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  Finalize();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> m_Macros.size() ? m_Macros.data() : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::vector< ShaderMacro > m_Macros;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  std::set< std::string > m_DefinitionsPool;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">bool</span> m_bIsFinalized = <span class="keyword">false</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> };</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">template</span><></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ShaderMacroHelper::AddShaderMacro( <span class="keyword">const</span> Diligent::Char* Name, <span class="keyword">const</span> Diligent::Char* Definition )</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  Reopen();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">auto</span> *PooledDefinition = m_DefinitionsPool.insert(Definition).first->c_str();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_Macros.emplace_back(Name, PooledDefinition);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">template</span><></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ShaderMacroHelper::AddShaderMacro( <span class="keyword">const</span> Diligent::Char* Name, <span class="keywordtype">bool</span> Definition )</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  AddShaderMacro( Name, Definition ? <span class="stringliteral">"1"</span> : <span class="stringliteral">"0"</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">template</span><></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ShaderMacroHelper::AddShaderMacro( <span class="keyword">const</span> Diligent::Char* Name, <span class="keywordtype">float</span> Definition )</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  std::ostringstream ss;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// Make sure that when floating point represents integer, it is still</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// written as float: 1024.0, but not 1024. This is essnetial to</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// avoid type conversion issues in GLES.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>( Definition == static_cast<float>(static_cast<int>(Definition)) )</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  ss << std::fixed << std::setprecision( 1 );</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  ss << Definition;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  AddShaderMacro<const Diligent::Char*>( Name, ss.str().c_str() );</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//--------------------------------------------------------------------------------------</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// Copyright 2013 Intel Corporation</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// All Rights Reserved</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Permission is granted to use, copy, distribute and prepare derivative works of this</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// software for any purpose and without fee, provided, that the above copyright notice</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// and this statement appear in all copies. Intel makes no representations about the</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// suitability of this software for any purpose. THIS SOFTWARE IS PROVIDED "AS IS."</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// INTEL SPECIFICALLY DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, AND ALL LIABILITY,</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// INCLUDING CONSEQUENTIAL AND OTHER INDIRECT DAMAGES, FOR THE USE OF THIS SOFTWARE,</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PROPRIETARY RIGHTS, AND INCLUDING THE</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Intel does not</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// assume any responsibility for any errors which may appear in this software nor any</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// responsibility to update it.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//--------------------------------------------------------------------------------------</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <iomanip></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">class </span>ShaderMacroHelper</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Def<span class="keywordtype">int</span>ionType></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> AddShaderMacro( <span class="keyword">const</span> Diligent::Char* Name, DefintionType Definition )</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::ostringstream ss;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ss << Definition;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  AddShaderMacro<const Diligent::Char*>( Name, ss.str().c_str() );</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">void</span> Finalize()</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (!m_bIsFinalized)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_Macros.emplace_back(<span class="keyword">nullptr</span>, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_bIsFinalized = <span class="keyword">true</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">void</span> Reopen()</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span> (m_bIsFinalized)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  VERIFY_EXPR(m_Macros.size() > 0 && m_Macros.back().Name == <span class="keyword">nullptr</span> && m_Macros.back().Definition == <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_Macros.pop_back();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_bIsFinalized = <span class="keyword">false</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">void</span> Clear()</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_Macros.clear();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_DefinitionsPool.clear();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_bIsFinalized = <span class="keyword">false</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">operator</span> <span class="keyword">const</span> ShaderMacro* ()</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span> (m_Macros.size() > 0 && !m_bIsFinalized)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  Finalize();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> m_Macros.size() ? m_Macros.data() : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::vector< ShaderMacro > m_Macros;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  std::set< std::string > m_DefinitionsPool;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">bool</span> m_bIsFinalized = <span class="keyword">false</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> };</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">template</span><></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ShaderMacroHelper::AddShaderMacro( <span class="keyword">const</span> Diligent::Char* Name, <span class="keyword">const</span> Diligent::Char* Definition )</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  Reopen();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">auto</span> *PooledDefinition = m_DefinitionsPool.insert(Definition).first->c_str();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_Macros.emplace_back(Name, PooledDefinition);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">template</span><></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ShaderMacroHelper::AddShaderMacro( <span class="keyword">const</span> Diligent::Char* Name, <span class="keywordtype">bool</span> Definition )</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  AddShaderMacro( Name, Definition ? <span class="stringliteral">"1"</span> : <span class="stringliteral">"0"</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">template</span><></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> ShaderMacroHelper::AddShaderMacro( <span class="keyword">const</span> Diligent::Char* Name, <span class="keywordtype">float</span> Definition )</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  std::ostringstream ss;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// Make sure that when floating point represents integer, it is still</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// written as float: 1024.0, but not 1024. This is essnetial to</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// avoid type conversion issues in GLES.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>( Definition == static_cast<float>(static_cast<int>(Definition)) )</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  ss << std::fixed << std::setprecision( 1 );</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  ss << Definition;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  AddShaderMacro<const Diligent::Char*>( Name, ss.str().c_str() );</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_shader_resource_binding_8h_source.html b/doc/html/_shader_resource_binding_8h_source.html index 3057f1cb..290d5f5f 100644 --- a/doc/html/_shader_resource_binding_8h_source.html +++ b/doc/html/_shader_resource_binding_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceBinding.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {061F8774-9A09-48E8-8411-B5BD20560104}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderResourceBinding =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x61f8774, 0x9a09, 0x48e8, { 0x84, 0x11, 0xb5, 0xbd, 0x20, 0x56, 0x1, 0x4 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_resource_binding.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html#a733aaed686db367caa9bbe86f62988c0">QueryInterface</a>( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a>* <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html#ac62372c7b929d065ebc3f73e12c545ea">GetPipelineState</a>() = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html#aa63808de1731984d160b6d06f6c89baa">BindResources</a>(Uint32 ShaderFlags, <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResMapping, Uint32 Flags) = 0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> *<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html#a618057fbf9b67670bd3107e1d9127a90">GetVariable</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> <span class="keywordtype">char</span> *Name) = 0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {061F8774-9A09-48E8-8411-B5BD20560104}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderResourceBinding =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x61f8774, 0x9a09, 0x48e8, { 0x84, 0x11, 0xb5, 0xbd, 0x20, 0x56, 0x1, 0x4 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_resource_binding.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html#a733aaed686db367caa9bbe86f62988c0">QueryInterface</a>( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a>* <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html#ac62372c7b929d065ebc3f73e12c545ea">GetPipelineState</a>() = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html#aa63808de1731984d160b6d06f6c89baa">BindResources</a>(Uint32 ShaderFlags, <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResMapping, Uint32 Flags) = 0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> *<a class="code" href="class_diligent_1_1_i_shader_resource_binding.html#a618057fbf9b67670bd3107e1d9127a90">GetVariable</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> <span class="keywordtype">char</span> *Name) = 0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_resource_binding_html_a618057fbf9b67670bd3107e1d9127a90"><div class="ttname"><a href="class_diligent_1_1_i_shader_resource_binding.html#a618057fbf9b67670bd3107e1d9127a90">Diligent::IShaderResourceBinding::GetVariable</a></div><div class="ttdeci">virtual IShaderVariable * GetVariable(SHADER_TYPE ShaderType, const char *Name)=0</div><div class="ttdoc">Returns variable. </div></div> @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_binding_base_8h_source.html b/doc/html/_shader_resource_binding_base_8h_source.html index cb37c524..07b3b553 100644 --- a/doc/html/_shader_resource_binding_base_8h_source.html +++ b/doc/html/_shader_resource_binding_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceBindingBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBinding.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_base.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><BaseInterface></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<BaseInterface></a> <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_base.html#af54770f1954187f2f795b9ea20ad6581"> 51</a></span>  <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html#af54770f1954187f2f795b9ea20ad6581">ShaderResourceBindingBase</a>( IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPSO, <span class="keywordtype">bool</span> IsInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>( pRefCounters ),</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_pPSO( pPSO ),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html#af127da4b8c75ef46878a0c8762c8c707">m_spPSO</a>( IsInternal ? nullptr : pPSO )</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_ShaderResourceBinding, TObjectBase )</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_base.html#ad65789a093a9c600c91710698fc0fdd6"> 60</a></span>  virtual <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a>* <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html#ad65789a093a9c600c91710698fc0fdd6">GetPipelineState</a>()override final</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> m_pPSO;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_base.html#af127da4b8c75ef46878a0c8762c8c707"> 70</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IPipelineState></a> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html#af127da4b8c75ef46878a0c8762c8c707">m_spPSO</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *m_pPSO;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="ttc" id="class_diligent_1_1_shader_resource_binding_base_html_ad65789a093a9c600c91710698fc0fdd6"><div class="ttname"><a href="class_diligent_1_1_shader_resource_binding_base.html#ad65789a093a9c600c91710698fc0fdd6">Diligent::ShaderResourceBindingBase::GetPipelineState</a></div><div class="ttdeci">virtual IPipelineState * GetPipelineState() override final</div><div class="ttdoc">Implementation of IShaderResourceBinding::GetPipelineState(). </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingBase.h:60</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBinding.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_base.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><BaseInterface></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<BaseInterface></a> <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_base.html#af54770f1954187f2f795b9ea20ad6581"> 51</a></span>  <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html#af54770f1954187f2f795b9ea20ad6581">ShaderResourceBindingBase</a>( IReferenceCounters *pRefCounters, <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *pPSO, <span class="keywordtype">bool</span> IsInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>( pRefCounters ),</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_pPSO( pPSO ),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html#af127da4b8c75ef46878a0c8762c8c707">m_spPSO</a>( IsInternal ? nullptr : pPSO )</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_ShaderResourceBinding, TObjectBase )</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_base.html#ad65789a093a9c600c91710698fc0fdd6"> 60</a></span>  virtual <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a>* <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html#ad65789a093a9c600c91710698fc0fdd6">GetPipelineState</a>()override final</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> m_pPSO;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_base.html#af127da4b8c75ef46878a0c8762c8c707"> 70</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IPipelineState></a> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html#af127da4b8c75ef46878a0c8762c8c707">m_spPSO</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="class_diligent_1_1_i_pipeline_state.html">IPipelineState</a> *m_pPSO;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="ttc" id="class_diligent_1_1_shader_resource_binding_base_html_ad65789a093a9c600c91710698fc0fdd6"><div class="ttname"><a href="class_diligent_1_1_shader_resource_binding_base.html#ad65789a093a9c600c91710698fc0fdd6">Diligent::ShaderResourceBindingBase::GetPipelineState</a></div><div class="ttdeci">virtual IPipelineState * GetPipelineState() override final</div><div class="ttdoc">Implementation of IShaderResourceBinding::GetPipelineState(). </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingBase.h:60</div></div> <div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_shader_resource_binding_base_html_af127da4b8c75ef46878a0c8762c8c707"><div class="ttname"><a href="class_diligent_1_1_shader_resource_binding_base.html#af127da4b8c75ef46878a0c8762c8c707">Diligent::ShaderResourceBindingBase::m_spPSO</a></div><div class="ttdeci">RefCntAutoPtr< IPipelineState > m_spPSO</div><div class="ttdoc">Strong reference to PSO. We must use strong reference, because shader resource binding uses PSO&#39;s mem...</div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingBase.h:70</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_binding_d3_d11_8h_source.html b/doc/html/_shader_resource_binding_d3_d11_8h_source.html index 7bba42dd..e808d3a8 100644 --- a/doc/html/_shader_resource_binding_d3_d11_8h_source.html +++ b/doc/html/_shader_resource_binding_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceBindingD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBinding.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {97A6D4AC-D4AF-4AA9-B46C-67417B89026A}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderResourceBindingD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x97a6d4ac, 0xd4af, 0x4aa9, { 0xb4, 0x6c, 0x67, 0x41, 0x7b, 0x89, 0x2, 0x6a } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_resource_binding_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_resource_binding_d3_d11.html">IShaderResourceBindingD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBinding.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {97A6D4AC-D4AF-4AA9-B46C-67417B89026A}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderResourceBindingD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x97a6d4ac, 0xd4af, 0x4aa9, { 0xb4, 0x6c, 0x67, 0x41, 0x7b, 0x89, 0x2, 0x6a } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_resource_binding_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_resource_binding_d3_d11.html">IShaderResourceBindingD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_resource_binding_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_resource_binding.html">Diligent::IShaderResourceBinding</a></div><div class="ttdoc">Shader resource binding interface. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBinding.h:40</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_resource_binding_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_resource_binding_d3_d11.html">Diligent::IShaderResourceBindingD3D11</a></div><div class="ttdoc">Shader resource binding interface. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingD3D11.h:39</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_binding_d3_d11_impl_8h_source.html b/doc/html/_shader_resource_binding_d3_d11_impl_8h_source.html index 93265bde..411aa2f7 100644 --- a/doc/html/_shader_resource_binding_d3_d11_impl_8h_source.html +++ b/doc/html/_shader_resource_binding_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceBindingD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBindingD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderResourceBindingBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ShaderResourceCacheD3D11.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D11.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html">ShaderResourceBindingD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase</a><IShaderResourceBindingD3D11></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase<IShaderResourceBindingD3D11></a> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">TBase</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html">ShaderResourceBindingD3D11Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html">PipelineStateD3D11Impl</a> *pPSO, <span class="keywordtype">bool</span> IsInternal);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html">ShaderResourceBindingD3D11Impl</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html#a4c604c75575aca767a96e691da4982d0">BindResources</a>(Uint32 ShaderFlags, <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResMapping, Uint32 Flags)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> *<a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html#a4037df9b6e202393d80d9e619a9573e8">GetVariable</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> <span class="keywordtype">char</span> *Name)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> &GetResourceCache(Uint32 Ind){VERIFY_EXPR(Ind < m_NumActiveShaders); <span class="keywordflow">return</span> m_pBoundResourceCaches[Ind];}</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &GetResourceLayout(Uint32 Ind){VERIFY_EXPR(Ind < m_NumActiveShaders); <span class="keywordflow">return</span> m_pResourceLayouts[Ind];}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> BindStaticShaderResources();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> IsStaticResourcesBound(){<span class="keywordflow">return</span> m_bIsStaticResourcesBound;}</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  Uint32 GetNumActiveShaders()</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(m_NumActiveShaders);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Int32 GetActiveShaderTypeIndex(Uint32 s){<span class="keywordflow">return</span> m_ShaderTypeIndex[s];}</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// The caches are indexed by the shader order in the PSO, not shader index</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>* m_pBoundResourceCaches = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>* m_pResourceLayouts = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  Int8 m_ShaderTypeIndex[6] = {};</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Resource layout index in m_ResourceLayouts[] array for every shader stage</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Int8 m_ResourceLayoutIndex[6];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Uint8 m_NumActiveShaders = 0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">bool</span> m_bIsStaticResourcesBound = <span class="keyword">false</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBindingD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderResourceBindingBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ShaderResourceCacheD3D11.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D11.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html">ShaderResourceBindingD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase</a><IShaderResourceBindingD3D11></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase<IShaderResourceBindingD3D11></a> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">TBase</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html">ShaderResourceBindingD3D11Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d11_impl.html">PipelineStateD3D11Impl</a> *pPSO, <span class="keywordtype">bool</span> IsInternal);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html">ShaderResourceBindingD3D11Impl</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html#a4c604c75575aca767a96e691da4982d0">BindResources</a>(Uint32 ShaderFlags, <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResMapping, Uint32 Flags)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> *<a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d11_impl.html#a4037df9b6e202393d80d9e619a9573e8">GetVariable</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> <span class="keywordtype">char</span> *Name)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> &GetResourceCache(Uint32 Ind){VERIFY_EXPR(Ind < m_NumActiveShaders); <span class="keywordflow">return</span> m_pBoundResourceCaches[Ind];}</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &GetResourceLayout(Uint32 Ind){VERIFY_EXPR(Ind < m_NumActiveShaders); <span class="keywordflow">return</span> m_pResourceLayouts[Ind];}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> BindStaticShaderResources();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> IsStaticResourcesBound(){<span class="keywordflow">return</span> m_bIsStaticResourcesBound;}</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  Uint32 GetNumActiveShaders()</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(m_NumActiveShaders);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Int32 GetActiveShaderTypeIndex(Uint32 s){<span class="keywordflow">return</span> m_ShaderTypeIndex[s];}</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// The caches are indexed by the shader order in the PSO, not shader index</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>* m_pBoundResourceCaches = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>* m_pResourceLayouts = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  Int8 m_ShaderTypeIndex[6] = {};</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Resource layout index in m_ResourceLayouts[] array for every shader stage</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Int8 m_ResourceLayoutIndex[6];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Uint8 m_NumActiveShaders = 0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">bool</span> m_bIsStaticResourcesBound = <span class="keyword">false</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> <div class="ttc" id="class_diligent_1_1_shader_resource_cache_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_shader_resource_cache_d3_d11.html">Diligent::ShaderResourceCacheD3D11</a></div><div class="ttdoc">The class implements a cache that holds resources bound to a specific shader stage. </div><div class="ttdef"><b>Definition:</b> ShaderResourceCacheD3D11.h:46</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_binding_d3_d12_8h_source.html b/doc/html/_shader_resource_binding_d3_d12_8h_source.html index 8b76072a..4cb6cf22 100644 --- a/doc/html/_shader_resource_binding_d3_d12_8h_source.html +++ b/doc/html/_shader_resource_binding_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceBindingD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBinding.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {70DD5C7C-81FA-4D9A-942F-D1B91423FAAC}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderResourceBindingD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x70dd5c7c, 0x81fa, 0x4d9a, { 0x94, 0x2f, 0xd1, 0xb9, 0x14, 0x23, 0xfa, 0xac } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_resource_binding_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_resource_binding_d3_d12.html">IShaderResourceBindingD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_resource_binding_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_resource_binding_d3_d12.html">Diligent::IShaderResourceBindingD3D12</a></div><div class="ttdoc">Shader resource binding interface. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingD3D12.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBinding.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {70DD5C7C-81FA-4D9A-942F-D1B91423FAAC}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderResourceBindingD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x70dd5c7c, 0x81fa, 0x4d9a, { 0x94, 0x2f, 0xd1, 0xb9, 0x14, 0x23, 0xfa, 0xac } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_resource_binding_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_resource_binding_d3_d12.html">IShaderResourceBindingD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_resource_binding_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_resource_binding_d3_d12.html">Diligent::IShaderResourceBindingD3D12</a></div><div class="ttdoc">Shader resource binding interface. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingD3D12.h:39</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_resource_binding_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_resource_binding.html">Diligent::IShaderResourceBinding</a></div><div class="ttdoc">Shader resource binding interface. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBinding.h:40</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_binding_d3_d12_impl_8h_source.html b/doc/html/_shader_resource_binding_d3_d12_impl_8h_source.html index 6df3a841..0829b0ae 100644 --- a/doc/html/_shader_resource_binding_d3_d12_impl_8h_source.html +++ b/doc/html/_shader_resource_binding_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceBindingD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBindingD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderResourceBindingBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderResourceCacheD3D12.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D12.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html">ShaderResourceBindingD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase</a><IShaderResourceBindingD3D12></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase<IShaderResourceBindingD3D12></a> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">TBase</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html">ShaderResourceBindingD3D12Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a> *pPSO, <span class="keywordtype">bool</span> IsPSOInternal);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html">ShaderResourceBindingD3D12Impl</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html#ac88a687870aae608663583aef16d2ce8">BindResources</a>(Uint32 ShaderFlags, <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResMapping, Uint32 Flags)<span class="keyword">override</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> *<a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html#a65e999c2855afe4d4cb5441a6e112f93">GetVariable</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> <span class="keywordtype">char</span> *Name)<span class="keyword">override</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>& GetResourceLayout(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ResType)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">auto</span> ShaderInd = GetShaderTypeIndex(ResType);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">auto</span> ResLayoutInd = m_ResourceLayoutIndex[ShaderInd];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  VERIFY(ResLayoutInd >= 0, <span class="stringliteral">"Shader resource layout is not initialized"</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  VERIFY_EXPR(ResLayoutInd < (Int32)m_NumShaders);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> m_pResourceLayouts[ResLayoutInd];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  ShaderResourceCacheD3D12& GetResourceCache(){<span class="keywordflow">return</span> m_ShaderResourceCache;}</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#ifdef VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">void</span> dbgVerifyResourceBindings(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a> *pPSO);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">bool</span> StaticResourcesInitialized()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_bStaticResourcesInitialized;}</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">void</span> InitializeStaticResources(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a> *pPSO);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  ShaderResourceCacheD3D12 m_ShaderResourceCache;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>* m_pResourceLayouts = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Resource layout index in m_ResourceLayouts[] array for every shader stage</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Int8 m_ResourceLayoutIndex[6] = {-1, -1, -1, -1, -1, -1};</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">bool</span> m_bStaticResourcesInitialized = <span class="keyword">false</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  Uint32 m_NumShaders = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="ttc" id="class_diligent_1_1_shader_resource_binding_d3_d12_impl_html_ac88a687870aae608663583aef16d2ce8"><div class="ttname"><a href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html#ac88a687870aae608663583aef16d2ce8">Diligent::ShaderResourceBindingD3D12Impl::BindResources</a></div><div class="ttdeci">virtual void BindResources(Uint32 ShaderFlags, IResourceMapping *pResMapping, Uint32 Flags) override</div><div class="ttdoc">Binds all resource using the resource mapping. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingD3D12Impl.cpp:73</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBindingD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderResourceBindingBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderResourceCacheD3D12.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "ShaderResourceLayoutD3D12.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html">ShaderResourceBindingD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase</a><IShaderResourceBindingD3D12></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase<IShaderResourceBindingD3D12></a> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">TBase</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html">ShaderResourceBindingD3D12Impl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a> *pPSO, <span class="keywordtype">bool</span> IsPSOInternal);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html">ShaderResourceBindingD3D12Impl</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html#ac88a687870aae608663583aef16d2ce8">BindResources</a>(Uint32 ShaderFlags, <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResMapping, Uint32 Flags)<span class="keyword">override</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> *<a class="code" href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html#a65e999c2855afe4d4cb5441a6e112f93">GetVariable</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> <span class="keywordtype">char</span> *Name)<span class="keyword">override</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>& GetResourceLayout(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ResType)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">auto</span> ShaderInd = GetShaderTypeIndex(ResType);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">auto</span> ResLayoutInd = m_ResourceLayoutIndex[ShaderInd];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  VERIFY(ResLayoutInd >= 0, <span class="stringliteral">"Shader resource layout is not initialized"</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  VERIFY_EXPR(ResLayoutInd < (Int32)m_NumShaders);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> m_pResourceLayouts[ResLayoutInd];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  ShaderResourceCacheD3D12& GetResourceCache(){<span class="keywordflow">return</span> m_ShaderResourceCache;}</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#ifdef VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">void</span> dbgVerifyResourceBindings(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a> *pPSO);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">bool</span> StaticResourcesInitialized()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_bStaticResourcesInitialized;}</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">void</span> InitializeStaticResources(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_pipeline_state_d3_d12_impl.html">PipelineStateD3D12Impl</a> *pPSO);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  ShaderResourceCacheD3D12 m_ShaderResourceCache;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>* m_pResourceLayouts = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Resource layout index in m_ResourceLayouts[] array for every shader stage</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Int8 m_ResourceLayoutIndex[6] = {-1, -1, -1, -1, -1, -1};</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">bool</span> m_bStaticResourcesInitialized = <span class="keyword">false</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  Uint32 m_NumShaders = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="ttc" id="class_diligent_1_1_shader_resource_binding_d3_d12_impl_html_ac88a687870aae608663583aef16d2ce8"><div class="ttname"><a href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html#ac88a687870aae608663583aef16d2ce8">Diligent::ShaderResourceBindingD3D12Impl::BindResources</a></div><div class="ttdeci">virtual void BindResources(Uint32 ShaderFlags, IResourceMapping *pResMapping, Uint32 Flags) override</div><div class="ttdoc">Binds all resource using the resource mapping. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingD3D12Impl.cpp:73</div></div> <div class="ttc" id="class_diligent_1_1_shader_resource_binding_d3_d12_impl_html"><div class="ttname"><a href="class_diligent_1_1_shader_resource_binding_d3_d12_impl.html">Diligent::ShaderResourceBindingD3D12Impl</a></div><div class="ttdoc">Implementation of the Diligent::IShaderResourceBindingD3D12 interface. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingD3D12Impl.h:41</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_binding_g_l_8h_source.html b/doc/html/_shader_resource_binding_g_l_8h_source.html index fc7c092c..e08e63c9 100644 --- a/doc/html/_shader_resource_binding_g_l_8h_source.html +++ b/doc/html/_shader_resource_binding_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceBindingGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBinding.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {41DB0329-B6D2-4470-9A58-D44CF4695FC6}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderResourceBindingGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x41db0329, 0xb6d2, 0x4470, { 0x9a, 0x58, 0xd4, 0x4c, 0xf4, 0x69, 0x5f, 0xc6 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_resource_binding_g_l.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_resource_binding_g_l.html">IShaderResourceBindingGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_resource_binding_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_resource_binding_g_l.html">Diligent::IShaderResourceBindingGL</a></div><div class="ttdoc">Shader resource binding interface. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingGL.h:40</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBinding.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {41DB0329-B6D2-4470-9A58-D44CF4695FC6}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_ShaderResourceBindingGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x41db0329, 0xb6d2, 0x4470, { 0x9a, 0x58, 0xd4, 0x4c, 0xf4, 0x69, 0x5f, 0xc6 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_shader_resource_binding_g_l.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_shader_resource_binding_g_l.html">IShaderResourceBindingGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_shader_resource_binding.html">IShaderResourceBinding</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="ttc" id="class_diligent_1_1_i_shader_resource_binding_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_resource_binding_g_l.html">Diligent::IShaderResourceBindingGL</a></div><div class="ttdoc">Shader resource binding interface. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingGL.h:40</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_resource_binding_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_resource_binding.html">Diligent::IShaderResourceBinding</a></div><div class="ttdoc">Shader resource binding interface. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBinding.h:40</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_binding_g_l_impl_8h_source.html b/doc/html/_shader_resource_binding_g_l_impl_8h_source.html index 1d8e4f09..c7225230 100644 --- a/doc/html/_shader_resource_binding_g_l_impl_8h_source.html +++ b/doc/html/_shader_resource_binding_g_l_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceBindingGLImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBindingGL.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceGL.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderResourceBindingBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "GLProgramResources.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html">ShaderResourceBindingGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase</a><IShaderResourceBindingGL></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase<IShaderResourceBindingGL></a> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">TBase</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html">ShaderResourceBindingGLImpl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a> *pPSO);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html">ShaderResourceBindingGLImpl</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html#a86af66b47e1ea015fe064e58b903a916">BindResources</a>(Uint32 ShaderFlags, <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResMapping, Uint32 Flags)<span class="keyword">override</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> *<a class="code" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html#a74fbb80b2a3c7159d7382990a3bba47c">GetVariable</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> <span class="keywordtype">char</span> *Name)<span class="keyword">override</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GLProgramResources &GetProgramResources(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a> *pdbgPSO);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  GLProgramResources m_DynamicProgResources[6];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a> m_DummyShaderVar; </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr<PipelineStateGLImpl></a> m_wpPSO;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="ttc" id="class_diligent_1_1_shader_resource_binding_g_l_impl_html_a74fbb80b2a3c7159d7382990a3bba47c"><div class="ttname"><a href="class_diligent_1_1_shader_resource_binding_g_l_impl.html#a74fbb80b2a3c7159d7382990a3bba47c">Diligent::ShaderResourceBindingGLImpl::GetVariable</a></div><div class="ttdeci">virtual IShaderVariable * GetVariable(SHADER_TYPE ShaderType, const char *Name) override</div><div class="ttdoc">Returns variable. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingGLImpl.cpp:85</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "ShaderResourceBindingGL.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceGL.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ShaderResourceBindingBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "GLProgramResources.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html">ShaderResourceBindingGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase</a><IShaderResourceBindingGL></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">ShaderResourceBindingBase<IShaderResourceBindingGL></a> <a class="code" href="class_diligent_1_1_shader_resource_binding_base.html">TBase</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html">ShaderResourceBindingGLImpl</a>(IReferenceCounters *pRefCounters, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a> *pPSO);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html">ShaderResourceBindingGLImpl</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html#a86af66b47e1ea015fe064e58b903a916">BindResources</a>(Uint32 ShaderFlags, <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a> *pResMapping, Uint32 Flags)<span class="keyword">override</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a> *<a class="code" href="class_diligent_1_1_shader_resource_binding_g_l_impl.html#a74fbb80b2a3c7159d7382990a3bba47c">GetVariable</a>(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <span class="keyword">const</span> <span class="keywordtype">char</span> *Name)<span class="keyword">override</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GLProgramResources &GetProgramResources(<a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType, <a class="code" href="class_diligent_1_1_pipeline_state_g_l_impl.html">PipelineStateGLImpl</a> *pdbgPSO);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  GLProgramResources m_DynamicProgResources[6];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="struct_diligent_1_1_dummy_shader_variable.html">DummyShaderVariable</a> m_DummyShaderVar; </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">RefCntWeakPtr<PipelineStateGLImpl></a> m_wpPSO;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="ttc" id="class_diligent_1_1_shader_resource_binding_g_l_impl_html_a74fbb80b2a3c7159d7382990a3bba47c"><div class="ttname"><a href="class_diligent_1_1_shader_resource_binding_g_l_impl.html#a74fbb80b2a3c7159d7382990a3bba47c">Diligent::ShaderResourceBindingGLImpl::GetVariable</a></div><div class="ttdeci">virtual IShaderVariable * GetVariable(SHADER_TYPE ShaderType, const char *Name) override</div><div class="ttdoc">Returns variable. </div><div class="ttdef"><b>Definition:</b> ShaderResourceBindingGLImpl.cpp:85</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_cache_d3_d11_8h_source.html b/doc/html/_shader_resource_cache_d3_d11_8h_source.html index 7b0aec6f..96ad53a4 100644 --- a/doc/html/_shader_resource_cache_d3_d11_8h_source.html +++ b/doc/html/_shader_resource_cache_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceCacheD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureBaseD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "BufferD3D11Impl.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SamplerD3D11Impl.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// All resources are stored in the continuous memory using the following layout:</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// | CachedCB | ID3D11Buffer* || CachedResource | ID3D11ShaderResourceView* || CachedSampler | ID3D11SamplerState* || CachedResource | ID3D11UnorderedAccessView*||</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// |---------------------------------------------------||--------------------------|---------------------------||------------------------------|-----------------------------||-------------------------|---------------------------||</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// | 0 | 1 | ... | CBCount-1 | 0 | 1 | ...| CBCount-1 || 0 | 1 | ... | SRVCount-1 | 0 | 1 | ... | SRVCount-1 || 0 | 1 | ... | SamplerCount-1 | 0 | 1 | ...| SamplerCount-1 ||0 | 1 | ... | UAVCount-1 | 0 | 1 | ... | UAVCount-1 ||</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">//</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// http://diligentgraphics.com/diligent-engine/architecture/d3d11/shader-resource-cache/</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_cache_d3_d11.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>()</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {}</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>(<a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>& operator = (<a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html"> 61</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html">CachedCB</a></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html#a0681b9b314e7e71fcfdee6a1a7b488fa"> 64</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<BufferD3D11Impl></a> <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html#a0681b9b314e7e71fcfdee6a1a7b488fa">pBuff</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  __forceinline <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<BufferD3D11Impl></a> &&_pBuff)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html#a0681b9b314e7e71fcfdee6a1a7b488fa">pBuff</a> = std::move(_pBuff);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  };</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html"> 72</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html">CachedSampler</a></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html#a9474d89f3ab35a3a412f543fb323be63"> 75</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<class SamplerD3D11Impl></a> <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html#a9474d89f3ab35a3a412f543fb323be63">pSampler</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  __forceinline <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html">SamplerD3D11Impl</a> *pSam)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html#a9474d89f3ab35a3a412f543fb323be63">pSampler</a> = pSam;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html"> 83</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html">CachedResource</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html#a53963c151854c0e310d7fc724ec232b1"> 90</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IDeviceObject></a> <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html#a53963c151854c0e310d7fc724ec232b1">pView</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a>* pTexture;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a>* pBuffer;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// There is no need to keep strong reference to D3D11 resource as</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// it is already kept by either pTexture or pBuffer</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  ID3D11Resource *pd3d11Resource;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html">CachedResource</a>() : pTexture(nullptr), pBuffer(nullptr), pd3d11Resource(nullptr)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {}</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  __forceinline <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<TextureViewD3D11Impl></a>&& pTexView)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  pBuffer = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Avoid unnecessary virtual function calls</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  pTexture = pTexView ? ValidatedCast<TextureBaseD3D11>(pTexView->TextureViewD3D11Impl::GetTexture()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html#a53963c151854c0e310d7fc724ec232b1">pView</a>.Attach(pTexView.Detach());</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  pd3d11Resource = pTexture ? pTexture->TextureBaseD3D11::GetD3D11Texture() : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  __forceinline <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<BufferViewD3D11Impl></a>&& pBufView)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  pTexture = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// Avoid unnecessary virtual function calls</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  pBuffer = pBufView ? ValidatedCast<BufferD3D11Impl>(pBufView->BufferViewD3D11Impl::GetBuffer()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html#a53963c151854c0e310d7fc724ec232b1">pView</a>.Attach(pBufView.Detach());</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  pd3d11Resource = pBuffer ? pBuffer->BufferD3D11Impl::GetD3D11Buffer() : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  };</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> Initialize(Int32 CBCount, Int32 SRVCount, Int32 SamplerCount, Int32 UAVCount, <span class="keyword">class</span> IMemoryAllocator &MemAllocator);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">void</span> Destroy(<span class="keyword">class</span> IMemoryAllocator &MemAllocator);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  __forceinline <span class="keywordtype">void</span> SetCB(Uint32 Slot, RefCntAutoPtr<BufferD3D11Impl> &&pBuffD3D11Impl)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">auto</span> *pd3d11Buff = pBuffD3D11Impl ? pBuffD3D11Impl->BufferD3D11Impl::GetD3D11Buffer() : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  SetD3D11ResourceInternal<CachedCB>(Slot, GetCBCount(), &ShaderResourceCacheD3D11::GetCBArrays, std::move(pBuffD3D11Impl), pd3d11Buff);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  __forceinline <span class="keywordtype">void</span> SetTexSRV(Uint32 Slot, RefCntAutoPtr<TextureViewD3D11Impl>&& pTexView)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">auto</span> pd3d11SRV = pTexView ? <span class="keyword">static_cast<</span>ID3D11ShaderResourceView*<span class="keyword">></span>(pTexView->TextureViewD3D11Impl::GetD3D11View()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  SetD3D11ResourceInternal<CachedResource>(Slot, GetSRVCount(), &ShaderResourceCacheD3D11::GetSRVArrays, std::move(pTexView), pd3d11SRV);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  __forceinline <span class="keywordtype">void</span> SetBufSRV(Uint32 Slot, RefCntAutoPtr<BufferViewD3D11Impl> &&pBuffView)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">auto</span> pd3d11SRV = pBuffView ? <span class="keyword">static_cast<</span>ID3D11ShaderResourceView*<span class="keyword">></span>(pBuffView->BufferViewD3D11Impl::GetD3D11View()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  SetD3D11ResourceInternal<CachedResource>(Slot, GetSRVCount(), &ShaderResourceCacheD3D11::GetSRVArrays, std::move(pBuffView), pd3d11SRV);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  __forceinline <span class="keywordtype">void</span> SetTexUAV(Uint32 Slot, RefCntAutoPtr<TextureViewD3D11Impl>&& pTexView)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">auto</span> pd3d11UAV = pTexView ? <span class="keyword">static_cast<</span>ID3D11UnorderedAccessView*<span class="keyword">></span>(pTexView->TextureViewD3D11Impl::GetD3D11View()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  SetD3D11ResourceInternal<CachedResource>(Slot, GetUAVCount(), &ShaderResourceCacheD3D11::GetUAVArrays, std::move(pTexView), pd3d11UAV);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  __forceinline <span class="keywordtype">void</span> SetBufUAV(Uint32 Slot, RefCntAutoPtr<BufferViewD3D11Impl> &&pBuffView)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">auto</span> pd3d11UAV = pBuffView ? <span class="keyword">static_cast<</span>ID3D11UnorderedAccessView*<span class="keyword">></span>(pBuffView->BufferViewD3D11Impl::GetD3D11View()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  SetD3D11ResourceInternal<CachedResource>(Slot, GetUAVCount(), &ShaderResourceCacheD3D11::GetUAVArrays, std::move(pBuffView), pd3d11UAV);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  __forceinline <span class="keywordtype">void</span> SetSampler(Uint32 Slot, SamplerD3D11Impl *pSampler)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">auto</span> *pd3d11Sampler = pSampler ? pSampler->SamplerD3D11Impl::GetD3D11SamplerState() : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  SetD3D11ResourceInternal<CachedSampler>(Slot, GetSamplerCount(), &ShaderResourceCacheD3D11::GetSamplerArrays, pSampler, pd3d11Sampler);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  __forceinline CachedCB& GetCB(Uint32 Slot)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  VERIFY(Slot < GetCBCount(), <span class="stringliteral">"CB slot is out of range"</span> );</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  ShaderResourceCacheD3D11::CachedCB *CBs;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  ID3D11Buffer **pd3d11CBs;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  GetCBArrays(CBs, pd3d11CBs);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> CBs[Slot];</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  __forceinline CachedResource& GetSRV(Uint32 Slot)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  VERIFY(Slot < GetSRVCount(), <span class="stringliteral">"SRV slot is out of range"</span> );</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  ShaderResourceCacheD3D11::CachedResource *SRVResources;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  ID3D11ShaderResourceView **pd3d11SRVs;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  GetSRVArrays(SRVResources, pd3d11SRVs);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> SRVResources[Slot];</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  __forceinline CachedResource& GetUAV(Uint32 Slot)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  VERIFY(Slot < GetUAVCount(), <span class="stringliteral">"UAV slot is out of range"</span> );</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  ShaderResourceCacheD3D11::CachedResource *UAVResources;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  ID3D11UnorderedAccessView **pd3d11UAVs;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  GetUAVArrays(UAVResources, pd3d11UAVs);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> UAVResources[Slot];</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  __forceinline CachedSampler& GetSampler(Uint32 Slot)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  VERIFY(Slot < GetSamplerCount(), <span class="stringliteral">"Sampler slot is out of range"</span> );</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  ShaderResourceCacheD3D11::CachedSampler *Samplers;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  ID3D11SamplerState **pd3d11Samplers;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  GetSamplerArrays(Samplers, pd3d11Samplers);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> Samplers[Slot];</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  __forceinline <span class="keywordtype">bool</span> IsCBBound(Uint32 Slot)<span class="keyword">const</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  CachedCB* CBs = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  ID3D11Buffer** d3d11CBs = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">const_cast<</span>ShaderResourceCacheD3D11*<span class="keyword">></span>(<span class="keyword">this</span>)->GetCBArrays(CBs, d3d11CBs);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>( Slot < GetCBCount() && d3d11CBs[Slot] != nullptr )</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  VERIFY(CBs[Slot].pBuff != <span class="keyword">nullptr</span>, <span class="stringliteral">"No relevant buffer resource"</span>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  __forceinline <span class="keywordtype">bool</span> IsSRVBound(Uint32 Slot, <span class="keywordtype">bool</span> dbgIsTextureView)<span class="keyword">const</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  CachedResource* SRVResources = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  ID3D11ShaderResourceView** d3d11SRVs = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">const_cast<</span>ShaderResourceCacheD3D11*<span class="keyword">></span>(<span class="keyword">this</span>)->GetSRVArrays(SRVResources, d3d11SRVs);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span>( Slot < GetSRVCount() && d3d11SRVs[Slot] != nullptr )</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  VERIFY( ( dbgIsTextureView && SRVResources[Slot].pTexture != <span class="keyword">nullptr</span>) || </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  (!dbgIsTextureView && SRVResources[Slot].pBuffer != <span class="keyword">nullptr</span>), <span class="stringliteral">"No relevant resource"</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  __forceinline <span class="keywordtype">bool</span> IsUAVBound(Uint32 Slot, <span class="keywordtype">bool</span> dbgIsTextureView)<span class="keyword">const</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  CachedResource* UAVResources = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  ID3D11UnorderedAccessView** d3d11UAVs = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keyword">const_cast<</span>ShaderResourceCacheD3D11*<span class="keyword">></span>(<span class="keyword">this</span>)->GetUAVArrays(UAVResources, d3d11UAVs);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">if</span>( Slot < GetUAVCount() && d3d11UAVs[Slot] != nullptr )</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  VERIFY( ( dbgIsTextureView && UAVResources[Slot].pTexture != <span class="keyword">nullptr</span>) || </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  (!dbgIsTextureView && UAVResources[Slot].pBuffer != <span class="keyword">nullptr</span>), <span class="stringliteral">"No relevant resource"</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  __forceinline <span class="keywordtype">bool</span> IsSamplerBound(Uint32 Slot)<span class="keyword">const</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  CachedSampler* Samplers = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  ID3D11SamplerState** d3d11Samplers = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const_cast<</span>ShaderResourceCacheD3D11*<span class="keyword">></span>(<span class="keyword">this</span>)->GetSamplerArrays(Samplers, d3d11Samplers);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">if</span>( Slot < GetSamplerCount() && d3d11Samplers[Slot] != nullptr )</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  VERIFY(Samplers[Slot].pSampler != <span class="keyword">nullptr</span>, <span class="stringliteral">"No relevant sampler"</span>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordtype">void</span> dbgVerifyCacheConsistency();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">static</span> __forceinline Uint32 PackResourceCounts(Uint32 CBCount, Uint32 SRVCount, Uint32 SamplerCount, Uint32 UAVCount)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  VERIFY_EXPR(CBCount <= D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ); </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  VERIFY_EXPR(SRVCount <= D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  VERIFY_EXPR(SamplerCount <= D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  VERIFY_EXPR(UAVCount <= D3D11_PS_CS_UAV_REGISTER_COUNT);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> (CBCount & 0xFF) | ((SRVCount & 0xFF) << 8) | ((SamplerCount & 0xFF) << 16) | ((UAVCount & 0xFF) << 24);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keyword">static</span> __forceinline Uint32 UnpackCBCount (Uint32 PackedCounts) {<span class="keywordflow">return</span> (PackedCounts >> 0) & 0xFF; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keyword">static</span> __forceinline Uint32 UnpackSRVCount (Uint32 PackedCounts) {<span class="keywordflow">return</span> (PackedCounts >> 8) & 0xFF; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">static</span> __forceinline Uint32 UnpackSamplerCount (Uint32 PackedCounts) {<span class="keywordflow">return</span> (PackedCounts >> 16) & 0xFF; }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">static</span> __forceinline Uint32 UnpackUAVCount (Uint32 PackedCounts) {<span class="keywordflow">return</span> (PackedCounts >> 24) & 0xFF; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  __forceinline Uint32 GetCBCount()<span class="keyword"> const</span>{ <span class="keywordflow">return</span> UnpackCBCount (m_ResourceCounts);}</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  __forceinline Uint32 GetSRVCount()<span class="keyword"> const</span>{ <span class="keywordflow">return</span> UnpackSRVCount (m_ResourceCounts);}</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  __forceinline Uint32 GetSamplerCount()<span class="keyword">const</span>{ <span class="keywordflow">return</span> UnpackSamplerCount(m_ResourceCounts);}</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  __forceinline Uint32 GetUAVCount()<span class="keyword"> const</span>{ <span class="keywordflow">return</span> UnpackUAVCount (m_ResourceCounts);}</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  __forceinline Uint32 GetPackedCounts()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_ResourceCounts;}</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  __forceinline <span class="keywordtype">void</span> GetResourceArrays(CachedCB* &CBs, ID3D11Buffer** &pd3d11CBs, </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  CachedResource* &SRVResources, ID3D11ShaderResourceView** &d3d11SRVs,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  CachedSampler* &Samplers, ID3D11SamplerState** &pd3d11Samplers, </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  CachedResource* &UAVResources, ID3D11UnorderedAccessView** &pd3d11UAVs)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  VERIFY_EXPR(IsInitialized());</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  CBs = <span class="keyword">reinterpret_cast<</span>CachedCB*<span class="keyword">></span>( m_pResourceData );</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  pd3d11CBs = <span class="keyword">reinterpret_cast<</span>ID3D11Buffer**<span class="keyword">></span>( CBs + GetCBCount() );</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  SRVResources = <span class="keyword">reinterpret_cast<</span>CachedResource*<span class="keyword">></span>( pd3d11CBs + GetCBCount() );</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  d3d11SRVs = <span class="keyword">reinterpret_cast<</span>ID3D11ShaderResourceView**<span class="keyword">></span>( SRVResources + GetSRVCount() );</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  Samplers = <span class="keyword">reinterpret_cast<</span>CachedSampler*<span class="keyword">></span>( d3d11SRVs + GetSRVCount() );</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  pd3d11Samplers = <span class="keyword">reinterpret_cast<</span>ID3D11SamplerState**<span class="keyword">></span>( Samplers + GetSamplerCount() );</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  UAVResources = <span class="keyword">reinterpret_cast<</span>CachedResource*<span class="keyword">></span>( pd3d11Samplers + GetSamplerCount() );</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  pd3d11UAVs = <span class="keyword">reinterpret_cast<</span>ID3D11UnorderedAccessView**<span class="keyword">></span>( UAVResources + GetUAVCount() );</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  __forceinline <span class="keywordtype">void</span> GetCBArrays(CachedCB* &CBs, ID3D11Buffer** &pd3d11CBs)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  CBs = <span class="keyword">reinterpret_cast<</span>CachedCB*<span class="keyword">></span>( m_pResourceData );</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  pd3d11CBs = <span class="keyword">reinterpret_cast<</span>ID3D11Buffer**<span class="keyword">></span>( CBs + GetCBCount() );</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  __forceinline <span class="keywordtype">void</span> GetSRVArrays(CachedResource* &SRVResources, ID3D11ShaderResourceView** &d3d11SRVs)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  SRVResources = <span class="keyword">reinterpret_cast<</span>CachedResource*<span class="keyword">></span>( m_pResourceData + (<span class="keyword">sizeof</span>(CachedCB) + <span class="keyword">sizeof</span>(ID3D11Buffer*)) * GetCBCount() );</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  d3d11SRVs = <span class="keyword">reinterpret_cast<</span>ID3D11ShaderResourceView**<span class="keyword">></span>( SRVResources + GetSRVCount() );</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  __forceinline <span class="keywordtype">void</span> GetSamplerArrays(CachedSampler* &Samplers, ID3D11SamplerState** &pd3d11Samplers)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  Samplers = <span class="keyword">reinterpret_cast<</span>CachedSampler*<span class="keyword">></span>( m_pResourceData + </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  (<span class="keyword">sizeof</span>(CachedCB) + <span class="keyword">sizeof</span>(ID3D11Buffer*)) * GetCBCount() + </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  (<span class="keyword">sizeof</span>(CachedResource) + <span class="keyword">sizeof</span>(ID3D11ShaderResourceView*)) * GetSRVCount() );</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  pd3d11Samplers = <span class="keyword">reinterpret_cast<</span>ID3D11SamplerState**<span class="keyword">></span>( Samplers + GetSamplerCount() );</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  __forceinline <span class="keywordtype">void</span> GetUAVArrays(CachedResource* &UAVResources, ID3D11UnorderedAccessView** &pd3d11UAVs)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  UAVResources = <span class="keyword">reinterpret_cast<</span>CachedResource*<span class="keyword">></span>( m_pResourceData + </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  (<span class="keyword">sizeof</span>(CachedCB) + <span class="keyword">sizeof</span>(ID3D11Buffer*)) * GetCBCount() + </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  (<span class="keyword">sizeof</span>(CachedResource) + <span class="keyword">sizeof</span>(ID3D11ShaderResourceView*)) * GetSRVCount() +</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  (<span class="keyword">sizeof</span>(CachedSampler) + <span class="keyword">sizeof</span>(ID3D11SamplerState*)) * GetSamplerCount() );</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  pd3d11UAVs = <span class="keyword">reinterpret_cast<</span>ID3D11UnorderedAccessView**<span class="keyword">></span>( UAVResources + GetUAVCount() );</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  __forceinline <span class="keywordtype">bool</span> IsInitialized()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_ResourceCounts != InvalidResourceCounts;}</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TCachedResourceType, <span class="keyword">typename</span> TGetResourceArraysFunc, <span class="keyword">typename</span> TSrcResourceType, <span class="keyword">typename</span> TD3D11ResourceType></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  __forceinline <span class="keywordtype">void</span> SetD3D11ResourceInternal(Uint32 Slot, Uint32 Size,</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  TGetResourceArraysFunc GetArrays,</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  TSrcResourceType &&pResource, </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  TD3D11ResourceType *pd3d11Resource)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  VERIFY(Slot < Size, <span class="stringliteral">"Resource cache is not big enough"</span> );</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  VERIFY(pResource != <span class="keyword">nullptr</span> && pd3d11Resource != <span class="keyword">nullptr</span> || pResource == <span class="keyword">nullptr</span> && pd3d11Resource == <span class="keyword">nullptr</span>, </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="stringliteral">"Resource and D3D11 resource must be set/unset atomically"</span>);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  TCachedResourceType* Resources;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  TD3D11ResourceType** d3d11ResArr;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  (this->*GetArrays)(Resources, d3d11ResArr);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  Resources[Slot].Set(std::forward<TSrcResourceType>(pResource));</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  d3d11ResArr[Slot] = pd3d11Resource;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keyword">static</span> constexpr Uint32 InvalidResourceCounts = 0xFFFFFFFF;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">// Resource limits in D3D11:</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="comment">// Max CB count: 14</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="comment">// Max SRV count: 128</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// Max Sampler count: 16</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// Max UAV count: 8</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  Uint32 m_ResourceCounts = InvalidResourceCounts; <span class="comment">// CBCount == (m_ResourceCounts >> 0) & 0xFF</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="comment">// SRVCount == (m_ResourceCounts >> 8) & 0xFF</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// SamplerCount == (m_ResourceCounts >> 16) & 0xFF</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="comment">// UAVCount == (m_ResourceCounts >> 24) & 0xFF</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  Uint8 *m_pResourceData = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  IMemoryAllocator *m_pdbgMemoryAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> };</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> }</div><div class="ttc" id="class_diligent_1_1_texture_base_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_d3_d11.html">Diligent::TextureBaseD3D11</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureD3D11 interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseD3D11.h:50</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureBaseD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "BufferD3D11Impl.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SamplerD3D11Impl.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// All resources are stored in the continuous memory using the following layout:</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// | CachedCB | ID3D11Buffer* || CachedResource | ID3D11ShaderResourceView* || CachedSampler | ID3D11SamplerState* || CachedResource | ID3D11UnorderedAccessView*||</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// |---------------------------------------------------||--------------------------|---------------------------||------------------------------|-----------------------------||-------------------------|---------------------------||</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// | 0 | 1 | ... | CBCount-1 | 0 | 1 | ...| CBCount-1 || 0 | 1 | ... | SRVCount-1 | 0 | 1 | ... | SRVCount-1 || 0 | 1 | ... | SamplerCount-1 | 0 | 1 | ...| SamplerCount-1 ||0 | 1 | ... | UAVCount-1 | 0 | 1 | ... | UAVCount-1 ||</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">//</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// http://diligentgraphics.com/diligent-engine/architecture/d3d11/shader-resource-cache/</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_cache_d3_d11.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>()</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {}</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>(<a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>& operator = (<a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html"> 61</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html">CachedCB</a></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html#a0681b9b314e7e71fcfdee6a1a7b488fa"> 64</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<BufferD3D11Impl></a> <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html#a0681b9b314e7e71fcfdee6a1a7b488fa">pBuff</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  __forceinline <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<BufferD3D11Impl></a> &&_pBuff)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html#a0681b9b314e7e71fcfdee6a1a7b488fa">pBuff</a> = std::move(_pBuff);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  };</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html"> 72</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html">CachedSampler</a></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html#a9474d89f3ab35a3a412f543fb323be63"> 75</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<class SamplerD3D11Impl></a> <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html#a9474d89f3ab35a3a412f543fb323be63">pSampler</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  __forceinline <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_sampler_d3_d11_impl.html">SamplerD3D11Impl</a> *pSam)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html#a9474d89f3ab35a3a412f543fb323be63">pSampler</a> = pSam;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html"> 83</a></span>  <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html">CachedResource</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html#a53963c151854c0e310d7fc724ec232b1"> 90</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<IDeviceObject></a> <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html#a53963c151854c0e310d7fc724ec232b1">pView</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a>* pTexture;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="class_diligent_1_1_buffer_d3_d11_impl.html">BufferD3D11Impl</a>* pBuffer;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// There is no need to keep strong reference to D3D11 resource as</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// it is already kept by either pTexture or pBuffer</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  ID3D11Resource *pd3d11Resource;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html">CachedResource</a>() : pTexture(nullptr), pBuffer(nullptr), pd3d11Resource(nullptr)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {}</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  __forceinline <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<TextureViewD3D11Impl></a>&& pTexView)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  pBuffer = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Avoid unnecessary virtual function calls</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  pTexture = pTexView ? ValidatedCast<TextureBaseD3D11>(pTexView->TextureViewD3D11Impl::GetTexture()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html#a53963c151854c0e310d7fc724ec232b1">pView</a>.Attach(pTexView.Detach());</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  pd3d11Resource = pTexture ? pTexture->TextureBaseD3D11::GetD3D11Texture() : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  __forceinline <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<BufferViewD3D11Impl></a>&& pBufView)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  pTexture = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// Avoid unnecessary virtual function calls</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  pBuffer = pBufView ? ValidatedCast<BufferD3D11Impl>(pBufView->BufferViewD3D11Impl::GetBuffer()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html#a53963c151854c0e310d7fc724ec232b1">pView</a>.Attach(pBufView.Detach());</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  pd3d11Resource = pBuffer ? pBuffer->BufferD3D11Impl::GetD3D11Buffer() : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  };</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> Initialize(Int32 CBCount, Int32 SRVCount, Int32 SamplerCount, Int32 UAVCount, <span class="keyword">class</span> IMemoryAllocator &MemAllocator);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">void</span> Destroy(<span class="keyword">class</span> IMemoryAllocator &MemAllocator);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  __forceinline <span class="keywordtype">void</span> SetCB(Uint32 Slot, RefCntAutoPtr<BufferD3D11Impl> &&pBuffD3D11Impl)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">auto</span> *pd3d11Buff = pBuffD3D11Impl ? pBuffD3D11Impl->BufferD3D11Impl::GetD3D11Buffer() : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  SetD3D11ResourceInternal<CachedCB>(Slot, GetCBCount(), &ShaderResourceCacheD3D11::GetCBArrays, std::move(pBuffD3D11Impl), pd3d11Buff);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  __forceinline <span class="keywordtype">void</span> SetTexSRV(Uint32 Slot, RefCntAutoPtr<TextureViewD3D11Impl>&& pTexView)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">auto</span> pd3d11SRV = pTexView ? <span class="keyword">static_cast<</span>ID3D11ShaderResourceView*<span class="keyword">></span>(pTexView->TextureViewD3D11Impl::GetD3D11View()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  SetD3D11ResourceInternal<CachedResource>(Slot, GetSRVCount(), &ShaderResourceCacheD3D11::GetSRVArrays, std::move(pTexView), pd3d11SRV);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  __forceinline <span class="keywordtype">void</span> SetBufSRV(Uint32 Slot, RefCntAutoPtr<BufferViewD3D11Impl> &&pBuffView)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">auto</span> pd3d11SRV = pBuffView ? <span class="keyword">static_cast<</span>ID3D11ShaderResourceView*<span class="keyword">></span>(pBuffView->BufferViewD3D11Impl::GetD3D11View()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  SetD3D11ResourceInternal<CachedResource>(Slot, GetSRVCount(), &ShaderResourceCacheD3D11::GetSRVArrays, std::move(pBuffView), pd3d11SRV);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  __forceinline <span class="keywordtype">void</span> SetTexUAV(Uint32 Slot, RefCntAutoPtr<TextureViewD3D11Impl>&& pTexView)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">auto</span> pd3d11UAV = pTexView ? <span class="keyword">static_cast<</span>ID3D11UnorderedAccessView*<span class="keyword">></span>(pTexView->TextureViewD3D11Impl::GetD3D11View()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  SetD3D11ResourceInternal<CachedResource>(Slot, GetUAVCount(), &ShaderResourceCacheD3D11::GetUAVArrays, std::move(pTexView), pd3d11UAV);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  __forceinline <span class="keywordtype">void</span> SetBufUAV(Uint32 Slot, RefCntAutoPtr<BufferViewD3D11Impl> &&pBuffView)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">auto</span> pd3d11UAV = pBuffView ? <span class="keyword">static_cast<</span>ID3D11UnorderedAccessView*<span class="keyword">></span>(pBuffView->BufferViewD3D11Impl::GetD3D11View()) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  SetD3D11ResourceInternal<CachedResource>(Slot, GetUAVCount(), &ShaderResourceCacheD3D11::GetUAVArrays, std::move(pBuffView), pd3d11UAV);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  __forceinline <span class="keywordtype">void</span> SetSampler(Uint32 Slot, SamplerD3D11Impl *pSampler)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">auto</span> *pd3d11Sampler = pSampler ? pSampler->SamplerD3D11Impl::GetD3D11SamplerState() : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  SetD3D11ResourceInternal<CachedSampler>(Slot, GetSamplerCount(), &ShaderResourceCacheD3D11::GetSamplerArrays, pSampler, pd3d11Sampler);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  __forceinline CachedCB& GetCB(Uint32 Slot)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  VERIFY(Slot < GetCBCount(), <span class="stringliteral">"CB slot is out of range"</span> );</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  ShaderResourceCacheD3D11::CachedCB *CBs;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  ID3D11Buffer **pd3d11CBs;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  GetCBArrays(CBs, pd3d11CBs);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> CBs[Slot];</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  __forceinline CachedResource& GetSRV(Uint32 Slot)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  VERIFY(Slot < GetSRVCount(), <span class="stringliteral">"SRV slot is out of range"</span> );</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  ShaderResourceCacheD3D11::CachedResource *SRVResources;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  ID3D11ShaderResourceView **pd3d11SRVs;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  GetSRVArrays(SRVResources, pd3d11SRVs);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> SRVResources[Slot];</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  __forceinline CachedResource& GetUAV(Uint32 Slot)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  VERIFY(Slot < GetUAVCount(), <span class="stringliteral">"UAV slot is out of range"</span> );</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  ShaderResourceCacheD3D11::CachedResource *UAVResources;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  ID3D11UnorderedAccessView **pd3d11UAVs;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  GetUAVArrays(UAVResources, pd3d11UAVs);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> UAVResources[Slot];</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  __forceinline CachedSampler& GetSampler(Uint32 Slot)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  VERIFY(Slot < GetSamplerCount(), <span class="stringliteral">"Sampler slot is out of range"</span> );</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  ShaderResourceCacheD3D11::CachedSampler *Samplers;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  ID3D11SamplerState **pd3d11Samplers;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  GetSamplerArrays(Samplers, pd3d11Samplers);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> Samplers[Slot];</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  __forceinline <span class="keywordtype">bool</span> IsCBBound(Uint32 Slot)<span class="keyword">const</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  CachedCB* CBs = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  ID3D11Buffer** d3d11CBs = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">const_cast<</span>ShaderResourceCacheD3D11*<span class="keyword">></span>(<span class="keyword">this</span>)->GetCBArrays(CBs, d3d11CBs);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>( Slot < GetCBCount() && d3d11CBs[Slot] != nullptr )</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  VERIFY(CBs[Slot].pBuff != <span class="keyword">nullptr</span>, <span class="stringliteral">"No relevant buffer resource"</span>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  __forceinline <span class="keywordtype">bool</span> IsSRVBound(Uint32 Slot, <span class="keywordtype">bool</span> dbgIsTextureView)<span class="keyword">const</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  CachedResource* SRVResources = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  ID3D11ShaderResourceView** d3d11SRVs = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">const_cast<</span>ShaderResourceCacheD3D11*<span class="keyword">></span>(<span class="keyword">this</span>)->GetSRVArrays(SRVResources, d3d11SRVs);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span>( Slot < GetSRVCount() && d3d11SRVs[Slot] != nullptr )</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  VERIFY( ( dbgIsTextureView && SRVResources[Slot].pTexture != <span class="keyword">nullptr</span>) || </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  (!dbgIsTextureView && SRVResources[Slot].pBuffer != <span class="keyword">nullptr</span>), <span class="stringliteral">"No relevant resource"</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  __forceinline <span class="keywordtype">bool</span> IsUAVBound(Uint32 Slot, <span class="keywordtype">bool</span> dbgIsTextureView)<span class="keyword">const</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  CachedResource* UAVResources = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  ID3D11UnorderedAccessView** d3d11UAVs = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keyword">const_cast<</span>ShaderResourceCacheD3D11*<span class="keyword">></span>(<span class="keyword">this</span>)->GetUAVArrays(UAVResources, d3d11UAVs);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">if</span>( Slot < GetUAVCount() && d3d11UAVs[Slot] != nullptr )</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  VERIFY( ( dbgIsTextureView && UAVResources[Slot].pTexture != <span class="keyword">nullptr</span>) || </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  (!dbgIsTextureView && UAVResources[Slot].pBuffer != <span class="keyword">nullptr</span>), <span class="stringliteral">"No relevant resource"</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  __forceinline <span class="keywordtype">bool</span> IsSamplerBound(Uint32 Slot)<span class="keyword">const</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  CachedSampler* Samplers = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  ID3D11SamplerState** d3d11Samplers = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const_cast<</span>ShaderResourceCacheD3D11*<span class="keyword">></span>(<span class="keyword">this</span>)->GetSamplerArrays(Samplers, d3d11Samplers);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">if</span>( Slot < GetSamplerCount() && d3d11Samplers[Slot] != nullptr )</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  VERIFY(Samplers[Slot].pSampler != <span class="keyword">nullptr</span>, <span class="stringliteral">"No relevant sampler"</span>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordtype">void</span> dbgVerifyCacheConsistency();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">static</span> __forceinline Uint32 PackResourceCounts(Uint32 CBCount, Uint32 SRVCount, Uint32 SamplerCount, Uint32 UAVCount)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  VERIFY_EXPR(CBCount <= D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ); </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  VERIFY_EXPR(SRVCount <= D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  VERIFY_EXPR(SamplerCount <= D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  VERIFY_EXPR(UAVCount <= D3D11_PS_CS_UAV_REGISTER_COUNT);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> (CBCount & 0xFF) | ((SRVCount & 0xFF) << 8) | ((SamplerCount & 0xFF) << 16) | ((UAVCount & 0xFF) << 24);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keyword">static</span> __forceinline Uint32 UnpackCBCount (Uint32 PackedCounts) {<span class="keywordflow">return</span> (PackedCounts >> 0) & 0xFF; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keyword">static</span> __forceinline Uint32 UnpackSRVCount (Uint32 PackedCounts) {<span class="keywordflow">return</span> (PackedCounts >> 8) & 0xFF; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">static</span> __forceinline Uint32 UnpackSamplerCount (Uint32 PackedCounts) {<span class="keywordflow">return</span> (PackedCounts >> 16) & 0xFF; }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">static</span> __forceinline Uint32 UnpackUAVCount (Uint32 PackedCounts) {<span class="keywordflow">return</span> (PackedCounts >> 24) & 0xFF; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  __forceinline Uint32 GetCBCount()<span class="keyword"> const</span>{ <span class="keywordflow">return</span> UnpackCBCount (m_ResourceCounts);}</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  __forceinline Uint32 GetSRVCount()<span class="keyword"> const</span>{ <span class="keywordflow">return</span> UnpackSRVCount (m_ResourceCounts);}</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  __forceinline Uint32 GetSamplerCount()<span class="keyword">const</span>{ <span class="keywordflow">return</span> UnpackSamplerCount(m_ResourceCounts);}</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  __forceinline Uint32 GetUAVCount()<span class="keyword"> const</span>{ <span class="keywordflow">return</span> UnpackUAVCount (m_ResourceCounts);}</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  __forceinline Uint32 GetPackedCounts()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_ResourceCounts;}</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  __forceinline <span class="keywordtype">void</span> GetResourceArrays(CachedCB* &CBs, ID3D11Buffer** &pd3d11CBs, </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  CachedResource* &SRVResources, ID3D11ShaderResourceView** &d3d11SRVs,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  CachedSampler* &Samplers, ID3D11SamplerState** &pd3d11Samplers, </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  CachedResource* &UAVResources, ID3D11UnorderedAccessView** &pd3d11UAVs)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  VERIFY_EXPR(IsInitialized());</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  CBs = <span class="keyword">reinterpret_cast<</span>CachedCB*<span class="keyword">></span>( m_pResourceData );</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  pd3d11CBs = <span class="keyword">reinterpret_cast<</span>ID3D11Buffer**<span class="keyword">></span>( CBs + GetCBCount() );</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  SRVResources = <span class="keyword">reinterpret_cast<</span>CachedResource*<span class="keyword">></span>( pd3d11CBs + GetCBCount() );</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  d3d11SRVs = <span class="keyword">reinterpret_cast<</span>ID3D11ShaderResourceView**<span class="keyword">></span>( SRVResources + GetSRVCount() );</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  Samplers = <span class="keyword">reinterpret_cast<</span>CachedSampler*<span class="keyword">></span>( d3d11SRVs + GetSRVCount() );</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  pd3d11Samplers = <span class="keyword">reinterpret_cast<</span>ID3D11SamplerState**<span class="keyword">></span>( Samplers + GetSamplerCount() );</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  UAVResources = <span class="keyword">reinterpret_cast<</span>CachedResource*<span class="keyword">></span>( pd3d11Samplers + GetSamplerCount() );</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  pd3d11UAVs = <span class="keyword">reinterpret_cast<</span>ID3D11UnorderedAccessView**<span class="keyword">></span>( UAVResources + GetUAVCount() );</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  __forceinline <span class="keywordtype">void</span> GetCBArrays(CachedCB* &CBs, ID3D11Buffer** &pd3d11CBs)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  CBs = <span class="keyword">reinterpret_cast<</span>CachedCB*<span class="keyword">></span>( m_pResourceData );</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  pd3d11CBs = <span class="keyword">reinterpret_cast<</span>ID3D11Buffer**<span class="keyword">></span>( CBs + GetCBCount() );</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  __forceinline <span class="keywordtype">void</span> GetSRVArrays(CachedResource* &SRVResources, ID3D11ShaderResourceView** &d3d11SRVs)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  SRVResources = <span class="keyword">reinterpret_cast<</span>CachedResource*<span class="keyword">></span>( m_pResourceData + (<span class="keyword">sizeof</span>(CachedCB) + <span class="keyword">sizeof</span>(ID3D11Buffer*)) * GetCBCount() );</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  d3d11SRVs = <span class="keyword">reinterpret_cast<</span>ID3D11ShaderResourceView**<span class="keyword">></span>( SRVResources + GetSRVCount() );</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  __forceinline <span class="keywordtype">void</span> GetSamplerArrays(CachedSampler* &Samplers, ID3D11SamplerState** &pd3d11Samplers)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  Samplers = <span class="keyword">reinterpret_cast<</span>CachedSampler*<span class="keyword">></span>( m_pResourceData + </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  (<span class="keyword">sizeof</span>(CachedCB) + <span class="keyword">sizeof</span>(ID3D11Buffer*)) * GetCBCount() + </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  (<span class="keyword">sizeof</span>(CachedResource) + <span class="keyword">sizeof</span>(ID3D11ShaderResourceView*)) * GetSRVCount() );</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  pd3d11Samplers = <span class="keyword">reinterpret_cast<</span>ID3D11SamplerState**<span class="keyword">></span>( Samplers + GetSamplerCount() );</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  __forceinline <span class="keywordtype">void</span> GetUAVArrays(CachedResource* &UAVResources, ID3D11UnorderedAccessView** &pd3d11UAVs)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  UAVResources = <span class="keyword">reinterpret_cast<</span>CachedResource*<span class="keyword">></span>( m_pResourceData + </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  (<span class="keyword">sizeof</span>(CachedCB) + <span class="keyword">sizeof</span>(ID3D11Buffer*)) * GetCBCount() + </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  (<span class="keyword">sizeof</span>(CachedResource) + <span class="keyword">sizeof</span>(ID3D11ShaderResourceView*)) * GetSRVCount() +</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  (<span class="keyword">sizeof</span>(CachedSampler) + <span class="keyword">sizeof</span>(ID3D11SamplerState*)) * GetSamplerCount() );</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  pd3d11UAVs = <span class="keyword">reinterpret_cast<</span>ID3D11UnorderedAccessView**<span class="keyword">></span>( UAVResources + GetUAVCount() );</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  __forceinline <span class="keywordtype">bool</span> IsInitialized()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_ResourceCounts != InvalidResourceCounts;}</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TCachedResourceType, <span class="keyword">typename</span> TGetResourceArraysFunc, <span class="keyword">typename</span> TSrcResourceType, <span class="keyword">typename</span> TD3D11ResourceType></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  __forceinline <span class="keywordtype">void</span> SetD3D11ResourceInternal(Uint32 Slot, Uint32 Size,</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  TGetResourceArraysFunc GetArrays,</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  TSrcResourceType &&pResource, </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  TD3D11ResourceType *pd3d11Resource)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  VERIFY(Slot < Size, <span class="stringliteral">"Resource cache is not big enough"</span> );</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  VERIFY(pResource != <span class="keyword">nullptr</span> && pd3d11Resource != <span class="keyword">nullptr</span> || pResource == <span class="keyword">nullptr</span> && pd3d11Resource == <span class="keyword">nullptr</span>, </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="stringliteral">"Resource and D3D11 resource must be set/unset atomically"</span>);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  TCachedResourceType* Resources;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  TD3D11ResourceType** d3d11ResArr;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  (this->*GetArrays)(Resources, d3d11ResArr);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  Resources[Slot].Set(std::forward<TSrcResourceType>(pResource));</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  d3d11ResArr[Slot] = pd3d11Resource;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keyword">static</span> constexpr Uint32 InvalidResourceCounts = 0xFFFFFFFF;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">// Resource limits in D3D11:</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="comment">// Max CB count: 14</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="comment">// Max SRV count: 128</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// Max Sampler count: 16</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// Max UAV count: 8</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  Uint32 m_ResourceCounts = InvalidResourceCounts; <span class="comment">// CBCount == (m_ResourceCounts >> 0) & 0xFF</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="comment">// SRVCount == (m_ResourceCounts >> 8) & 0xFF</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// SamplerCount == (m_ResourceCounts >> 16) & 0xFF</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="comment">// UAVCount == (m_ResourceCounts >> 24) & 0xFF</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  Uint8 *m_pResourceData = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  IMemoryAllocator *m_pdbgMemoryAllocator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> };</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> }</div><div class="ttc" id="class_diligent_1_1_texture_base_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_d3_d11.html">Diligent::TextureBaseD3D11</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureD3D11 interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseD3D11.h:50</div></div> <div class="ttc" id="class_diligent_1_1_shader_resource_cache_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_shader_resource_cache_d3_d11.html">Diligent::ShaderResourceCacheD3D11</a></div><div class="ttdoc">The class implements a cache that holds resources bound to a specific shader stage. </div><div class="ttdef"><b>Definition:</b> ShaderResourceCacheD3D11.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler_html_a9474d89f3ab35a3a412f543fb323be63"><div class="ttname"><a href="struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html#a9474d89f3ab35a3a412f543fb323be63">Diligent::ShaderResourceCacheD3D11::CachedSampler::pSampler</a></div><div class="ttdeci">RefCntAutoPtr< class SamplerD3D11Impl > pSampler</div><div class="ttdoc">Strong reference to the sampler. </div><div class="ttdef"><b>Definition:</b> ShaderResourceCacheD3D11.h:75</div></div> @@ -86,7 +86,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_cache_d3_d12_8h_source.html b/doc/html/_shader_resource_cache_d3_d12_8h_source.html index c81687cc..c42b6f6e 100644 --- a/doc/html/_shader_resource_cache_d3_d12_8h_source.html +++ b/doc/html/_shader_resource_cache_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceCacheD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// http://diligentgraphics.com/diligent-engine/architecture/d3d12/shader-resource-cache/</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Shader resource cache stores D3D12 resources in a continuous chunk of memory:</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// </span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">//</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// __________________________________________________________</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// m_pMemory | m_pResources, m_NumResources |</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// | | |</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// V | V</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// | RootTable[0] | .... | RootTable[Nrt-1] | Res[0] | ... | Res[n-1] | .... | Res[0] | ... | Res[m-1] |</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// | A \</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// | | \</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// |________________________________________________| \RefCntAutoPtr</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// m_pResources, m_NumResources \_________ </span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// | Object |</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// --------- </span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">//</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// Nrt = m_NumTables</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">//</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// The cache is also assigned decriptor heap space to store shader visible descriptor handles (for non-dynamic resources).</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">//</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// </span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// | DescrptHndl[0] ... DescrptHndl[n-1] | DescrptHndl[0] ... DescrptHndl[m-1] | </span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// A A</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// | |</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// | TableStartOffset | TableStartOffset</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// | |</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// | RootTable[0] | RootTable[1] | RootTable[2] | .... | RootTable[Nrt] |</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// | | </span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// | TableStartOffset | InvalidDescriptorOffset</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// | |</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// V V</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// | DescrptHndl[0] ... DescrptHndl[n-1] | X</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// DESCRIPTOR_HEAP_TYPE_SAMPLER</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">//</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">//</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">//</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// The allocation is inexed by the offset from the beginning of the root table</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// Each root table is assigned the space to store exactly m_NumResources resources</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// Dynamic resources are not assigned space in the descriptor heap allocation.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">//</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">//</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// | RootTable[i] | Res[0] ... Res[n-1] |</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// \</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// TableStartOffset\____</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// \</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// V</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// ..... | DescrptHndl[0] ... DescrptHndl[n-1] | ....</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">//</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keyword">enum class</span> CachedResourceType : Int32</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Unknown = -1,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  CBV = 0,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  TexSRV,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  BufSRV,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  TexUAV,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  BufUAV,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  Sampler,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  NumTypes</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">class </span>ShaderResourceCacheD3D12</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// This enum is used for debug purposes only</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">enum</span> DbgCacheContentType</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  StaticShaderResources,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  SRBResources</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  };</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  ShaderResourceCacheD3D12(DbgCacheContentType dbgContentType)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  : m_DbgContentType(dbgContentType)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  ~ShaderResourceCacheD3D12();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> Initialize(IMemoryAllocator &MemAllocator, Uint32 NumTables, Uint32 TableSizes[]);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">static</span> constexpr Uint32 InvalidDescriptorOffset = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">//http://diligentgraphics.com/diligent-engine/architecture/d3d12/shader-resource-cache#Cache-Structure</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">struct </span>Resource</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  CachedResourceType Type = CachedResourceType::Unknown;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// CPU descriptor handle of a cached resource in CPU-only descriptor heap</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// Note that for dynamic resources, this is the only available CPU descriptor handle</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  D3D12_CPU_DESCRIPTOR_HANDLE CPUDescriptorHandle = {0};</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  RefCntAutoPtr<IDeviceObject> pObject;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  };</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">class </span>RootTable</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  RootTable(Uint32 NumResources, Resource *pResources) : </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_NumResources(NumResources),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_pResources(pResources)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {}</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">inline</span> Resource& GetResource(Uint32 OffsetFromTableStart, </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">const</span> D3D12_DESCRIPTOR_HEAP_TYPE dbgDescriptorHeapType, </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> dbgRefShaderType)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  VERIFY(m_dbgHeapType == dbgDescriptorHeapType, <span class="stringliteral">"Incosistent descriptor heap type"</span> );</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  VERIFY(m_dbgShaderType == dbgRefShaderType, <span class="stringliteral">"Incosistent shader type"</span> );</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  VERIFY(OffsetFromTableStart < m_NumResources, <span class="stringliteral">"Root table at index is not large enough to store descriptor at offset "</span>, OffsetFromTableStart );</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> m_pResources[OffsetFromTableStart];</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">inline</span> Uint32 GetSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumResources; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// Offset from the start of the descriptor heap allocation to the start of the table</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  Uint32 m_TableStartOffset = InvalidDescriptorOffset;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordtype">void</span> SetDebugAttribs(Uint32 MaxOffset, </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">const</span> D3D12_DESCRIPTOR_HEAP_TYPE dbgDescriptorHeapType, </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> dbgRefShaderType)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  { </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  VERIFY_EXPR(m_NumResources == MaxOffset);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_dbgHeapType = dbgDescriptorHeapType;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  m_dbgShaderType = dbgRefShaderType;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  D3D12_DESCRIPTOR_HEAP_TYPE DbgGetHeapType()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_dbgHeapType;}</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">const</span> Uint32 m_NumResources = 0;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  D3D12_DESCRIPTOR_HEAP_TYPE m_dbgHeapType = D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> m_dbgShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  Resource* <span class="keyword">const</span> m_pResources = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  };</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">inline</span> RootTable& GetRootTable(Uint32 RootIndex)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  VERIFY_EXPR(RootIndex < m_NumTables);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>RootTable*<span class="keyword">></span>(m_pMemory)[RootIndex];</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">inline</span> Uint32 GetNumRootTables()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumTables; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">void</span> SetDescriptorHeapSpace(DescriptorHeapAllocation &&CbcSrvUavHeapSpace, DescriptorHeapAllocation &&SamplerHeapSpace)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  VERIFY(m_SamplerHeapSpace.GetCpuHandle().ptr == 0 && m_CbvSrvUavHeapSpace.GetCpuHandle().ptr == 0, <span class="stringliteral">"Space has already been allocated in GPU descriptor heaps"</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  Uint32 NumSamplerDescriptors = 0, NumSrvCbvUavDescriptors = 0;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">for</span> (Uint32 rt = 0; rt < m_NumTables; ++rt)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">auto</span> &Tbl = GetRootTable(rt);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span>(Tbl.m_TableStartOffset != InvalidDescriptorOffset)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span>(Tbl.DbgGetHeapType() == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  VERIFY(Tbl.m_TableStartOffset == NumSrvCbvUavDescriptors, <span class="stringliteral">"Descriptor space allocation is not continuous"</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  NumSrvCbvUavDescriptors = std::max(NumSrvCbvUavDescriptors, Tbl.m_TableStartOffset + Tbl.GetSize());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  VERIFY(Tbl.m_TableStartOffset == NumSamplerDescriptors, <span class="stringliteral">"Descriptor space allocation is not continuous"</span>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  NumSamplerDescriptors = std::max(NumSamplerDescriptors, Tbl.m_TableStartOffset + Tbl.GetSize());</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  VERIFY(NumSrvCbvUavDescriptors == CbcSrvUavHeapSpace.GetNumHandles() || NumSrvCbvUavDescriptors == 0 && CbcSrvUavHeapSpace.GetCpuHandle(0).ptr == 0, <span class="stringliteral">"Unexpected descriptor heap allocation size"</span> );</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  VERIFY(NumSamplerDescriptors == SamplerHeapSpace.GetNumHandles() || NumSamplerDescriptors == 0 && SamplerHeapSpace.GetCpuHandle(0).ptr == 0, <span class="stringliteral">"Unexpected descriptor heap allocation size"</span> );</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_CbvSrvUavHeapSpace = std::move(CbcSrvUavHeapSpace);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  m_SamplerHeapSpace = std::move(SamplerHeapSpace);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  ID3D12DescriptorHeap* GetSrvCbvUavDescriptorHeap(){<span class="keywordflow">return</span> m_CbvSrvUavHeapSpace.GetDescriptorHeap();}</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  ID3D12DescriptorHeap* GetSamplerDescriptorHeap() {<span class="keywordflow">return</span> m_SamplerHeapSpace.GetDescriptorHeap();}</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// Returns CPU descriptor handle of a shader visible descriptor heap allocation</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">template</span><D3D12_DESCRIPTOR_HEAP_TYPE HeapType></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  D3D12_CPU_DESCRIPTOR_HANDLE GetShaderVisibleTableCPUDescriptorHandle(Uint32 RootParamInd, Uint32 OffsetFromTableStart = 0)</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">auto</span> &RootParam = GetRootTable(RootParamInd);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  VERIFY(HeapType == RootParam.DbgGetHeapType(), <span class="stringliteral">"Invalid descriptor heap type"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  D3D12_CPU_DESCRIPTOR_HANDLE CPUDescriptorHandle = {0};</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// Descriptor heap allocation is not assigned for dynamic resources or </span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// in a special case when resource cache is used to store static </span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// variable assignments for a shader. It is also not assigned to root views</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>( RootParam.m_TableStartOffset != InvalidDescriptorOffset )</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  VERIFY(RootParam.m_TableStartOffset + OffsetFromTableStart < RootParam.m_NumResources, <span class="stringliteral">"Offset is out of range"</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>( HeapType == D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER )</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  VERIFY_EXPR(!m_SamplerHeapSpace.IsNull());</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  CPUDescriptorHandle = m_SamplerHeapSpace.GetCpuHandle(RootParam.m_TableStartOffset + OffsetFromTableStart);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( HeapType == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV )</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  VERIFY_EXPR(!m_CbvSrvUavHeapSpace.IsNull());</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  CPUDescriptorHandle = m_CbvSrvUavHeapSpace.GetCpuHandle(RootParam.m_TableStartOffset + OffsetFromTableStart);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  UNEXPECTED(<span class="stringliteral">"Unexpected descriptor heap type"</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> CPUDescriptorHandle;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// Returns GPU descriptor handle of a shader visible descriptor table</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">template</span><D3D12_DESCRIPTOR_HEAP_TYPE HeapType></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  D3D12_GPU_DESCRIPTOR_HANDLE GetShaderVisibleTableGPUDescriptorHandle(Uint32 RootParamInd, Uint32 OffsetFromTableStart = 0)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">auto</span> &RootParam = GetRootTable(RootParamInd);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  VERIFY(RootParam.m_TableStartOffset != InvalidDescriptorOffset, <span class="stringliteral">"GPU descriptor handle must never be requested for dynamic resources"</span>);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  VERIFY(RootParam.m_TableStartOffset + OffsetFromTableStart < RootParam.m_NumResources, <span class="stringliteral">"Offset is out of range"</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  D3D12_GPU_DESCRIPTOR_HANDLE GPUDescriptorHandle = {0};</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  VERIFY( HeapType == RootParam.DbgGetHeapType(), <span class="stringliteral">"Invalid descriptor heap type"</span>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>( HeapType == D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER )</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  VERIFY_EXPR(!m_SamplerHeapSpace.IsNull());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  GPUDescriptorHandle = m_SamplerHeapSpace.GetGpuHandle(RootParam.m_TableStartOffset + OffsetFromTableStart);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( HeapType == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV )</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  VERIFY_EXPR(!m_CbvSrvUavHeapSpace.IsNull());</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  GPUDescriptorHandle = m_CbvSrvUavHeapSpace.GetGpuHandle(RootParam.m_TableStartOffset + OffsetFromTableStart);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  UNEXPECTED(<span class="stringliteral">"Unexpected descriptor heap type"</span>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> GPUDescriptorHandle;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// Only for debug purposes: indicates what types of resources are stored in the cache</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  DbgCacheContentType DbgGetContentType()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_DbgContentType;}</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  ShaderResourceCacheD3D12(<span class="keyword">const</span> ShaderResourceCacheD3D12&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  ShaderResourceCacheD3D12(ShaderResourceCacheD3D12&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  ShaderResourceCacheD3D12& operator = (<span class="keyword">const</span> ShaderResourceCacheD3D12&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  ShaderResourceCacheD3D12& operator = (ShaderResourceCacheD3D12&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// Allocation in a GPU-visible sampler descriptor heap</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  DescriptorHeapAllocation m_SamplerHeapSpace;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">// Allocation in a GPU-visible CBV/SRV/UAV descriptor heap</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  DescriptorHeapAllocation m_CbvSrvUavHeapSpace;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  IMemoryAllocator *m_pAllocator=<span class="keyword">nullptr</span>; </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordtype">void</span> *m_pMemory = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  Uint32 m_NumTables = 0;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// Only for debug purposes: indicates what types of resources are stored in the cache</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">const</span> DbgCacheContentType m_DbgContentType;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> };</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> }</div><div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// http://diligentgraphics.com/diligent-engine/architecture/d3d12/shader-resource-cache/</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Shader resource cache stores D3D12 resources in a continuous chunk of memory:</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// </span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">//</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// __________________________________________________________</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// m_pMemory | m_pResources, m_NumResources |</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// | | |</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// V | V</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// | RootTable[0] | .... | RootTable[Nrt-1] | Res[0] | ... | Res[n-1] | .... | Res[0] | ... | Res[m-1] |</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// | A \</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// | | \</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// |________________________________________________| \RefCntAutoPtr</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// m_pResources, m_NumResources \_________ </span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// | Object |</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// --------- </span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">//</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// Nrt = m_NumTables</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">//</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// The cache is also assigned decriptor heap space to store shader visible descriptor handles (for non-dynamic resources).</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">//</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// </span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// | DescrptHndl[0] ... DescrptHndl[n-1] | DescrptHndl[0] ... DescrptHndl[m-1] | </span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// A A</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// | |</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// | TableStartOffset | TableStartOffset</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// | |</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// | RootTable[0] | RootTable[1] | RootTable[2] | .... | RootTable[Nrt] |</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// | | </span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// | TableStartOffset | InvalidDescriptorOffset</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// | |</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// V V</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// | DescrptHndl[0] ... DescrptHndl[n-1] | X</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// DESCRIPTOR_HEAP_TYPE_SAMPLER</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">//</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">//</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">//</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// The allocation is inexed by the offset from the beginning of the root table</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// Each root table is assigned the space to store exactly m_NumResources resources</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// Dynamic resources are not assigned space in the descriptor heap allocation.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">//</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">//</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// | RootTable[i] | Res[0] ... Res[n-1] |</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// \</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// TableStartOffset\____</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// \</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// V</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// ..... | DescrptHndl[0] ... DescrptHndl[n-1] | ....</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">//</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keyword">enum class</span> CachedResourceType : Int32</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Unknown = -1,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  CBV = 0,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  TexSRV,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  BufSRV,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  TexUAV,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  BufUAV,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  Sampler,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  NumTypes</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">class </span>ShaderResourceCacheD3D12</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// This enum is used for debug purposes only</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">enum</span> DbgCacheContentType</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  StaticShaderResources,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  SRBResources</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  };</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  ShaderResourceCacheD3D12(DbgCacheContentType dbgContentType)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  : m_DbgContentType(dbgContentType)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  ~ShaderResourceCacheD3D12();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> Initialize(IMemoryAllocator &MemAllocator, Uint32 NumTables, Uint32 TableSizes[]);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">static</span> constexpr Uint32 InvalidDescriptorOffset = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">//http://diligentgraphics.com/diligent-engine/architecture/d3d12/shader-resource-cache#Cache-Structure</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">struct </span>Resource</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  CachedResourceType Type = CachedResourceType::Unknown;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// CPU descriptor handle of a cached resource in CPU-only descriptor heap</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// Note that for dynamic resources, this is the only available CPU descriptor handle</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  D3D12_CPU_DESCRIPTOR_HANDLE CPUDescriptorHandle = {0};</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  RefCntAutoPtr<IDeviceObject> pObject;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  };</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">class </span>RootTable</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  RootTable(Uint32 NumResources, Resource *pResources) : </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_NumResources(NumResources),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_pResources(pResources)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {}</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">inline</span> Resource& GetResource(Uint32 OffsetFromTableStart, </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">const</span> D3D12_DESCRIPTOR_HEAP_TYPE dbgDescriptorHeapType, </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> dbgRefShaderType)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  VERIFY(m_dbgHeapType == dbgDescriptorHeapType, <span class="stringliteral">"Incosistent descriptor heap type"</span> );</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  VERIFY(m_dbgShaderType == dbgRefShaderType, <span class="stringliteral">"Incosistent shader type"</span> );</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  VERIFY(OffsetFromTableStart < m_NumResources, <span class="stringliteral">"Root table at index is not large enough to store descriptor at offset "</span>, OffsetFromTableStart );</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> m_pResources[OffsetFromTableStart];</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">inline</span> Uint32 GetSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumResources; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// Offset from the start of the descriptor heap allocation to the start of the table</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  Uint32 m_TableStartOffset = InvalidDescriptorOffset;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordtype">void</span> SetDebugAttribs(Uint32 MaxOffset, </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">const</span> D3D12_DESCRIPTOR_HEAP_TYPE dbgDescriptorHeapType, </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> dbgRefShaderType)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  { </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  VERIFY_EXPR(m_NumResources == MaxOffset);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_dbgHeapType = dbgDescriptorHeapType;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  m_dbgShaderType = dbgRefShaderType;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  D3D12_DESCRIPTOR_HEAP_TYPE DbgGetHeapType()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_dbgHeapType;}</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">const</span> Uint32 m_NumResources = 0;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  D3D12_DESCRIPTOR_HEAP_TYPE m_dbgHeapType = D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> m_dbgShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  Resource* <span class="keyword">const</span> m_pResources = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  };</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">inline</span> RootTable& GetRootTable(Uint32 RootIndex)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  VERIFY_EXPR(RootIndex < m_NumTables);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>RootTable*<span class="keyword">></span>(m_pMemory)[RootIndex];</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">inline</span> Uint32 GetNumRootTables()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_NumTables; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">void</span> SetDescriptorHeapSpace(DescriptorHeapAllocation &&CbcSrvUavHeapSpace, DescriptorHeapAllocation &&SamplerHeapSpace)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  VERIFY(m_SamplerHeapSpace.GetCpuHandle().ptr == 0 && m_CbvSrvUavHeapSpace.GetCpuHandle().ptr == 0, <span class="stringliteral">"Space has already been allocated in GPU descriptor heaps"</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  Uint32 NumSamplerDescriptors = 0, NumSrvCbvUavDescriptors = 0;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">for</span> (Uint32 rt = 0; rt < m_NumTables; ++rt)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">auto</span> &Tbl = GetRootTable(rt);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span>(Tbl.m_TableStartOffset != InvalidDescriptorOffset)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span>(Tbl.DbgGetHeapType() == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  VERIFY(Tbl.m_TableStartOffset == NumSrvCbvUavDescriptors, <span class="stringliteral">"Descriptor space allocation is not continuous"</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  NumSrvCbvUavDescriptors = std::max(NumSrvCbvUavDescriptors, Tbl.m_TableStartOffset + Tbl.GetSize());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  VERIFY(Tbl.m_TableStartOffset == NumSamplerDescriptors, <span class="stringliteral">"Descriptor space allocation is not continuous"</span>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  NumSamplerDescriptors = std::max(NumSamplerDescriptors, Tbl.m_TableStartOffset + Tbl.GetSize());</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  VERIFY(NumSrvCbvUavDescriptors == CbcSrvUavHeapSpace.GetNumHandles() || NumSrvCbvUavDescriptors == 0 && CbcSrvUavHeapSpace.GetCpuHandle(0).ptr == 0, <span class="stringliteral">"Unexpected descriptor heap allocation size"</span> );</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  VERIFY(NumSamplerDescriptors == SamplerHeapSpace.GetNumHandles() || NumSamplerDescriptors == 0 && SamplerHeapSpace.GetCpuHandle(0).ptr == 0, <span class="stringliteral">"Unexpected descriptor heap allocation size"</span> );</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_CbvSrvUavHeapSpace = std::move(CbcSrvUavHeapSpace);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  m_SamplerHeapSpace = std::move(SamplerHeapSpace);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  ID3D12DescriptorHeap* GetSrvCbvUavDescriptorHeap(){<span class="keywordflow">return</span> m_CbvSrvUavHeapSpace.GetDescriptorHeap();}</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  ID3D12DescriptorHeap* GetSamplerDescriptorHeap() {<span class="keywordflow">return</span> m_SamplerHeapSpace.GetDescriptorHeap();}</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// Returns CPU descriptor handle of a shader visible descriptor heap allocation</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">template</span><D3D12_DESCRIPTOR_HEAP_TYPE HeapType></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  D3D12_CPU_DESCRIPTOR_HANDLE GetShaderVisibleTableCPUDescriptorHandle(Uint32 RootParamInd, Uint32 OffsetFromTableStart = 0)</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">auto</span> &RootParam = GetRootTable(RootParamInd);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  VERIFY(HeapType == RootParam.DbgGetHeapType(), <span class="stringliteral">"Invalid descriptor heap type"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  D3D12_CPU_DESCRIPTOR_HANDLE CPUDescriptorHandle = {0};</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// Descriptor heap allocation is not assigned for dynamic resources or </span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// in a special case when resource cache is used to store static </span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// variable assignments for a shader. It is also not assigned to root views</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>( RootParam.m_TableStartOffset != InvalidDescriptorOffset )</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  VERIFY(RootParam.m_TableStartOffset + OffsetFromTableStart < RootParam.m_NumResources, <span class="stringliteral">"Offset is out of range"</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>( HeapType == D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER )</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  VERIFY_EXPR(!m_SamplerHeapSpace.IsNull());</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  CPUDescriptorHandle = m_SamplerHeapSpace.GetCpuHandle(RootParam.m_TableStartOffset + OffsetFromTableStart);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( HeapType == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV )</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  VERIFY_EXPR(!m_CbvSrvUavHeapSpace.IsNull());</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  CPUDescriptorHandle = m_CbvSrvUavHeapSpace.GetCpuHandle(RootParam.m_TableStartOffset + OffsetFromTableStart);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  UNEXPECTED(<span class="stringliteral">"Unexpected descriptor heap type"</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> CPUDescriptorHandle;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// Returns GPU descriptor handle of a shader visible descriptor table</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">template</span><D3D12_DESCRIPTOR_HEAP_TYPE HeapType></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  D3D12_GPU_DESCRIPTOR_HANDLE GetShaderVisibleTableGPUDescriptorHandle(Uint32 RootParamInd, Uint32 OffsetFromTableStart = 0)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">auto</span> &RootParam = GetRootTable(RootParamInd);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  VERIFY(RootParam.m_TableStartOffset != InvalidDescriptorOffset, <span class="stringliteral">"GPU descriptor handle must never be requested for dynamic resources"</span>);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  VERIFY(RootParam.m_TableStartOffset + OffsetFromTableStart < RootParam.m_NumResources, <span class="stringliteral">"Offset is out of range"</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  D3D12_GPU_DESCRIPTOR_HANDLE GPUDescriptorHandle = {0};</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  VERIFY( HeapType == RootParam.DbgGetHeapType(), <span class="stringliteral">"Invalid descriptor heap type"</span>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>( HeapType == D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER )</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  VERIFY_EXPR(!m_SamplerHeapSpace.IsNull());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  GPUDescriptorHandle = m_SamplerHeapSpace.GetGpuHandle(RootParam.m_TableStartOffset + OffsetFromTableStart);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( HeapType == D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV )</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  VERIFY_EXPR(!m_CbvSrvUavHeapSpace.IsNull());</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  GPUDescriptorHandle = m_CbvSrvUavHeapSpace.GetGpuHandle(RootParam.m_TableStartOffset + OffsetFromTableStart);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  UNEXPECTED(<span class="stringliteral">"Unexpected descriptor heap type"</span>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> GPUDescriptorHandle;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// Only for debug purposes: indicates what types of resources are stored in the cache</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  DbgCacheContentType DbgGetContentType()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_DbgContentType;}</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  ShaderResourceCacheD3D12(<span class="keyword">const</span> ShaderResourceCacheD3D12&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  ShaderResourceCacheD3D12(ShaderResourceCacheD3D12&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  ShaderResourceCacheD3D12& operator = (<span class="keyword">const</span> ShaderResourceCacheD3D12&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  ShaderResourceCacheD3D12& operator = (ShaderResourceCacheD3D12&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// Allocation in a GPU-visible sampler descriptor heap</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  DescriptorHeapAllocation m_SamplerHeapSpace;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">// Allocation in a GPU-visible CBV/SRV/UAV descriptor heap</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  DescriptorHeapAllocation m_CbvSrvUavHeapSpace;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  IMemoryAllocator *m_pAllocator=<span class="keyword">nullptr</span>; </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordtype">void</span> *m_pMemory = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  Uint32 m_NumTables = 0;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// Only for debug purposes: indicates what types of resources are stored in the cache</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">const</span> DbgCacheContentType m_DbgContentType;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> };</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> }</div><div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">Diligent::SHADER_TYPE_UNKNOWN</a></div><div class="ttdoc">Unknown shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:48</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_layout_d3_d11_8h_source.html b/doc/html/_shader_resource_layout_d3_d11_8h_source.html index ebb4cefd..74e317ac 100644 --- a/doc/html/_shader_resource_layout_d3_d11_8h_source.html +++ b/doc/html/_shader_resource_layout_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceLayoutD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Set this define to 1 to use unordered_map to store shader variables. </span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Note that sizeof(m_VariableHash)==128 (release mode, MS compiler, x64).</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define USE_VARIABLE_HASH_MAP 0</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "ShaderResources.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "ShaderResourceCacheD3D11.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "EngineD3D11Defines.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "ShaderVariableD3DBase.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "ShaderResourcesD3D11.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">class </span>IMemoryAllocator;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_layout_d3_d11.html"> 49</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>(IObject &Owner, IMemoryAllocator& ResLayoutDataAllocator);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// No copies or moves</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>&&) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>& operator = (<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span> Initialize(<span class="keyword">const</span> std::shared_ptr<const ShaderResourcesD3D11>& pSrcResources,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *VarTypes, </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  Uint32 NumVarTypes, </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>& ResourceCache,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  IMemoryAllocator& ResCacheDataAllocator,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  IMemoryAllocator& ResLayoutDataAllocator);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">void</span> CopyResources(<a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> &DstCache);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">using</span> ShaderVariableD3D11Base = ShaderVariableD3DBase<ShaderResourceLayoutD3D11>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">struct </span>ConstBuffBindInfo : ShaderVariableD3D11Base</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  ConstBuffBindInfo( <span class="keyword">const</span> D3DShaderResourceAttribs& ResourceAttribs,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &ParentResLayout ) :</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  ShaderVariableD3D11Base(ParentResLayout, ResourceAttribs)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {}</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Non-virtual function</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  __forceinline <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> *dbgResLayout);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">for</span>(Uint32 elem=0; elem < NumElements; ++elem)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  BindResource(ppObjects[elem], FirstElement+elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  __forceinline <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">struct </span>TexAndSamplerBindInfo : ShaderVariableD3D11Base</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  TexAndSamplerBindInfo( <span class="keyword">const</span> D3DShaderResourceAttribs& _TextureAttribs, </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& _SamplerAttribs,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &ParentResLayout) :</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  ShaderVariableD3D11Base(ParentResLayout, _TextureAttribs),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  SamplerAttribs(_SamplerAttribs)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {}</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// Non-virtual function</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  __forceinline <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> *dbgResLayout);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">for</span>(Uint32 elem=0; elem < NumElements; ++elem)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  BindResource(ppObjects[elem], FirstElement+elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  __forceinline <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">static</span> <span class="keyword">const</span> D3DShaderResourceAttribs InvalidSamplerAttribs;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">const</span> D3DShaderResourceAttribs &SamplerAttribs;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  };</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">struct </span>TexUAVBindInfo : ShaderVariableD3D11Base</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  TexUAVBindInfo( <span class="keyword">const</span> D3DShaderResourceAttribs& ResourceAttribs,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &ParentResLayout ) :</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  ShaderVariableD3D11Base(ParentResLayout, ResourceAttribs)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {}</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// Provide non-virtual function</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  __forceinline <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> *dbgResLayout);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">for</span>(Uint32 elem=0; elem < NumElements; ++elem)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  BindResource(ppObjects[elem], FirstElement+elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  __forceinline <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  };</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">struct </span>BuffUAVBindInfo : ShaderVariableD3D11Base</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  BuffUAVBindInfo( <span class="keyword">const</span> D3DShaderResourceAttribs& ResourceAttribs,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &ParentResLayout ) :</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  ShaderVariableD3D11Base(ParentResLayout, ResourceAttribs)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {}</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// Non-virtual function</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  __forceinline <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> *dbgResLayout);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">for</span>(Uint32 elem=0; elem < NumElements; ++elem)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  BindResource(ppObjects[elem], FirstElement+elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  __forceinline <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  };</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">struct </span>BuffSRVBindInfo : ShaderVariableD3D11Base</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  BuffSRVBindInfo( <span class="keyword">const</span> D3DShaderResourceAttribs& ResourceAttribs,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &ParentResLayout ) :</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  ShaderVariableD3D11Base(ParentResLayout, ResourceAttribs)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {}</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// Non-virtual function</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  __forceinline <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> *dbgResLayout);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">for</span>(Uint32 elem=0; elem < NumElements; ++elem)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  BindResource(ppObjects[elem], FirstElement+elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  __forceinline <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  };</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// dbgResourceCache is only used for sanity check and as a remainder that the resource cache must be alive</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// while Layout is alive</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">void</span> BindResources( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> &dbgResourceCache );</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#ifdef VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">void</span> dbgVerifyBindings()<span class="keyword">const</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* GetShaderVariable( <span class="keyword">const</span> Char* Name );</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  __forceinline <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> GetShaderType()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pResources->GetShaderType();}</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  IObject& GetOwner(){<span class="keywordflow">return</span> m_Owner;}</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">void</span> InitVariablesHashMap();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">const</span> Char* GetShaderName()<span class="keyword">const</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// No need to use shared pointer, as the resource cache is either part of the same</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// ShaderD3D11Impl object, or ShaderResourceBindingD3D11Impl object</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> *m_pResourceCache = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  std::unique_ptr<void, STDDeleterRawMem<void> > m_ResourceBuffer;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// Offsets in bytes</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  Uint16 m_TexAndSamplersOffset = 0;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  Uint16 m_TexUAVsOffset = 0;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  Uint16 m_BuffUAVsOffset = 0;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  Uint16 m_BuffSRVsOffset = 0;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  Uint8 m_NumCBs = 0; <span class="comment">// Max == 14</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  Uint8 m_NumTexSRVs = 0; <span class="comment">// Max == 128</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  Uint8 m_NumTexUAVs = 0; <span class="comment">// Max == 8</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  Uint8 m_NumBufUAVs = 0; <span class="comment">// Max == 8</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  Uint8 m_NumBufSRVs = 0; <span class="comment">// Max == 128</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  ConstBuffBindInfo& GetCB(Uint32 cb)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  VERIFY_EXPR(cb<m_NumCBs);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>ConstBuffBindInfo*<span class="keyword">></span>(m_ResourceBuffer.get())[cb];</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">const</span> ConstBuffBindInfo& GetCB(Uint32 cb)<span class="keyword">const</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  VERIFY_EXPR(cb<m_NumCBs);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>ConstBuffBindInfo*<span class="keyword">></span>(m_ResourceBuffer.get())[cb];</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  TexAndSamplerBindInfo& GetTexSRV(Uint32 t)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  VERIFY_EXPR(t<m_NumTexSRVs);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>TexAndSamplerBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_TexAndSamplersOffset )[t];</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keyword">const</span> TexAndSamplerBindInfo& GetTexSRV(Uint32 t)<span class="keyword">const</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  VERIFY_EXPR(t<m_NumTexSRVs);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>TexAndSamplerBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_TexAndSamplersOffset )[t];</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  TexUAVBindInfo& GetTexUAV(Uint32 u)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  VERIFY_EXPR(u < m_NumTexUAVs);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>TexUAVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_TexUAVsOffset)[u];</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">const</span> TexUAVBindInfo& GetTexUAV(Uint32 u)<span class="keyword">const</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  VERIFY_EXPR(u < m_NumTexUAVs);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>TexUAVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_TexUAVsOffset)[u];</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  BuffUAVBindInfo& GetBufUAV(Uint32 u)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  VERIFY_EXPR(u < m_NumBufUAVs);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>BuffUAVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_BuffUAVsOffset)[u];</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">const</span> BuffUAVBindInfo& GetBufUAV(Uint32 u)<span class="keyword">const</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  VERIFY_EXPR(u < m_NumBufUAVs);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>BuffUAVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_BuffUAVsOffset)[u];</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  BuffSRVBindInfo& GetBufSRV(Uint32 s)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  VERIFY_EXPR(s < m_NumBufSRVs);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>BuffSRVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_BuffSRVsOffset)[s];</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">const</span> BuffSRVBindInfo& GetBufSRV(Uint32 s)<span class="keyword">const</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  VERIFY_EXPR(s < m_NumBufSRVs);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>BuffSRVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_BuffSRVsOffset)[s];</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keyword">template</span><<span class="keyword">typename</span> THandleCB,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">typename</span> THandleTexSRV,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keyword">typename</span> THandleTexUAV,</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keyword">typename</span> THandleBufSRV,</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keyword">typename</span> THandleBufUAV></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">void</span> HandleResources(THandleCB HandleCB,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  THandleTexSRV HandleTexSRV,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  THandleTexUAV HandleTexUAV,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  THandleBufSRV HandleBufSRV,</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  THandleBufUAV HandleBufUAV)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">for</span> (Uint32 cb = 0; cb < m_NumCBs; ++cb)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  HandleCB(GetCB(cb));</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">for</span> (Uint32 t = 0; t < m_NumTexSRVs; ++t)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  HandleTexSRV(GetTexSRV(t));</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">for</span> (Uint32 u = 0; u < m_NumTexUAVs; ++u)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  HandleTexUAV(GetTexUAV(u));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">for</span> (Uint32 s = 0; s < m_NumBufSRVs; ++s)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  HandleBufSRV(GetBufSRV(s));</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">for</span> (Uint32 u = 0; u < m_NumBufUAVs; ++u)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  HandleBufUAV(GetBufUAV(u));</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor">#if USE_VARIABLE_HASH_MAP</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="comment">// Hash map to look up shader variables by name.</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// Note that sizeof(m_VariableHash)==128 (release mode, MS compiler, x64).</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keyword">typedef</span> std::pair<HashMapStringKey, IShaderVariable*> VariableHashData;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  std::unordered_map<HashMapStringKey, IShaderVariable*, std::hash<HashMapStringKey>, std::equal_to<HashMapStringKey>, STDAllocatorRawMem<VariableHashData> > m_VariableHash;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  std::shared_ptr<const ShaderResourcesD3D11> m_pResources;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  IObject &m_Owner;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> };</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Set this define to 1 to use unordered_map to store shader variables. </span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Note that sizeof(m_VariableHash)==128 (release mode, MS compiler, x64).</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define USE_VARIABLE_HASH_MAP 0</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "ShaderResources.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "ShaderResourceCacheD3D11.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "EngineD3D11Defines.h"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "ShaderVariableD3DBase.h"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "ShaderResourcesD3D11.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">class </span>IMemoryAllocator;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_layout_d3_d11.html"> 49</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>(IObject &Owner, IMemoryAllocator& ResLayoutDataAllocator);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// No copies or moves</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>&&) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>& operator = (<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span> Initialize(<span class="keyword">const</span> std::shared_ptr<const ShaderResourcesD3D11>& pSrcResources,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *VarTypes, </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  Uint32 NumVarTypes, </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a>& ResourceCache,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  IMemoryAllocator& ResCacheDataAllocator,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  IMemoryAllocator& ResLayoutDataAllocator);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">void</span> CopyResources(<a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> &DstCache);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">using</span> ShaderVariableD3D11Base = ShaderVariableD3DBase<ShaderResourceLayoutD3D11>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">struct </span>ConstBuffBindInfo : ShaderVariableD3D11Base</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  ConstBuffBindInfo( <span class="keyword">const</span> D3DShaderResourceAttribs& ResourceAttribs,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &ParentResLayout ) :</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  ShaderVariableD3D11Base(ParentResLayout, ResourceAttribs)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {}</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Non-virtual function</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  __forceinline <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> *dbgResLayout);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">for</span>(Uint32 elem=0; elem < NumElements; ++elem)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  BindResource(ppObjects[elem], FirstElement+elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  __forceinline <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">struct </span>TexAndSamplerBindInfo : ShaderVariableD3D11Base</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  TexAndSamplerBindInfo( <span class="keyword">const</span> D3DShaderResourceAttribs& _TextureAttribs, </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& _SamplerAttribs,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &ParentResLayout) :</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  ShaderVariableD3D11Base(ParentResLayout, _TextureAttribs),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  SamplerAttribs(_SamplerAttribs)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {}</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// Non-virtual function</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  __forceinline <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> *dbgResLayout);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">for</span>(Uint32 elem=0; elem < NumElements; ++elem)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  BindResource(ppObjects[elem], FirstElement+elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  __forceinline <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">static</span> <span class="keyword">const</span> D3DShaderResourceAttribs InvalidSamplerAttribs;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">const</span> D3DShaderResourceAttribs &SamplerAttribs;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  };</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">struct </span>TexUAVBindInfo : ShaderVariableD3D11Base</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  TexUAVBindInfo( <span class="keyword">const</span> D3DShaderResourceAttribs& ResourceAttribs,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &ParentResLayout ) :</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  ShaderVariableD3D11Base(ParentResLayout, ResourceAttribs)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {}</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// Provide non-virtual function</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  __forceinline <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> *dbgResLayout);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">for</span>(Uint32 elem=0; elem < NumElements; ++elem)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  BindResource(ppObjects[elem], FirstElement+elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  __forceinline <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  };</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">struct </span>BuffUAVBindInfo : ShaderVariableD3D11Base</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  BuffUAVBindInfo( <span class="keyword">const</span> D3DShaderResourceAttribs& ResourceAttribs,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &ParentResLayout ) :</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  ShaderVariableD3D11Base(ParentResLayout, ResourceAttribs)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {}</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// Non-virtual function</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  __forceinline <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> *dbgResLayout);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">for</span>(Uint32 elem=0; elem < NumElements; ++elem)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  BindResource(ppObjects[elem], FirstElement+elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  __forceinline <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  };</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">struct </span>BuffSRVBindInfo : ShaderVariableD3D11Base</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  BuffSRVBindInfo( <span class="keyword">const</span> D3DShaderResourceAttribs& ResourceAttribs,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> &ParentResLayout ) :</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  ShaderVariableD3D11Base(ParentResLayout, ResourceAttribs)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {}</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// Non-virtual function</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  __forceinline <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d11.html">ShaderResourceLayoutD3D11</a> *dbgResLayout);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">for</span>(Uint32 elem=0; elem < NumElements; ++elem)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  BindResource(ppObjects[elem], FirstElement+elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  __forceinline <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  };</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// dbgResourceCache is only used for sanity check and as a remainder that the resource cache must be alive</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// while Layout is alive</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">void</span> BindResources( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> &dbgResourceCache );</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#ifdef VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">void</span> dbgVerifyBindings()<span class="keyword">const</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* GetShaderVariable( <span class="keyword">const</span> Char* Name );</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  __forceinline <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> GetShaderType()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_pResources->GetShaderType();}</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  IObject& GetOwner(){<span class="keywordflow">return</span> m_Owner;}</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">void</span> InitVariablesHashMap();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">const</span> Char* GetShaderName()<span class="keyword">const</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// No need to use shared pointer, as the resource cache is either part of the same</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// ShaderD3D11Impl object, or ShaderResourceBindingD3D11Impl object</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> *m_pResourceCache = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  std::unique_ptr<void, STDDeleterRawMem<void> > m_ResourceBuffer;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// Offsets in bytes</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  Uint16 m_TexAndSamplersOffset = 0;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  Uint16 m_TexUAVsOffset = 0;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  Uint16 m_BuffUAVsOffset = 0;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  Uint16 m_BuffSRVsOffset = 0;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  Uint8 m_NumCBs = 0; <span class="comment">// Max == 14</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  Uint8 m_NumTexSRVs = 0; <span class="comment">// Max == 128</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  Uint8 m_NumTexUAVs = 0; <span class="comment">// Max == 8</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  Uint8 m_NumBufUAVs = 0; <span class="comment">// Max == 8</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  Uint8 m_NumBufSRVs = 0; <span class="comment">// Max == 128</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  ConstBuffBindInfo& GetCB(Uint32 cb)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  VERIFY_EXPR(cb<m_NumCBs);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>ConstBuffBindInfo*<span class="keyword">></span>(m_ResourceBuffer.get())[cb];</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">const</span> ConstBuffBindInfo& GetCB(Uint32 cb)<span class="keyword">const</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  VERIFY_EXPR(cb<m_NumCBs);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>ConstBuffBindInfo*<span class="keyword">></span>(m_ResourceBuffer.get())[cb];</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  TexAndSamplerBindInfo& GetTexSRV(Uint32 t)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  VERIFY_EXPR(t<m_NumTexSRVs);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>TexAndSamplerBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_TexAndSamplersOffset )[t];</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keyword">const</span> TexAndSamplerBindInfo& GetTexSRV(Uint32 t)<span class="keyword">const</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  VERIFY_EXPR(t<m_NumTexSRVs);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>TexAndSamplerBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_TexAndSamplersOffset )[t];</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  TexUAVBindInfo& GetTexUAV(Uint32 u)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  VERIFY_EXPR(u < m_NumTexUAVs);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>TexUAVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_TexUAVsOffset)[u];</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">const</span> TexUAVBindInfo& GetTexUAV(Uint32 u)<span class="keyword">const</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  VERIFY_EXPR(u < m_NumTexUAVs);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>TexUAVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_TexUAVsOffset)[u];</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  BuffUAVBindInfo& GetBufUAV(Uint32 u)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  VERIFY_EXPR(u < m_NumBufUAVs);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>BuffUAVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_BuffUAVsOffset)[u];</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">const</span> BuffUAVBindInfo& GetBufUAV(Uint32 u)<span class="keyword">const</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  VERIFY_EXPR(u < m_NumBufUAVs);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>BuffUAVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_BuffUAVsOffset)[u];</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  BuffSRVBindInfo& GetBufSRV(Uint32 s)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  VERIFY_EXPR(s < m_NumBufSRVs);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>BuffSRVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_BuffSRVsOffset)[s];</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">const</span> BuffSRVBindInfo& GetBufSRV(Uint32 s)<span class="keyword">const</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  VERIFY_EXPR(s < m_NumBufSRVs);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>BuffSRVBindInfo*<span class="keyword">></span>( <span class="keyword">reinterpret_cast<</span>Uint8*<span class="keyword">></span>(m_ResourceBuffer.get()) + m_BuffSRVsOffset)[s];</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keyword">template</span><<span class="keyword">typename</span> THandleCB,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">typename</span> THandleTexSRV,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keyword">typename</span> THandleTexUAV,</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keyword">typename</span> THandleBufSRV,</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keyword">typename</span> THandleBufUAV></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">void</span> HandleResources(THandleCB HandleCB,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  THandleTexSRV HandleTexSRV,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  THandleTexUAV HandleTexUAV,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  THandleBufSRV HandleBufSRV,</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  THandleBufUAV HandleBufUAV)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">for</span> (Uint32 cb = 0; cb < m_NumCBs; ++cb)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  HandleCB(GetCB(cb));</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">for</span> (Uint32 t = 0; t < m_NumTexSRVs; ++t)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  HandleTexSRV(GetTexSRV(t));</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">for</span> (Uint32 u = 0; u < m_NumTexUAVs; ++u)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  HandleTexUAV(GetTexUAV(u));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">for</span> (Uint32 s = 0; s < m_NumBufSRVs; ++s)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  HandleBufSRV(GetBufSRV(s));</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">for</span> (Uint32 u = 0; u < m_NumBufUAVs; ++u)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  HandleBufUAV(GetBufUAV(u));</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor">#if USE_VARIABLE_HASH_MAP</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="comment">// Hash map to look up shader variables by name.</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// Note that sizeof(m_VariableHash)==128 (release mode, MS compiler, x64).</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keyword">typedef</span> std::pair<HashMapStringKey, IShaderVariable*> VariableHashData;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  std::unordered_map<HashMapStringKey, IShaderVariable*, std::hash<HashMapStringKey>, std::equal_to<HashMapStringKey>, STDAllocatorRawMem<VariableHashData> > m_VariableHash;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  std::shared_ptr<const ShaderResourcesD3D11> m_pResources;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  IObject &m_Owner;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> };</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> <div class="ttc" id="class_diligent_1_1_shader_resource_cache_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_shader_resource_cache_d3_d11.html">Diligent::ShaderResourceCacheD3D11</a></div><div class="ttdoc">The class implements a cache that holds resources bound to a specific shader stage. </div><div class="ttdef"><b>Definition:</b> ShaderResourceCacheD3D11.h:46</div></div> <div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resource_layout_d3_d12_8h_source.html b/doc/html/_shader_resource_layout_d3_d12_8h_source.html index 84f91cc4..031eb035 100644 --- a/doc/html/_shader_resource_layout_d3_d12_8h_source.html +++ b/doc/html/_shader_resource_layout_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourceLayoutD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// http://diligentgraphics.com/diligent-engine/architecture/d3d12/shader-resource-layout/</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// All resources are stored in a single continuous chunk of memory using the following layout:</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// m_ResourceBuffer m_Samplers </span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// | | </span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// | SRV_CBV_UAV[0] ... SRV_CBV_UAV[s-1] | SRV_CBV_UAV[s] ... SRV_CBV_UAV[s+m-1] | SRV_CBV_UAV[s+m] ... SRV_CBV_UAV[s+m+d-1] || Sampler[0] ... Sampler[s'-1] | Sampler[s'] ... Sampler[s'+m'-1] | Sampler[s'+m'] ... Sampler[s'+m'+d'-1] ||</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// | | | || | | ||</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// | SHADER_VARIABLE_TYPE_STATIC | SHADER_VARIABLE_TYPE_MUTABLE | SHADER_VARIABLE_TYPE_DYNAMIC || SHADER_VARIABLE_TYPE_STATIC | SHADER_VARIABLE_TYPE_MUTABLE | SHADER_VARIABLE_TYPE_DYNAMIC ||</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// | | | || </span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">//</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// s == m_NumCbvSrvUav[SHADER_VARIABLE_TYPE_STATIC]</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// m == m_NumCbvSrvUav[SHADER_VARIABLE_TYPE_MUTABLE]</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// d == m_NumCbvSrvUav[SHADER_VARIABLE_TYPE_DYNAMIC]</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">//</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// s' == m_NumSamplers[SHADER_VARIABLE_TYPE_STATIC]</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// m' == m_NumSamplers[SHADER_VARIABLE_TYPE_MUTABLE]</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// d' == m_NumSamplers[SHADER_VARIABLE_TYPE_DYNAMIC]</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">//</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// Memory buffer is allocated through the allocator provided by the pipeline state. If allocation granularity > 1, fixed block</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// memory allocator is used. This ensures that all resources from different shader resource bindings reside in</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// continuous memory. If allocation granularity == 1, raw allocator is used.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">//</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// Every SRV_CBV_UAV and Sampler structure holds a reference to D3DShaderResourceAttribs structure from ShaderResources.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// ShaderResourceLayoutD3D12 holds shared pointer to ShaderResourcesD3D12 instance. Note that ShaderResources::SamplerId </span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// references a sampler in ShaderResources, while SRV_CBV_UAV::SamplerId references a sampler in ShaderResourceLayoutD3D12, </span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// and the two are not the same</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">//</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">//</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// ________________SamplerId____________________</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// | |</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// _________________ ______________|_____________________________________________V________</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// | ShaderResources |--------------->| CBs | TexSRVs | TexUAVs | BufSRVs | BufUAVs | Samplers |</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// |_________________| |________|___________|___________|___________|___________|____________|</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// A A A A </span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// | \ / \</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// |shared_ptr Ref Ref Ref</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// ________|__________________ ________\________________________/_________________________\_________________________________________</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// | ShaderResourceLayoutD3D12 |--------------->| SRV_CBV_UAV[0] | SRV_CBV_UAV[1] | ... | Sampler[0] | Sampler[1] | ... |</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// |___________________________| |___________________|_________________|_______________|__________________|_________________|__________|</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// | | | A | / </span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// | Raw ptr | |___________________SamplerId________________________| | /</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// | | / /</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// | \ / /</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// ________V_________________ ________V_______________________________________________________V____V__ </span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// | | | | </span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// | ShaderResourceCacheD3D12 |---------------->| Resources | </span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// |__________________________| |________________________________________________________________________| </span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">//</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// http://diligentgraphics.com/diligent-engine/architecture/d3d12/shader-resource-layout#Figure2</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// Resources in the resource cache are identified by the root index and offset in the descriptor table</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">//</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// </span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// ShaderResourceLayoutD3D12 is used as follows:</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// * Every pipeline state object (PipelineStateD3D12Impl) maintains shader resource layout for every active shader stage</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// ** These resource layouts are not bound to a resource cache and are used as reference layouts for shader resource binding objects</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// ** All variable types are preserved</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// ** Root indices and descriptor table offsets are assigned during the initialization</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// ** Resource cache is not assigned</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// * Every shader object (ShaderD3D12Impl) contains shader resource layout that facilitates management of static shader resources</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// ** The resource layout defines artificial layout and is bound to a resource cache that actually holds references to resources</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// ** Resource cache is assigned and initialized</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// * Every shader resource binding object (ShaderResourceBindingD3D12Impl) encompasses shader resource layout for every active shader </span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// stage in the parent pipeline state</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// ** Resource layouts are initialized by clonning reference layouts from the pipeline state object and are bound to the resource </span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// cache that holds references to resources set by the application</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// ** All shader variable types are clonned</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// ** Resource cache is assigned, but not initialized; Initialization is performed by the root signature</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">//</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// Set this define to 1 to use unordered_map to store shader variables. </span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// Note that sizeof(m_VariableHash)==128 (release mode, MS compiler, x64).</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#define USE_VARIABLE_HASH_MAP 0</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#include "unordered_map"</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#include "ShaderD3DBase.h"</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#include "ShaderResourcesD3D12.h"</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#include "ShaderResourceCacheD3D12.h"</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#include "ShaderVariableD3DBase.h"</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor"># define VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// sizeof(ShaderResourceLayoutD3D12)==80 (MS compiler, x64)</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_layout_d3_d12.html"> 125</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>(IObject &Owner, IMemoryAllocator &ResourceLayoutDataAllocator);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// This constructor is used by ShaderResourceBindingD3D12Impl to clone layout from the reference layout in PipelineStateD3D12Impl. </span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// Root indices and descriptor table offsets must be correct. Resource cache is assigned, but not initialized.</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>(IObject &Owner, </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>& SrcLayout, </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  IMemoryAllocator &ResourceLayoutDataAllocator,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *AllowedVarTypes, </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  Uint32 NumAllowedTypes, </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  ShaderResourceCacheD3D12 &ResourceCache);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>& operator =(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>& operator =(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// The method is called by</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// - ShaderD3D12Impl class instance to initialize static resource layout and initialize shader resource cache</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// to hold static resources</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// - PipelineStateD3D12Impl class instance to reference all types of resources (static, mutable, dynamic). </span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Root indices and descriptor table offsets are assigned during the initialization; </span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// no shader resource cache is provided</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordtype">void</span> Initialize(ID3D12Device *pd3d12Device,</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">const</span> std::shared_ptr<const ShaderResourcesD3D12>& pSrcResources, </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  IMemoryAllocator &LayoutDataAllocator,</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *VarTypes, </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  Uint32 NumAllowedTypes, </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  ShaderResourceCacheD3D12 *pResourceCache,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a> *pRootSig);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// sizeof(SRV_CBV_UAV) == 32 (x64)</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">struct </span>SRV_CBV_UAV : ShaderVariableD3DBase<ShaderResourceLayoutD3D12></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  SRV_CBV_UAV(<span class="keyword">const</span> SRV_CBV_UAV&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  SRV_CBV_UAV(SRV_CBV_UAV&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  SRV_CBV_UAV& operator = (<span class="keyword">const</span> SRV_CBV_UAV&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  SRV_CBV_UAV& operator = (SRV_CBV_UAV&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">static</span> constexpr Uint32 ResTypeBits = 3;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">static</span> constexpr Uint32 RootIndBits = 16-ResTypeBits;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">static</span> constexpr Uint32 RootIndMask = (1 << RootIndBits)-1;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">static</span> constexpr Uint32 ResTypeMask = (1 << ResTypeBits)-1;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">static</span> constexpr Uint16 InvalidRootIndex = RootIndMask;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">static</span> constexpr Uint16 MaxRootIndex = RootIndMask-1;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">static</span> constexpr Uint32 InvalidSamplerId = 0xFFFF;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">static</span> constexpr Uint32 MaxSamplerId = InvalidSamplerId-1;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">static</span> constexpr Uint32 InvalidOffset = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  static_assert( static_cast<int>(CachedResourceType::NumTypes) <= ResTypeMask, <span class="stringliteral">"3 bits is not enough to store CachedResourceType"</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">const</span> Uint32 OffsetFromTableStart;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// Special copy constructor. Note that sampler ID refers to the ID of the sampler</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// within THIS layout, and may not be the same as in original layout</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  SRV_CBV_UAV(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &ParentLayout, <span class="keyword">const</span> SRV_CBV_UAV &rhs, Uint32 SamId ) :</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  ResType_RootIndex(rhs.ResType_RootIndex),</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  SamplerId(static_cast<Uint16>(SamId)),</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  OffsetFromTableStart(rhs.OffsetFromTableStart),</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  ShaderVariableD3DBase<ShaderResourceLayoutD3D12>(ParentLayout, rhs.Attribs)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  VERIFY(SamId == InvalidSamplerId || SamId <= MaxSamplerId, <span class="stringliteral">"Sampler id exceeds max allowed value ("</span>, MaxSamplerId, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  VERIFY(rhs.m_ParentResLayout.m_pResources == m_ParentResLayout.m_pResources, <span class="stringliteral">"Incosistent resource references"</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  VERIFY(IsValidOffset(), <span class="stringliteral">"Offset must be valid"</span> );</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  VERIFY(IsValidRootIndex(), <span class="stringliteral">"Root index must be valid"</span> );</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  SRV_CBV_UAV(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &ParentLayout, </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">const</span> D3DShaderResourceAttribs &_Attribs, </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  CachedResourceType ResType, </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  Uint32 RootIndex, </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  Uint32 _OffsetFromTableStart, </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  Uint32 _SamplerId) :</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  ResType_RootIndex( (static_cast<Uint16>(ResType) << RootIndBits) | (RootIndex & RootIndMask)),</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  SamplerId( static_cast<Uint16>(_SamplerId) ),</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  OffsetFromTableStart(_OffsetFromTableStart),</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  ShaderVariableD3DBase<ShaderResourceLayoutD3D12>(ParentLayout, _Attribs)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  VERIFY(RootIndex == InvalidRootIndex || RootIndex <= MaxRootIndex, <span class="stringliteral">"Root index exceeds max allowed value ("</span>, MaxRootIndex, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  VERIFY(IsValidOffset(), <span class="stringliteral">"Offset must be valid"</span> );</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  VERIFY(SamplerId == InvalidSamplerId || SamplerId <= MaxSamplerId, <span class="stringliteral">"Sampler id exceeds max allowed value ("</span>, MaxSamplerId, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// Non-virtual function</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> *dbgResLayout);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">for</span>(Uint32 Elem = 0; Elem < NumElements; ++Elem)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  BindResource(ppObjects[Elem], FirstElement+Elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordtype">bool</span> IsValidSampler()<span class="keyword"> const</span>{<span class="keywordflow">return</span> GetSamplerId() != InvalidSamplerId;}</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordtype">bool</span> IsValidRootIndex()<span class="keyword">const</span>{<span class="keywordflow">return</span> GetRootIndex() != InvalidRootIndex;}</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordtype">bool</span> IsValidOffset()<span class="keyword"> const</span>{<span class="keywordflow">return</span> OffsetFromTableStart != InvalidOffset; }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  CachedResourceType GetResType()<span class="keyword">const</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>CachedResourceType<span class="keyword">></span>( (ResType_RootIndex >> RootIndBits) & ResTypeMask );</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  Uint32 GetRootIndex()<span class="keyword">const</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> ResType_RootIndex & RootIndMask;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  Uint32 GetSamplerId()<span class="keyword">const</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> SamplerId;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keyword">const</span> Uint16 ResType_RootIndex; <span class="comment">// bit</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// | 0 1 .... 12 | 13 14 15 |</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="comment">// | Root index | ResType |</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keyword">const</span> Uint16 SamplerId;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordtype">void</span> CacheCB(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pBuffer, </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  ShaderResourceCacheD3D12::Resource& DstRes, </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  Uint32 ArrayInd, </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  D3D12_CPU_DESCRIPTOR_HANDLE ShdrVisibleHeapCPUDescriptorHandle);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TResourceViewType, </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">typename</span> TViewTypeEnum,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">typename</span> TBindSamplerProcType></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">void</span> CacheResourceView(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pView, </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  ShaderResourceCacheD3D12::Resource& DstRes, </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  Uint32 ArrayIndex,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  D3D12_CPU_DESCRIPTOR_HANDLE ShdrVisibleHeapCPUDescriptorHandle, </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  TViewTypeEnum dbgExpectedViewType, </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  TBindSamplerProcType BindSamplerProc);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  };</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="comment">// sizeof(Sampler) == 24 (x64)</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keyword">struct </span>Sampler</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  Sampler(<span class="keyword">const</span> Sampler&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  Sampler(Sampler&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  Sampler& operator = (<span class="keyword">const</span> Sampler&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  Sampler& operator = (Sampler&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">const</span> D3DShaderResourceAttribs &Attribs;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &m_ParentResLayout;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">static</span> constexpr Uint32 InvalidRootIndex = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keyword">static</span> constexpr Uint32 InvalidOffset = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">const</span> Uint32 RootIndex;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">const</span> Uint32 OffsetFromTableStart;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  Sampler(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &ParentLayout, <span class="keyword">const</span> Sampler& Sam):</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  Attribs(Sam.Attribs),</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  m_ParentResLayout(ParentLayout),</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  RootIndex(Sam.RootIndex),</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  OffsetFromTableStart(Sam.OffsetFromTableStart)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  VERIFY(Sam.m_ParentResLayout.m_pResources == m_ParentResLayout.m_pResources, <span class="stringliteral">"Incosistent resource references"</span>);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  VERIFY(IsValidRootIndex(), <span class="stringliteral">"Root index must be valid"</span> );</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  VERIFY(IsValidOffset(), <span class="stringliteral">"Offset must be valid"</span> );</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  Sampler(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &ParentResLayout, <span class="keyword">const</span> D3DShaderResourceAttribs &_Attribs, Uint32 _RootIndex, Uint32 _OffsetFromTableStart) :</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  RootIndex(_RootIndex),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  OffsetFromTableStart(_OffsetFromTableStart),</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  Attribs(_Attribs),</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_ParentResLayout(ParentResLayout)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  VERIFY(IsValidRootIndex(), <span class="stringliteral">"Root index must be valid"</span> );</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  VERIFY(IsValidOffset(), <span class="stringliteral">"Offset must be valid"</span> );</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordtype">bool</span> IsValidRootIndex()<span class="keyword">const</span>{<span class="keywordflow">return</span> RootIndex != InvalidRootIndex;}</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordtype">bool</span> IsValidOffset()<span class="keyword"> const</span>{<span class="keywordflow">return</span> OffsetFromTableStart != InvalidOffset; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordtype">void</span> CacheSampler(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a> *pTexViewD3D12, Uint32 ArrayIndex, D3D12_CPU_DESCRIPTOR_HANDLE ShdrVisibleHeapCPUDescriptorHandle);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  };</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordtype">void</span> CopyStaticResourceDesriptorHandles(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &SrcLayout);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="comment">// dbgResourceCache is only used for sanity check and as a remainder that the resource cache must be alive</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="comment">// while Layout is alive</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">void</span> BindResources( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags, <span class="keyword">const</span> ShaderResourceCacheD3D12 *dbgResourceCache );</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* GetShaderVariable( <span class="keyword">const</span> Char* Name );</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="preprocessor">#ifdef VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordtype">void</span> dbgVerifyBindings()<span class="keyword">const</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  IObject& GetOwner(){<span class="keywordflow">return</span> m_Owner;}</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordtype">void</span> InitVariablesHashMap();</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  Sampler &GetAssignedSampler(<span class="keyword">const</span> SRV_CBV_UAV &TexSrv);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keyword">const</span> Char* GetShaderName()<span class="keyword">const</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">// There is no need to use shared ptr as referenced resource cache is either part of the</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="comment">// parent ShaderD3D12Impl object or ShaderResourceBindingD3D12Impl object</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  ShaderResourceCacheD3D12 *m_pResourceCache;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  std::unique_ptr<void, STDDeleterRawMem<void> > m_ResourceBuffer;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  Sampler* m_Samplers = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  Uint16 m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>] = {0,0,0};</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  Uint16 m_NumSamplers [<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>] = {0,0,0};</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  Uint32 GetSrvCbvUavOffset(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 r)<span class="keyword">const</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  VERIFY_EXPR( r < m_NumCbvSrvUav[VarType] );</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a> == 0, <span class="stringliteral">"SHADER_VARIABLE_TYPE_STATIC == 0 expected"</span>);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  r += (VarType > <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>) ? m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>] : 0;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a> == 1, <span class="stringliteral">"SHADER_VARIABLE_TYPE_MUTABLE == 1 expected"</span>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  r += (VarType > <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>) ? m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>] : 0;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  SRV_CBV_UAV& GetSrvCbvUav(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 r)</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  VERIFY_EXPR( r < m_NumCbvSrvUav[VarType] );</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keyword">auto</span>* CbvSrvUav = <span class="keyword">reinterpret_cast<</span>SRV_CBV_UAV*<span class="keyword">></span>(m_ResourceBuffer.get());</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">return</span> CbvSrvUav[GetSrvCbvUavOffset(VarType,r)];</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">const</span> SRV_CBV_UAV& GetSrvCbvUav(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 r)<span class="keyword">const</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  VERIFY_EXPR( r < m_NumCbvSrvUav[VarType] );</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">auto</span>* CbvSrvUav = <span class="keyword">reinterpret_cast<</span>SRV_CBV_UAV*<span class="keyword">></span>(m_ResourceBuffer.get());</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">return</span> CbvSrvUav[GetSrvCbvUavOffset(VarType,r)];</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  SRV_CBV_UAV& GetSrvCbvUav(Uint32 r)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  VERIFY_EXPR( r < GetTotalSrvCbvUavCount() );</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">auto</span>* CbvSrvUav = <span class="keyword">reinterpret_cast<</span>SRV_CBV_UAV*<span class="keyword">></span>(m_ResourceBuffer.get());</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">return</span> CbvSrvUav[r];</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  Uint32 GetSamplerOffset(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 s)<span class="keyword">const</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  VERIFY_EXPR( s < m_NumSamplers[VarType] );</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a> == 0, <span class="stringliteral">"SHADER_VARIABLE_TYPE_STATIC == 0 expected"</span>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  s += (VarType > <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>) ? m_NumSamplers[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>] : 0;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a> == 1, <span class="stringliteral">"SHADER_VARIABLE_TYPE_MUTABLE == 1 expected"</span>);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  s += (VarType > <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>) ? m_NumSamplers[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>] : 0;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">return</span> s;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  Sampler& GetSampler(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 s)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  VERIFY_EXPR( s < m_NumSamplers[VarType] );</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">return</span> m_Samplers[GetSamplerOffset(VarType,s)];</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keyword">const</span> Sampler& GetSampler(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 s)<span class="keyword">const</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  VERIFY_EXPR( s < m_NumSamplers[VarType] );</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">return</span> m_Samplers[GetSamplerOffset(VarType,s)];</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  Uint32 GetTotalSrvCbvUavCount()<span class="keyword">const</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a> == 3, <span class="stringliteral">"Did you add new variable type?"</span>);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">return</span> m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>] + m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>] + m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16">SHADER_VARIABLE_TYPE_DYNAMIC</a>];</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  Uint32 GetTotalSamplerCount()<span class="keyword">const</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a> == 3, <span class="stringliteral">"Did you add new variable type?"</span>);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">return</span> m_NumSamplers[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>] + m_NumSamplers[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>] + m_NumSamplers[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16">SHADER_VARIABLE_TYPE_DYNAMIC</a>];</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordtype">void</span> AllocateMemory(IMemoryAllocator &Allocator);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="preprocessor">#if USE_VARIABLE_HASH_MAP</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="comment">// Hash map to look up shader variables by name.</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="comment">// Note that sizeof(m_VariableHash)==128 (release mode, MS compiler, x64).</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keyword">typedef</span> std::pair<HashMapStringKey, IShaderVariable*> VariableHashElemType;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  std::unordered_map<HashMapStringKey, IShaderVariable*, std::hash<HashMapStringKey>, std::equal_to<HashMapStringKey>, STDAllocatorRawMem<VariableHashElemType> > m_VariableHash;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  CComPtr<ID3D12Device> m_pd3d12Device;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  IObject &m_Owner;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="comment">// We must use shared_ptr to reference ShaderResources instance, because</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="comment">// there may be multiple objects referencing the same set of resources</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  std::shared_ptr<const ShaderResourcesD3D12> m_pResources;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> };</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// http://diligentgraphics.com/diligent-engine/architecture/d3d12/shader-resource-layout/</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// All resources are stored in a single continuous chunk of memory using the following layout:</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// m_ResourceBuffer m_Samplers </span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// | | </span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// | SRV_CBV_UAV[0] ... SRV_CBV_UAV[s-1] | SRV_CBV_UAV[s] ... SRV_CBV_UAV[s+m-1] | SRV_CBV_UAV[s+m] ... SRV_CBV_UAV[s+m+d-1] || Sampler[0] ... Sampler[s'-1] | Sampler[s'] ... Sampler[s'+m'-1] | Sampler[s'+m'] ... Sampler[s'+m'+d'-1] ||</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// | | | || | | ||</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// | SHADER_VARIABLE_TYPE_STATIC | SHADER_VARIABLE_TYPE_MUTABLE | SHADER_VARIABLE_TYPE_DYNAMIC || SHADER_VARIABLE_TYPE_STATIC | SHADER_VARIABLE_TYPE_MUTABLE | SHADER_VARIABLE_TYPE_DYNAMIC ||</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// | | | || </span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">//</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// s == m_NumCbvSrvUav[SHADER_VARIABLE_TYPE_STATIC]</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// m == m_NumCbvSrvUav[SHADER_VARIABLE_TYPE_MUTABLE]</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// d == m_NumCbvSrvUav[SHADER_VARIABLE_TYPE_DYNAMIC]</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">//</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// s' == m_NumSamplers[SHADER_VARIABLE_TYPE_STATIC]</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// m' == m_NumSamplers[SHADER_VARIABLE_TYPE_MUTABLE]</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// d' == m_NumSamplers[SHADER_VARIABLE_TYPE_DYNAMIC]</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">//</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// Memory buffer is allocated through the allocator provided by the pipeline state. If allocation granularity > 1, fixed block</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// memory allocator is used. This ensures that all resources from different shader resource bindings reside in</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// continuous memory. If allocation granularity == 1, raw allocator is used.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">//</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// Every SRV_CBV_UAV and Sampler structure holds a reference to D3DShaderResourceAttribs structure from ShaderResources.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// ShaderResourceLayoutD3D12 holds shared pointer to ShaderResourcesD3D12 instance. Note that ShaderResources::SamplerId </span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// references a sampler in ShaderResources, while SRV_CBV_UAV::SamplerId references a sampler in ShaderResourceLayoutD3D12, </span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// and the two are not the same</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">//</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">//</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// ________________SamplerId____________________</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// | |</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// _________________ ______________|_____________________________________________V________</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// | ShaderResources |--------------->| CBs | TexSRVs | TexUAVs | BufSRVs | BufUAVs | Samplers |</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// |_________________| |________|___________|___________|___________|___________|____________|</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// A A A A </span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// | \ / \</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// |shared_ptr Ref Ref Ref</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// ________|__________________ ________\________________________/_________________________\_________________________________________</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// | ShaderResourceLayoutD3D12 |--------------->| SRV_CBV_UAV[0] | SRV_CBV_UAV[1] | ... | Sampler[0] | Sampler[1] | ... |</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// |___________________________| |___________________|_________________|_______________|__________________|_________________|__________|</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// | | | A | / </span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// | Raw ptr | |___________________SamplerId________________________| | /</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// | | / /</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// | \ / /</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// ________V_________________ ________V_______________________________________________________V____V__ </span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// | | | | </span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// | ShaderResourceCacheD3D12 |---------------->| Resources | </span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// |__________________________| |________________________________________________________________________| </span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">//</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// http://diligentgraphics.com/diligent-engine/architecture/d3d12/shader-resource-layout#Figure2</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// Resources in the resource cache are identified by the root index and offset in the descriptor table</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">//</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// </span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// ShaderResourceLayoutD3D12 is used as follows:</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// * Every pipeline state object (PipelineStateD3D12Impl) maintains shader resource layout for every active shader stage</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// ** These resource layouts are not bound to a resource cache and are used as reference layouts for shader resource binding objects</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// ** All variable types are preserved</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// ** Root indices and descriptor table offsets are assigned during the initialization</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// ** Resource cache is not assigned</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// * Every shader object (ShaderD3D12Impl) contains shader resource layout that facilitates management of static shader resources</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// ** The resource layout defines artificial layout and is bound to a resource cache that actually holds references to resources</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// ** Resource cache is assigned and initialized</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// * Every shader resource binding object (ShaderResourceBindingD3D12Impl) encompasses shader resource layout for every active shader </span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// stage in the parent pipeline state</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// ** Resource layouts are initialized by clonning reference layouts from the pipeline state object and are bound to the resource </span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// cache that holds references to resources set by the application</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// ** All shader variable types are clonned</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// ** Resource cache is assigned, but not initialized; Initialization is performed by the root signature</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">//</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// Set this define to 1 to use unordered_map to store shader variables. </span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// Note that sizeof(m_VariableHash)==128 (release mode, MS compiler, x64).</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#define USE_VARIABLE_HASH_MAP 0</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#include "unordered_map"</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#include "ShaderD3DBase.h"</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#include "ShaderBase.h"</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#include "ShaderResourcesD3D12.h"</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#include "ShaderResourceCacheD3D12.h"</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#include "ShaderVariableD3DBase.h"</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor"># define VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// sizeof(ShaderResourceLayoutD3D12)==80 (MS compiler, x64)</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resource_layout_d3_d12.html"> 125</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>(IObject &Owner, IMemoryAllocator &ResourceLayoutDataAllocator);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// This constructor is used by ShaderResourceBindingD3D12Impl to clone layout from the reference layout in PipelineStateD3D12Impl. </span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// Root indices and descriptor table offsets must be correct. Resource cache is assigned, but not initialized.</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>(IObject &Owner, </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>& SrcLayout, </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  IMemoryAllocator &ResourceLayoutDataAllocator,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *AllowedVarTypes, </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  Uint32 NumAllowedTypes, </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  ShaderResourceCacheD3D12 &ResourceCache);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>& operator =(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>& operator =(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  ~<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a>();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// The method is called by</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// - ShaderD3D12Impl class instance to initialize static resource layout and initialize shader resource cache</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// to hold static resources</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// - PipelineStateD3D12Impl class instance to reference all types of resources (static, mutable, dynamic). </span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Root indices and descriptor table offsets are assigned during the initialization; </span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// no shader resource cache is provided</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordtype">void</span> Initialize(ID3D12Device *pd3d12Device,</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">const</span> std::shared_ptr<const ShaderResourcesD3D12>& pSrcResources, </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  IMemoryAllocator &LayoutDataAllocator,</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *VarTypes, </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  Uint32 NumAllowedTypes, </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  ShaderResourceCacheD3D12 *pResourceCache,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_root_signature.html">RootSignature</a> *pRootSig);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// sizeof(SRV_CBV_UAV) == 32 (x64)</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">struct </span>SRV_CBV_UAV : ShaderVariableD3DBase<ShaderResourceLayoutD3D12></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  SRV_CBV_UAV(<span class="keyword">const</span> SRV_CBV_UAV&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  SRV_CBV_UAV(SRV_CBV_UAV&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  SRV_CBV_UAV& operator = (<span class="keyword">const</span> SRV_CBV_UAV&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  SRV_CBV_UAV& operator = (SRV_CBV_UAV&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">static</span> constexpr Uint32 ResTypeBits = 3;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">static</span> constexpr Uint32 RootIndBits = 16-ResTypeBits;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">static</span> constexpr Uint32 RootIndMask = (1 << RootIndBits)-1;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">static</span> constexpr Uint32 ResTypeMask = (1 << ResTypeBits)-1;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">static</span> constexpr Uint16 InvalidRootIndex = RootIndMask;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">static</span> constexpr Uint16 MaxRootIndex = RootIndMask-1;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">static</span> constexpr Uint32 InvalidSamplerId = 0xFFFF;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">static</span> constexpr Uint32 MaxSamplerId = InvalidSamplerId-1;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">static</span> constexpr Uint32 InvalidOffset = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  static_assert( static_cast<int>(CachedResourceType::NumTypes) <= ResTypeMask, <span class="stringliteral">"3 bits is not enough to store CachedResourceType"</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">const</span> Uint32 OffsetFromTableStart;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// Special copy constructor. Note that sampler ID refers to the ID of the sampler</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// within THIS layout, and may not be the same as in original layout</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  SRV_CBV_UAV(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &ParentLayout, <span class="keyword">const</span> SRV_CBV_UAV &rhs, Uint32 SamId ) :</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  ResType_RootIndex(rhs.ResType_RootIndex),</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  SamplerId(static_cast<Uint16>(SamId)),</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  OffsetFromTableStart(rhs.OffsetFromTableStart),</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  ShaderVariableD3DBase<ShaderResourceLayoutD3D12>(ParentLayout, rhs.Attribs)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  VERIFY(SamId == InvalidSamplerId || SamId <= MaxSamplerId, <span class="stringliteral">"Sampler id exceeds max allowed value ("</span>, MaxSamplerId, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  VERIFY(rhs.m_ParentResLayout.m_pResources == m_ParentResLayout.m_pResources, <span class="stringliteral">"Incosistent resource references"</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  VERIFY(IsValidOffset(), <span class="stringliteral">"Offset must be valid"</span> );</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  VERIFY(IsValidRootIndex(), <span class="stringliteral">"Root index must be valid"</span> );</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  SRV_CBV_UAV(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &ParentLayout, </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">const</span> D3DShaderResourceAttribs &_Attribs, </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  CachedResourceType ResType, </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  Uint32 RootIndex, </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  Uint32 _OffsetFromTableStart, </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  Uint32 _SamplerId) :</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  ResType_RootIndex( (static_cast<Uint16>(ResType) << RootIndBits) | (RootIndex & RootIndMask)),</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  SamplerId( static_cast<Uint16>(_SamplerId) ),</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  OffsetFromTableStart(_OffsetFromTableStart),</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  ShaderVariableD3DBase<ShaderResourceLayoutD3D12>(ParentLayout, _Attribs)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  VERIFY(RootIndex == InvalidRootIndex || RootIndex <= MaxRootIndex, <span class="stringliteral">"Root index exceeds max allowed value ("</span>, MaxRootIndex, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  VERIFY(IsValidOffset(), <span class="stringliteral">"Offset must be valid"</span> );</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  VERIFY(SamplerId == InvalidSamplerId || SamplerId <= MaxSamplerId, <span class="stringliteral">"Sampler id exceeds max allowed value ("</span>, MaxSamplerId, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordtype">bool</span> IsBound(Uint32 ArrayIndex);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// Non-virtual function</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordtype">void</span> BindResource(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject, Uint32 ArrayIndex, <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> *dbgResLayout);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Set(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject)<span class="keyword">override</span> <span class="keyword">final</span>{ BindResource(pObject, 0, <span class="keyword">nullptr</span>); }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetArray(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a>* <span class="keyword">const</span>* ppObjects, Uint32 FirstElement, Uint32 NumElements)<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">for</span>(Uint32 Elem = 0; Elem < NumElements; ++Elem)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  BindResource(ppObjects[Elem], FirstElement+Elem, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordtype">bool</span> IsValidSampler()<span class="keyword"> const</span>{<span class="keywordflow">return</span> GetSamplerId() != InvalidSamplerId;}</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordtype">bool</span> IsValidRootIndex()<span class="keyword">const</span>{<span class="keywordflow">return</span> GetRootIndex() != InvalidRootIndex;}</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordtype">bool</span> IsValidOffset()<span class="keyword"> const</span>{<span class="keywordflow">return</span> OffsetFromTableStart != InvalidOffset; }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  CachedResourceType GetResType()<span class="keyword">const</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>CachedResourceType<span class="keyword">></span>( (ResType_RootIndex >> RootIndBits) & ResTypeMask );</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  Uint32 GetRootIndex()<span class="keyword">const</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> ResType_RootIndex & RootIndMask;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  Uint32 GetSamplerId()<span class="keyword">const</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> SamplerId;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keyword">const</span> Uint16 ResType_RootIndex; <span class="comment">// bit</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// | 0 1 .... 12 | 13 14 15 |</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="comment">// | Root index | ResType |</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keyword">const</span> Uint16 SamplerId;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordtype">void</span> CacheCB(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pBuffer, </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  ShaderResourceCacheD3D12::Resource& DstRes, </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  Uint32 ArrayInd, </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  D3D12_CPU_DESCRIPTOR_HANDLE ShdrVisibleHeapCPUDescriptorHandle);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TResourceViewType, </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">typename</span> TViewTypeEnum,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">typename</span> TBindSamplerProcType></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">void</span> CacheResourceView(<a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pView, </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  ShaderResourceCacheD3D12::Resource& DstRes, </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  Uint32 ArrayIndex,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  D3D12_CPU_DESCRIPTOR_HANDLE ShdrVisibleHeapCPUDescriptorHandle, </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  TViewTypeEnum dbgExpectedViewType, </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  TBindSamplerProcType BindSamplerProc);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  };</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="comment">// sizeof(Sampler) == 24 (x64)</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keyword">struct </span>Sampler</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  Sampler(<span class="keyword">const</span> Sampler&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  Sampler(Sampler&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  Sampler& operator = (<span class="keyword">const</span> Sampler&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  Sampler& operator = (Sampler&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">const</span> D3DShaderResourceAttribs &Attribs;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &m_ParentResLayout;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">static</span> constexpr Uint32 InvalidRootIndex = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keyword">static</span> constexpr Uint32 InvalidOffset = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(-1);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">const</span> Uint32 RootIndex;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">const</span> Uint32 OffsetFromTableStart;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  Sampler(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &ParentLayout, <span class="keyword">const</span> Sampler& Sam):</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  Attribs(Sam.Attribs),</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  m_ParentResLayout(ParentLayout),</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  RootIndex(Sam.RootIndex),</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  OffsetFromTableStart(Sam.OffsetFromTableStart)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  VERIFY(Sam.m_ParentResLayout.m_pResources == m_ParentResLayout.m_pResources, <span class="stringliteral">"Incosistent resource references"</span>);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  VERIFY(IsValidRootIndex(), <span class="stringliteral">"Root index must be valid"</span> );</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  VERIFY(IsValidOffset(), <span class="stringliteral">"Offset must be valid"</span> );</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  Sampler(<a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &ParentResLayout, <span class="keyword">const</span> D3DShaderResourceAttribs &_Attribs, Uint32 _RootIndex, Uint32 _OffsetFromTableStart) :</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  RootIndex(_RootIndex),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  OffsetFromTableStart(_OffsetFromTableStart),</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  Attribs(_Attribs),</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_ParentResLayout(ParentResLayout)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  VERIFY(IsValidRootIndex(), <span class="stringliteral">"Root index must be valid"</span> );</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  VERIFY(IsValidOffset(), <span class="stringliteral">"Offset must be valid"</span> );</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordtype">bool</span> IsValidRootIndex()<span class="keyword">const</span>{<span class="keywordflow">return</span> RootIndex != InvalidRootIndex;}</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordtype">bool</span> IsValidOffset()<span class="keyword"> const</span>{<span class="keywordflow">return</span> OffsetFromTableStart != InvalidOffset; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordtype">void</span> CacheSampler(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a> *pTexViewD3D12, Uint32 ArrayIndex, D3D12_CPU_DESCRIPTOR_HANDLE ShdrVisibleHeapCPUDescriptorHandle);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  };</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordtype">void</span> CopyStaticResourceDesriptorHandles(<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resource_layout_d3_d12.html">ShaderResourceLayoutD3D12</a> &SrcLayout);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="comment">// dbgResourceCache is only used for sanity check and as a remainder that the resource cache must be alive</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="comment">// while Layout is alive</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">void</span> BindResources( <a class="code" href="class_diligent_1_1_i_resource_mapping.html">IResourceMapping</a>* pResourceMapping, Uint32 Flags, <span class="keyword">const</span> ShaderResourceCacheD3D12 *dbgResourceCache );</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="class_diligent_1_1_i_shader_variable.html">IShaderVariable</a>* GetShaderVariable( <span class="keyword">const</span> Char* Name );</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="preprocessor">#ifdef VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordtype">void</span> dbgVerifyBindings()<span class="keyword">const</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  IObject& GetOwner(){<span class="keywordflow">return</span> m_Owner;}</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordtype">void</span> InitVariablesHashMap();</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  Sampler &GetAssignedSampler(<span class="keyword">const</span> SRV_CBV_UAV &TexSrv);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keyword">const</span> Char* GetShaderName()<span class="keyword">const</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">// There is no need to use shared ptr as referenced resource cache is either part of the</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="comment">// parent ShaderD3D12Impl object or ShaderResourceBindingD3D12Impl object</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  ShaderResourceCacheD3D12 *m_pResourceCache;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  std::unique_ptr<void, STDDeleterRawMem<void> > m_ResourceBuffer;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  Sampler* m_Samplers = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  Uint16 m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>] = {0,0,0};</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  Uint16 m_NumSamplers [<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>] = {0,0,0};</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  Uint32 GetSrvCbvUavOffset(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 r)<span class="keyword">const</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  VERIFY_EXPR( r < m_NumCbvSrvUav[VarType] );</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a> == 0, <span class="stringliteral">"SHADER_VARIABLE_TYPE_STATIC == 0 expected"</span>);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  r += (VarType > <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>) ? m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>] : 0;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a> == 1, <span class="stringliteral">"SHADER_VARIABLE_TYPE_MUTABLE == 1 expected"</span>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  r += (VarType > <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>) ? m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>] : 0;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  SRV_CBV_UAV& GetSrvCbvUav(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 r)</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  VERIFY_EXPR( r < m_NumCbvSrvUav[VarType] );</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keyword">auto</span>* CbvSrvUav = <span class="keyword">reinterpret_cast<</span>SRV_CBV_UAV*<span class="keyword">></span>(m_ResourceBuffer.get());</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">return</span> CbvSrvUav[GetSrvCbvUavOffset(VarType,r)];</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">const</span> SRV_CBV_UAV& GetSrvCbvUav(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 r)<span class="keyword">const</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  VERIFY_EXPR( r < m_NumCbvSrvUav[VarType] );</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">auto</span>* CbvSrvUav = <span class="keyword">reinterpret_cast<</span>SRV_CBV_UAV*<span class="keyword">></span>(m_ResourceBuffer.get());</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">return</span> CbvSrvUav[GetSrvCbvUavOffset(VarType,r)];</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  SRV_CBV_UAV& GetSrvCbvUav(Uint32 r)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  VERIFY_EXPR( r < GetTotalSrvCbvUavCount() );</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">auto</span>* CbvSrvUav = <span class="keyword">reinterpret_cast<</span>SRV_CBV_UAV*<span class="keyword">></span>(m_ResourceBuffer.get());</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">return</span> CbvSrvUav[r];</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  Uint32 GetSamplerOffset(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 s)<span class="keyword">const</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  VERIFY_EXPR( s < m_NumSamplers[VarType] );</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a> == 0, <span class="stringliteral">"SHADER_VARIABLE_TYPE_STATIC == 0 expected"</span>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  s += (VarType > <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>) ? m_NumSamplers[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>] : 0;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a> == 1, <span class="stringliteral">"SHADER_VARIABLE_TYPE_MUTABLE == 1 expected"</span>);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  s += (VarType > <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>) ? m_NumSamplers[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>] : 0;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">return</span> s;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  Sampler& GetSampler(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 s)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  VERIFY_EXPR( s < m_NumSamplers[VarType] );</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">return</span> m_Samplers[GetSamplerOffset(VarType,s)];</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keyword">const</span> Sampler& GetSampler(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, Uint32 s)<span class="keyword">const</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  VERIFY_EXPR( s < m_NumSamplers[VarType] );</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">return</span> m_Samplers[GetSamplerOffset(VarType,s)];</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  Uint32 GetTotalSrvCbvUavCount()<span class="keyword">const</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a> == 3, <span class="stringliteral">"Did you add new variable type?"</span>);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">return</span> m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>] + m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>] + m_NumCbvSrvUav[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16">SHADER_VARIABLE_TYPE_DYNAMIC</a>];</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  Uint32 GetTotalSamplerCount()<span class="keyword">const</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  static_assert(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a> == 3, <span class="stringliteral">"Did you add new variable type?"</span>);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">return</span> m_NumSamplers[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a4c137d58eb6a965d1feb648e387a9ec3">SHADER_VARIABLE_TYPE_STATIC</a>] + m_NumSamplers[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a13c8763ed8f1413ee5d8b3d98c895c3a">SHADER_VARIABLE_TYPE_MUTABLE</a>] + m_NumSamplers[<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a8f878878823106ce70c825475ef7ca16">SHADER_VARIABLE_TYPE_DYNAMIC</a>];</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordtype">void</span> AllocateMemory(IMemoryAllocator &Allocator);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="preprocessor">#if USE_VARIABLE_HASH_MAP</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="comment">// Hash map to look up shader variables by name.</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="comment">// Note that sizeof(m_VariableHash)==128 (release mode, MS compiler, x64).</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keyword">typedef</span> std::pair<HashMapStringKey, IShaderVariable*> VariableHashElemType;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  std::unordered_map<HashMapStringKey, IShaderVariable*, std::hash<HashMapStringKey>, std::equal_to<HashMapStringKey>, STDAllocatorRawMem<VariableHashElemType> > m_VariableHash;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  CComPtr<ID3D12Device> m_pd3d12Device;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  IObject &m_Owner;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="comment">// We must use shared_ptr to reference ShaderResources instance, because</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="comment">// there may be multiple objects referencing the same set of resources</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  std::shared_ptr<const ShaderResourcesD3D12> m_pResources;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> };</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> <div class="ttc" id="class_diligent_1_1_i_shader_variable_html"><div class="ttname"><a href="class_diligent_1_1_i_shader_variable.html">Diligent::IShaderVariable</a></div><div class="ttdoc">Shader resource variable. </div><div class="ttdef"><b>Definition:</b> Shader.h:265</div></div> <div class="ttc" id="class_diligent_1_1_root_signature_html"><div class="ttname"><a href="class_diligent_1_1_root_signature.html">Diligent::RootSignature</a></div><div class="ttdoc">Implementation of the Diligent::RootSignature class. </div><div class="ttdef"><b>Definition:</b> RootSignature.h:161</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -86,7 +86,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resources_8h_source.html b/doc/html/_shader_resources_8h_source.html index fedbbd3a..1b447770 100644 --- a/doc/html/_shader_resources_8h_source.html +++ b/doc/html/_shader_resources_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResources.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// ShaderResources class uses continuous chunk of memory to store all resources, as follows:</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// m_MemoryBuffer m_TexSRVOffset m_TexUAVOffset m_BufSRVOffset m_BufUAVOffset m_SamplersOffset m_MemorySize</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// | | | | | | |</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// | CB[0] ... CB[Ncb-1] | TexSRV[0] ... TexSRV[Ntsrv-1] | TexUAV[0] ... TexUAV[Ntuav-1] | BufSRV[0] ... BufSRV[Nbsrv-1] | BufUAV[0] ... BufUAV[Nbuav-1] | Sam[0] ... Sam[Nsam-1] |</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">//</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// Ncb - number of constant buffers</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Ntsrv - number of texture SRVs</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// Ntuav - number of texture UAVs</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Nbsrv - number of buffer SRVs</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Nbuav - number of buffer UAVs</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// Nsam - number of samplers</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// </span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// If texture SRV is assigned a sampler, it is referenced through SamplerId:</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// </span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// _________________________SamplerId_______________________</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// | |</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// | V</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// | CBs | ... TexSRV[n] ... | TexUAVs | BufSRVs | BufUAVs | Sam[0] ... Sam[SamplerId] ... |</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// </span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">//</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define NOMINMAX</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include <d3dcommon.h></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">static</span> <span class="keyword">const</span> Char* D3DSamplerSuffix = <span class="stringliteral">"_sampler"</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> IsAllowedType(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> AllowedTypeBits)noexcept</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> ((1 << VarType) & AllowedTypeBits) != 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetAllowedTypeBits(<span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *AllowedVarTypes, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumAllowedTypes)noexcept</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>(AllowedVarTypes == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> 0xFFFFFFFF;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> AllowedTypeBits = 0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> i=0; i < NumAllowedTypes; ++i)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  AllowedTypeBits |= 1 << AllowedVarTypes[i];</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> AllowedTypeBits;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">struct </span>D3DShaderResourceAttribs </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  D3DShaderResourceAttribs(<a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> &&_Name, </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  UINT _BindPoint, </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  UINT _BindCount, </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  D3D_SHADER_INPUT_TYPE _InputType, </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VariableType, </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  D3D_SRV_DIMENSION SRVDimension,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerId, </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">bool</span> _IsStaticSampler) :</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  Name(<a class="code" href="namespacestd.html">std</a>::move(_Name)),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  BindPoint(static_cast<<a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a>>(_BindPoint)),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  BindCount(static_cast<<a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a>>(_BindCount)),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  PackedAttribs( PackAttribs(_InputType, _VariableType, SRVDimension, SamplerId, _IsStaticSampler) )</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  VERIFY( static_cast<Uint32>(_InputType) <= ShaderInputTypeMask, <span class="stringliteral">"Shader input type is out of expected range"</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  VERIFY( static_cast<Uint32>(_VariableType) <= VariableTypeMask, <span class="stringliteral">"Variable type is out of expected range"</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  VERIFY( static_cast<Uint32>(SRVDimension) <= SRVDimMask, <span class="stringliteral">"SRV dimensions is out of expected range"</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  VERIFY(SamplerId <= SamplerIdMask, <span class="stringliteral">"Sampler Id is out of allowed range"</span> );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  VERIFY_EXPR(GetInputType() == _InputType);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  VERIFY_EXPR(GetVariableType() == _VariableType);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  VERIFY(_BindPoint <= MaxBindPoint || _BindPoint == InvalidBindPoint, <span class="stringliteral">"Bind Point is out of allowed range"</span> );</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  VERIFY(_BindCount <= MaxBindCount, <span class="stringliteral">"Bind Count is out of allowed range"</span> );</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(_InputType==D3D_SIT_SAMPLER)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  VERIFY_EXPR(IsStaticSampler() == _IsStaticSampler);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  VERIFY(!_IsStaticSampler, <span class="stringliteral">"Only samplers can be marked as static"</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (_InputType == D3D_SIT_TEXTURE)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  VERIFY_EXPR(GetSamplerId() == SamplerId);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  VERIFY(SamplerId == InvalidSamplerId, <span class="stringliteral">"Only textures can be assigned valid texture sampler"</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(_IsStaticSampler)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  VERIFY( _InputType == D3D_SIT_SAMPLER, <span class="stringliteral">"Invalid input type: D3D_SIT_SAMPLER is expected"</span> );</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  D3DShaderResourceAttribs(<span class="keyword">const</span> D3DShaderResourceAttribs& rhs) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  D3DShaderResourceAttribs(<span class="keyword">const</span> D3DShaderResourceAttribs& rhs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerId)noexcept : </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  Name(rhs.Name),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  BindPoint(rhs.BindPoint),</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  BindCount(rhs.BindCount),</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  PackedAttribs( PackAttribs(rhs.GetInputType(), rhs.GetVariableType(), rhs.GetSRVDimension(), SamplerId, <span class="keyword">false</span>) )</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  VERIFY(GetInputType() == D3D_SIT_TEXTURE, <span class="stringliteral">"Only textures can be assigned a texture sampler"</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  VERIFY_EXPR(GetInputType() == rhs.GetInputType());</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  VERIFY_EXPR(GetVariableType() == rhs.GetVariableType());</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  VERIFY_EXPR(GetSamplerId() == SamplerId);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  D3DShaderResourceAttribs(D3DShaderResourceAttribs&& rhs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerId)noexcept : </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  Name(std::move(rhs.Name)),</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  BindPoint(rhs.BindPoint),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  BindCount(rhs.BindCount),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  PackedAttribs( PackAttribs(rhs.GetInputType(), rhs.GetVariableType(), rhs.GetSRVDimension(), SamplerId, <span class="keyword">false</span>) )</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  VERIFY(GetInputType() == D3D_SIT_TEXTURE, <span class="stringliteral">"Only textures can be assigned a texture sampler"</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  VERIFY_EXPR(GetInputType() == rhs.GetInputType());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  VERIFY_EXPR(GetVariableType() == rhs.GetVariableType());</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  VERIFY_EXPR(GetSamplerId() == SamplerId);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  D3DShaderResourceAttribs(D3DShaderResourceAttribs&& rhs)noexcept : </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  Name(std::move(rhs.Name)),</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  BindPoint(rhs.BindPoint),</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  BindCount(rhs.BindCount),</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  PackedAttribs( rhs.PackedAttribs )</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  D3D_SHADER_INPUT_TYPE GetInputType()<span class="keyword">const</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_SHADER_INPUT_TYPE<span class="keyword">></span>( (PackedAttribs >> ShaderInputTypeBitOffset) & ShaderInputTypeMask );</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> GetVariableType()<span class="keyword">const</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a><span class="keyword">></span>( (PackedAttribs >> VariableTypeBitOffset) & VariableTypeMask );</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  D3D_SRV_DIMENSION GetSRVDimension()<span class="keyword">const</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_SRV_DIMENSION<span class="keyword">></span>( (PackedAttribs >> SRVDimBitOffset) & SRVDimMask );</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetSamplerId()<span class="keyword">const</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  VERIFY( GetInputType() == D3D_SIT_TEXTURE, <span class="stringliteral">"Invalid input type: D3D_SIT_TEXTURE is expected"</span> );</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> (PackedAttribs >> SamplerIdBitOffset) & SamplerIdMask;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">bool</span> IsStaticSampler()<span class="keyword">const</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  VERIFY( GetInputType() == D3D_SIT_SAMPLER, <span class="stringliteral">"Invalid input type: D3D_SIT_SAMPLER is expected"</span> );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> (PackedAttribs & (1 << IsStaticSamplerFlagBitOffset)) != 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordtype">bool</span> IsValidSampler()<span class="keyword">const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  VERIFY( GetInputType() == D3D_SIT_TEXTURE, <span class="stringliteral">"Invalid input type: D3D_SIT_TEXTURE is expected"</span> );</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> GetSamplerId() != InvalidSamplerId;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordtype">bool</span> IsValidBindPoint()<span class="keyword">const</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> BindPoint != InvalidBindPoint;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> InvalidBindPoint = std::numeric_limits<Uint16>::max();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> Name; <span class="comment">// Move ctor will not work if it is const</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> BindPoint;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> BindCount;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> GetPrintName(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ArrayInd)<span class="keyword">const</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  VERIFY_EXPR(ArrayInd < BindCount);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(BindCount > 1)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a>(Name) + <span class="charliteral">'['</span> + std::to_string(ArrayInd) + <span class="charliteral">']'</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> Name;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> MaxBindPoint = InvalidBindPoint-1;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> MaxBindCount = std::numeric_limits<Uint16>::max();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ShaderInputTypeBits = 4; <span class="comment">// Max value: D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER==11</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ShaderInputTypeMask = (1 << ShaderInputTypeBits)-1;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ShaderInputTypeBitOffset = 0;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  static_assert( D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER <= ShaderInputTypeMask, <span class="stringliteral">"Not enough bits to represent D3D_SHADER_INPUT_TYPE"</span> );</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> VariableTypeBits = 3; <span class="comment">// Max value: SHADER_VARIABLE_TYPE_DYNAMIC == 2</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> VariableTypeMask = (1<<VariableTypeBits)-1;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> VariableTypeBitOffset = ShaderInputTypeBitOffset + ShaderInputTypeBits;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  static_assert( <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>-1 <= VariableTypeMask, <span class="stringliteral">"Not enough bits to represent SHADER_VARIABLE_TYPE"</span> );</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SRVDimBits = 4; <span class="comment">// Max value: D3D_SRV_DIMENSION_BUFFEREX == 11</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SRVDimMask = (1<<SRVDimBits)-1;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SRVDimBitOffset = VariableTypeBitOffset + VariableTypeBits;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  static_assert( D3D_SRV_DIMENSION_BUFFEREX <= SRVDimMask, <span class="stringliteral">"Not enough bits to represent D3D_SRV_DIMENSION"</span> );</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerIdBits = 32 - 1 - ShaderInputTypeBits - VariableTypeBits - SRVDimBits;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerIdMask = (1 << SamplerIdBits) - 1;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerIdBitOffset = SRVDimBitOffset + SRVDimBits;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> InvalidSamplerId = SamplerIdMask;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> IsStaticSamplerFlagBits = 1;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> IsStaticSamplerFlagMask = (1 << IsStaticSamplerFlagBits) - 1;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> IsStaticSamplerFlagBitOffset = SamplerIdBitOffset + SamplerIdBits;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  static_assert(IsStaticSamplerFlagBitOffset == 31, <span class="stringliteral">"Unexpected static sampler flag offset"</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> PackAttribs(D3D_SHADER_INPUT_TYPE _InputType, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VariableType, D3D_SRV_DIMENSION SRVDimension, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerId, <span class="keywordtype">bool</span> _IsStaticSampler)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> ((static_cast<Uint32>(_InputType) & ShaderInputTypeMask) << ShaderInputTypeBitOffset) | </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  ((<span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a><span class="keyword">></span>(_VariableType) & VariableTypeMask) << VariableTypeBitOffset ) |</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  ((static_cast<Uint32>(SRVDimension) & SRVDimMask) << SRVDimBitOffset) |</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  ((SamplerId & SamplerIdMask) << SamplerIdBitOffset) |</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  ((_IsStaticSampler ? 1 : 0) << IsStaticSamplerFlagBitOffset);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// 4 3 4 20 1</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="comment">// bit | 0 1 2 3 | 4 5 6 | 7 8 9 10 | 11 12 ... 30 | 31 | </span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// | | | | | |</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">// | InputType | VariableType | SRV Dim | SamplerId | StaticSamplerFlag |</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> PackedAttribs;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> };</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resources.html"> 270</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>(<a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a> &Allocator, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// Copies specified types of resources from another ShaderResources objects</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// Only resources listed in AllowedVarTypes are copied</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>(<a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a> &Allocator, </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>& SrcResources, </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *AllowedVarTypes, </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumAllowedTypes);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a> (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a> (<a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>& operator = (<a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  ~<a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumCBs() <span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_TexSRVOffset - 0); }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumTexSRV() <span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_TexUAVOffset - m_TexSRVOffset); }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumTexUAV() <span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_BufSRVOffset - m_TexUAVOffset); }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumBufSRV() <span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_BufUAVOffset - m_BufSRVOffset); }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumBufUAV() <span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_SamplersOffset - m_BufUAVOffset); }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumSamplers()<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_BufferEndOffset- m_SamplersOffset); }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetCB (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumCBs(), 0); }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetTexSRV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumTexSRV(), m_TexSRVOffset); }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetTexUAV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumTexUAV(), m_TexUAVOffset); }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetBufSRV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumBufSRV(), m_BufSRVOffset); }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetBufUAV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumBufUAV(), m_BufUAVOffset); }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetSampler(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumSamplers(), m_SamplersOffset); }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordtype">void</span> CountResources(<span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *AllowedVarTypes, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumAllowedTypes, </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumCBs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumTexSRVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumTexUAVs, </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumBufSRVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumBufUAVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumSamplers)<span class="keyword">const</span> noexcept;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> GetShaderType()<span class="keyword">const</span> noexcept{<span class="keywordflow">return</span> m_ShaderType;}</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// Process only resources listed in AllowedVarTypes</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">template</span><<span class="keyword">typename</span> THandleCB,</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keyword">typename</span> THandleTexSRV,</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">typename</span> THandleTexUAV,</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keyword">typename</span> THandleBufSRV,</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">typename</span> THandleBufUAV></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">void</span> ProcessResources(<span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *AllowedVarTypes, </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumAllowedTypes,</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  THandleCB HandleCB,</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  THandleTexSRV HandleTexSRV,</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  THandleTexUAV HandleTexUAV,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  THandleBufSRV HandleBufSRV,</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  THandleBufUAV HandleBufUAV)<span class="keyword">const</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> AllowedTypeBits = GetAllowedTypeBits(AllowedVarTypes, NumAllowedTypes);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n=0; n < GetNumCBs(); ++n)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& CB = GetCB(n);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span>( IsAllowedType(CB.GetVariableType(), AllowedTypeBits) )</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  HandleCB(CB);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n=0; n < GetNumTexSRV(); ++n)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &TexSRV = GetTexSRV(n);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span>( IsAllowedType(TexSRV.GetVariableType(), AllowedTypeBits) )</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  HandleTexSRV(TexSRV);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n=0; n < GetNumTexUAV(); ++n)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &TexUAV = GetTexUAV(n);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span>( IsAllowedType(TexUAV.GetVariableType(), AllowedTypeBits) )</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  HandleTexUAV(TexUAV);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n=0; n < GetNumBufSRV(); ++n)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BufSRV = GetBufSRV(n);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">if</span>( IsAllowedType(BufSRV.GetVariableType(), AllowedTypeBits) )</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  HandleBufSRV(BufSRV);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n=0; n < GetNumBufUAV(); ++n)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& BufUAV = GetBufUAV(n);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">if</span>( IsAllowedType(BufUAV.GetVariableType(), AllowedTypeBits) )</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  HandleBufUAV(BufUAV);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordtype">void</span> Initialize(<a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a> &Allocator, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumCBs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumTexSRVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumTexUAVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumBufSRVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumBufUAVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumSamplers);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  __forceinline D3DShaderResourceAttribs& GetResAttribs(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumResources, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Offset)noexcept</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  VERIFY(n < NumResources, <span class="stringliteral">"Resource index ("</span>, n, <span class="stringliteral">") is out of range. Max allowed index: "</span>, NumResources-1);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  VERIFY_EXPR(Offset + n < m_BufferEndOffset);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>D3DShaderResourceAttribs*<span class="keyword">></span>(m_MemoryBuffer.get())[Offset + n];</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  __forceinline <span class="keyword">const</span> D3DShaderResourceAttribs& GetResAttribs(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumResources, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Offset)<span class="keyword">const</span> noexcept</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  VERIFY(n < NumResources, <span class="stringliteral">"Resource index ("</span>, n, <span class="stringliteral">") is out of range. Max allowed index: "</span>, NumResources-1);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  VERIFY_EXPR(Offset + n < m_BufferEndOffset);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>D3DShaderResourceAttribs*<span class="keyword">></span>(m_MemoryBuffer.get())[Offset + n];</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  D3DShaderResourceAttribs& GetCB (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumCBs(), 0); }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  D3DShaderResourceAttribs& GetTexSRV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumTexSRV(), m_TexSRVOffset); }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  D3DShaderResourceAttribs& GetTexUAV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumTexUAV(), m_TexUAVOffset); }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  D3DShaderResourceAttribs& GetBufSRV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumBufSRV(), m_BufSRVOffset); }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  D3DShaderResourceAttribs& GetBufUAV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumBufUAV(), m_BufUAVOffset); }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  D3DShaderResourceAttribs& GetSampler(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumSamplers(), m_SamplersOffset); }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> FindAssignedSamplerId(<span class="keyword">const</span> D3DShaderResourceAttribs& TexSRV)<span class="keyword">const</span>;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="comment">// Memory buffer that holds all resources as continuous chunk of memory:</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="comment">// | CBs | TexSRVs | TexUAVs | BufSRVs | BufUAVs | Samplers |</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  std::unique_ptr< void, STDDeleterRawMem<void> > m_MemoryBuffer;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="comment">// Offsets in elements of D3DShaderResourceAttribs</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> OffsetType;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  OffsetType m_TexSRVOffset = 0;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  OffsetType m_TexUAVOffset = 0;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  OffsetType m_BufSRVOffset = 0;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  OffsetType m_BufUAVOffset = 0;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  OffsetType m_SamplersOffset = 0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  OffsetType m_BufferEndOffset = 0;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> m_ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> };</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> }</div><div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// ShaderResources class uses continuous chunk of memory to store all resources, as follows:</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// m_MemoryBuffer m_TexSRVOffset m_TexUAVOffset m_BufSRVOffset m_BufUAVOffset m_SamplersOffset m_MemorySize</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// | | | | | | |</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// | CB[0] ... CB[Ncb-1] | TexSRV[0] ... TexSRV[Ntsrv-1] | TexUAV[0] ... TexUAV[Ntuav-1] | BufSRV[0] ... BufSRV[Nbsrv-1] | BufUAV[0] ... BufUAV[Nbuav-1] | Sam[0] ... Sam[Nsam-1] |</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">//</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// Ncb - number of constant buffers</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Ntsrv - number of texture SRVs</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// Ntuav - number of texture UAVs</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Nbsrv - number of buffer SRVs</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Nbuav - number of buffer UAVs</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// Nsam - number of samplers</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// </span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// If texture SRV is assigned a sampler, it is referenced through SamplerId:</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// </span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// _________________________SamplerId_______________________</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// | |</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// | V</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// | CBs | ... TexSRV[n] ... | TexUAVs | BufSRVs | BufUAVs | Sam[0] ... Sam[SamplerId] ... |</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// </span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">//</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define NOMINMAX</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include <d3dcommon.h></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">static</span> <span class="keyword">const</span> Char* D3DSamplerSuffix = <span class="stringliteral">"_sampler"</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> IsAllowedType(<a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> VarType, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> AllowedTypeBits)noexcept</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> ((1 << VarType) & AllowedTypeBits) != 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">inline</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetAllowedTypeBits(<span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *AllowedVarTypes, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumAllowedTypes)noexcept</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>(AllowedVarTypes == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> 0xFFFFFFFF;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> AllowedTypeBits = 0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> i=0; i < NumAllowedTypes; ++i)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  AllowedTypeBits |= 1 << AllowedVarTypes[i];</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> AllowedTypeBits;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">struct </span>D3DShaderResourceAttribs </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  D3DShaderResourceAttribs(<a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> &&_Name, </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  UINT _BindPoint, </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  UINT _BindCount, </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  D3D_SHADER_INPUT_TYPE _InputType, </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VariableType, </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  D3D_SRV_DIMENSION SRVDimension,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerId, </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">bool</span> _IsStaticSampler) :</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  Name(<a class="code" href="namespacestd.html">std</a>::move(_Name)),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  BindPoint(static_cast<<a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a>>(_BindPoint)),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  BindCount(static_cast<<a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a>>(_BindCount)),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  PackedAttribs( PackAttribs(_InputType, _VariableType, SRVDimension, SamplerId, _IsStaticSampler) )</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  VERIFY( static_cast<Uint32>(_InputType) <= ShaderInputTypeMask, <span class="stringliteral">"Shader input type is out of expected range"</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  VERIFY( static_cast<Uint32>(_VariableType) <= VariableTypeMask, <span class="stringliteral">"Variable type is out of expected range"</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  VERIFY( static_cast<Uint32>(SRVDimension) <= SRVDimMask, <span class="stringliteral">"SRV dimensions is out of expected range"</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  VERIFY(SamplerId <= SamplerIdMask, <span class="stringliteral">"Sampler Id is out of allowed range"</span> );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  VERIFY_EXPR(GetInputType() == _InputType);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  VERIFY_EXPR(GetVariableType() == _VariableType);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  VERIFY(_BindPoint <= MaxBindPoint || _BindPoint == InvalidBindPoint, <span class="stringliteral">"Bind Point is out of allowed range"</span> );</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  VERIFY(_BindCount <= MaxBindCount, <span class="stringliteral">"Bind Count is out of allowed range"</span> );</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(_InputType==D3D_SIT_SAMPLER)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  VERIFY_EXPR(IsStaticSampler() == _IsStaticSampler);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  VERIFY(!_IsStaticSampler, <span class="stringliteral">"Only samplers can be marked as static"</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (_InputType == D3D_SIT_TEXTURE)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  VERIFY_EXPR(GetSamplerId() == SamplerId);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  VERIFY(SamplerId == InvalidSamplerId, <span class="stringliteral">"Only textures can be assigned valid texture sampler"</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(_IsStaticSampler)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  VERIFY( _InputType == D3D_SIT_SAMPLER, <span class="stringliteral">"Invalid input type: D3D_SIT_SAMPLER is expected"</span> );</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  D3DShaderResourceAttribs(<span class="keyword">const</span> D3DShaderResourceAttribs& rhs) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  D3DShaderResourceAttribs(<span class="keyword">const</span> D3DShaderResourceAttribs& rhs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerId)noexcept : </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  Name(rhs.Name),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  BindPoint(rhs.BindPoint),</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  BindCount(rhs.BindCount),</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  PackedAttribs( PackAttribs(rhs.GetInputType(), rhs.GetVariableType(), rhs.GetSRVDimension(), SamplerId, <span class="keyword">false</span>) )</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  VERIFY(GetInputType() == D3D_SIT_TEXTURE, <span class="stringliteral">"Only textures can be assigned a texture sampler"</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  VERIFY_EXPR(GetInputType() == rhs.GetInputType());</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  VERIFY_EXPR(GetVariableType() == rhs.GetVariableType());</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  VERIFY_EXPR(GetSamplerId() == SamplerId);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  D3DShaderResourceAttribs(D3DShaderResourceAttribs&& rhs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerId)noexcept : </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  Name(std::move(rhs.Name)),</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  BindPoint(rhs.BindPoint),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  BindCount(rhs.BindCount),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  PackedAttribs( PackAttribs(rhs.GetInputType(), rhs.GetVariableType(), rhs.GetSRVDimension(), SamplerId, <span class="keyword">false</span>) )</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  VERIFY(GetInputType() == D3D_SIT_TEXTURE, <span class="stringliteral">"Only textures can be assigned a texture sampler"</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  VERIFY_EXPR(GetInputType() == rhs.GetInputType());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  VERIFY_EXPR(GetVariableType() == rhs.GetVariableType());</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  VERIFY_EXPR(GetSamplerId() == SamplerId);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  D3DShaderResourceAttribs(D3DShaderResourceAttribs&& rhs)noexcept : </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  Name(std::move(rhs.Name)),</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  BindPoint(rhs.BindPoint),</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  BindCount(rhs.BindCount),</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  PackedAttribs( rhs.PackedAttribs )</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  D3D_SHADER_INPUT_TYPE GetInputType()<span class="keyword">const</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_SHADER_INPUT_TYPE<span class="keyword">></span>( (PackedAttribs >> ShaderInputTypeBitOffset) & ShaderInputTypeMask );</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> GetVariableType()<span class="keyword">const</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a><span class="keyword">></span>( (PackedAttribs >> VariableTypeBitOffset) & VariableTypeMask );</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  D3D_SRV_DIMENSION GetSRVDimension()<span class="keyword">const</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>D3D_SRV_DIMENSION<span class="keyword">></span>( (PackedAttribs >> SRVDimBitOffset) & SRVDimMask );</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetSamplerId()<span class="keyword">const</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  VERIFY( GetInputType() == D3D_SIT_TEXTURE, <span class="stringliteral">"Invalid input type: D3D_SIT_TEXTURE is expected"</span> );</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> (PackedAttribs >> SamplerIdBitOffset) & SamplerIdMask;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">bool</span> IsStaticSampler()<span class="keyword">const</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  VERIFY( GetInputType() == D3D_SIT_SAMPLER, <span class="stringliteral">"Invalid input type: D3D_SIT_SAMPLER is expected"</span> );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> (PackedAttribs & (1 << IsStaticSamplerFlagBitOffset)) != 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordtype">bool</span> IsValidSampler()<span class="keyword">const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  VERIFY( GetInputType() == D3D_SIT_TEXTURE, <span class="stringliteral">"Invalid input type: D3D_SIT_TEXTURE is expected"</span> );</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> GetSamplerId() != InvalidSamplerId;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordtype">bool</span> IsValidBindPoint()<span class="keyword">const</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> BindPoint != InvalidBindPoint;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> InvalidBindPoint = std::numeric_limits<Uint16>::max();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> Name; <span class="comment">// Move ctor will not work if it is const</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> BindPoint;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> BindCount;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a> GetPrintName(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ArrayInd)<span class="keyword">const</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  VERIFY_EXPR(ArrayInd < BindCount);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(BindCount > 1)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <a class="code" href="namespace_diligent.html#a3d23c2ee2a78504778603d8ef49ae314">String</a>(Name) + <span class="charliteral">'['</span> + std::to_string(ArrayInd) + <span class="charliteral">']'</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> Name;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> MaxBindPoint = InvalidBindPoint-1;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> MaxBindCount = std::numeric_limits<Uint16>::max();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ShaderInputTypeBits = 4; <span class="comment">// Max value: D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER==11</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ShaderInputTypeMask = (1 << ShaderInputTypeBits)-1;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ShaderInputTypeBitOffset = 0;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  static_assert( D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER <= ShaderInputTypeMask, <span class="stringliteral">"Not enough bits to represent D3D_SHADER_INPUT_TYPE"</span> );</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> VariableTypeBits = 3; <span class="comment">// Max value: SHADER_VARIABLE_TYPE_DYNAMIC == 2</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> VariableTypeMask = (1<<VariableTypeBits)-1;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> VariableTypeBitOffset = ShaderInputTypeBitOffset + ShaderInputTypeBits;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  static_assert( <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698a6b6a3b5c0a1dec8fcf06ecb9f967acfb">SHADER_VARIABLE_TYPE_NUM_TYPES</a>-1 <= VariableTypeMask, <span class="stringliteral">"Not enough bits to represent SHADER_VARIABLE_TYPE"</span> );</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SRVDimBits = 4; <span class="comment">// Max value: D3D_SRV_DIMENSION_BUFFEREX == 11</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SRVDimMask = (1<<SRVDimBits)-1;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SRVDimBitOffset = VariableTypeBitOffset + VariableTypeBits;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  static_assert( D3D_SRV_DIMENSION_BUFFEREX <= SRVDimMask, <span class="stringliteral">"Not enough bits to represent D3D_SRV_DIMENSION"</span> );</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerIdBits = 32 - 1 - ShaderInputTypeBits - VariableTypeBits - SRVDimBits;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerIdMask = (1 << SamplerIdBits) - 1;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerIdBitOffset = SRVDimBitOffset + SRVDimBits;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> InvalidSamplerId = SamplerIdMask;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> IsStaticSamplerFlagBits = 1;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> IsStaticSamplerFlagMask = (1 << IsStaticSamplerFlagBits) - 1;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keyword">static</span> constexpr <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> IsStaticSamplerFlagBitOffset = SamplerIdBitOffset + SamplerIdBits;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  static_assert(IsStaticSamplerFlagBitOffset == 31, <span class="stringliteral">"Unexpected static sampler flag offset"</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> PackAttribs(D3D_SHADER_INPUT_TYPE _InputType, <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> _VariableType, D3D_SRV_DIMENSION SRVDimension, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> SamplerId, <span class="keywordtype">bool</span> _IsStaticSampler)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> ((static_cast<Uint32>(_InputType) & ShaderInputTypeMask) << ShaderInputTypeBitOffset) | </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  ((<span class="keyword">static_cast<</span><a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a><span class="keyword">></span>(_VariableType) & VariableTypeMask) << VariableTypeBitOffset ) |</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  ((static_cast<Uint32>(SRVDimension) & SRVDimMask) << SRVDimBitOffset) |</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  ((SamplerId & SamplerIdMask) << SamplerIdBitOffset) |</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  ((_IsStaticSampler ? 1 : 0) << IsStaticSamplerFlagBitOffset);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// 4 3 4 20 1</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="comment">// bit | 0 1 2 3 | 4 5 6 | 7 8 9 10 | 11 12 ... 30 | 31 | </span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// | | | | | |</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">// | InputType | VariableType | SRV Dim | SamplerId | StaticSamplerFlag |</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> PackedAttribs;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> };</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resources.html"> 270</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>(<a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a> &Allocator, <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> ShaderType);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// Copies specified types of resources from another ShaderResources objects</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// Only resources listed in AllowedVarTypes are copied</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>(<a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a> &Allocator, </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>& SrcResources, </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *AllowedVarTypes, </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumAllowedTypes);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a> (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a> (<a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>& operator = (<span class="keyword">const</span> <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>& operator = (<a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  ~<a class="code" href="class_diligent_1_1_shader_resources.html">ShaderResources</a>();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumCBs() <span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_TexSRVOffset - 0); }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumTexSRV() <span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_TexUAVOffset - m_TexSRVOffset); }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumTexUAV() <span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_BufSRVOffset - m_TexUAVOffset); }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumBufSRV() <span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_BufUAVOffset - m_BufSRVOffset); }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumBufUAV() <span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_SamplersOffset - m_BufUAVOffset); }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> GetNumSamplers()<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> (m_BufferEndOffset- m_SamplersOffset); }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetCB (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumCBs(), 0); }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetTexSRV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumTexSRV(), m_TexSRVOffset); }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetTexUAV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumTexUAV(), m_TexUAVOffset); }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetBufSRV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumBufSRV(), m_BufSRVOffset); }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetBufUAV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumBufUAV(), m_BufUAVOffset); }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keyword">const</span> D3DShaderResourceAttribs& GetSampler(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)<span class="keyword">const</span> noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumSamplers(), m_SamplersOffset); }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordtype">void</span> CountResources(<span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *AllowedVarTypes, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumAllowedTypes, </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumCBs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumTexSRVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumTexUAVs, </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumBufSRVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumBufUAVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a>& NumSamplers)<span class="keyword">const</span> noexcept;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> GetShaderType()<span class="keyword">const</span> noexcept{<span class="keywordflow">return</span> m_ShaderType;}</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// Process only resources listed in AllowedVarTypes</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">template</span><<span class="keyword">typename</span> THandleCB,</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keyword">typename</span> THandleTexSRV,</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">typename</span> THandleTexUAV,</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keyword">typename</span> THandleBufSRV,</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">typename</span> THandleBufUAV></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">void</span> ProcessResources(<span class="keyword">const</span> <a class="code" href="namespace_diligent.html#adea6ddf55230a2722e6a7401e18de698">SHADER_VARIABLE_TYPE</a> *AllowedVarTypes, </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumAllowedTypes,</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  THandleCB HandleCB,</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  THandleTexSRV HandleTexSRV,</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  THandleTexUAV HandleTexUAV,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  THandleBufSRV HandleBufSRV,</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  THandleBufUAV HandleBufUAV)<span class="keyword">const</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> AllowedTypeBits = GetAllowedTypeBits(AllowedVarTypes, NumAllowedTypes);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n=0; n < GetNumCBs(); ++n)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& CB = GetCB(n);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span>( IsAllowedType(CB.GetVariableType(), AllowedTypeBits) )</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  HandleCB(CB);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n=0; n < GetNumTexSRV(); ++n)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &TexSRV = GetTexSRV(n);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span>( IsAllowedType(TexSRV.GetVariableType(), AllowedTypeBits) )</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  HandleTexSRV(TexSRV);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n=0; n < GetNumTexUAV(); ++n)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &TexUAV = GetTexUAV(n);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span>( IsAllowedType(TexUAV.GetVariableType(), AllowedTypeBits) )</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  HandleTexUAV(TexUAV);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n=0; n < GetNumBufSRV(); ++n)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keyword">const</span> <span class="keyword">auto</span> &BufSRV = GetBufSRV(n);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">if</span>( IsAllowedType(BufSRV.GetVariableType(), AllowedTypeBits) )</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  HandleBufSRV(BufSRV);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">for</span>(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n=0; n < GetNumBufUAV(); ++n)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& BufUAV = GetBufUAV(n);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">if</span>( IsAllowedType(BufUAV.GetVariableType(), AllowedTypeBits) )</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  HandleBufUAV(BufUAV);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordtype">void</span> Initialize(<a class="code" href="class_diligent_1_1_i_memory_allocator.html">IMemoryAllocator</a> &Allocator, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumCBs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumTexSRVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumTexUAVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumBufSRVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumBufUAVs, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumSamplers);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  __forceinline D3DShaderResourceAttribs& GetResAttribs(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumResources, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Offset)noexcept</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  VERIFY(n < NumResources, <span class="stringliteral">"Resource index ("</span>, n, <span class="stringliteral">") is out of range. Max allowed index: "</span>, NumResources-1);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  VERIFY_EXPR(Offset + n < m_BufferEndOffset);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>D3DShaderResourceAttribs*<span class="keyword">></span>(m_MemoryBuffer.get())[Offset + n];</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  __forceinline <span class="keyword">const</span> D3DShaderResourceAttribs& GetResAttribs(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> NumResources, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Offset)<span class="keyword">const</span> noexcept</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  VERIFY(n < NumResources, <span class="stringliteral">"Resource index ("</span>, n, <span class="stringliteral">") is out of range. Max allowed index: "</span>, NumResources-1);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  VERIFY_EXPR(Offset + n < m_BufferEndOffset);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>D3DShaderResourceAttribs*<span class="keyword">></span>(m_MemoryBuffer.get())[Offset + n];</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  D3DShaderResourceAttribs& GetCB (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumCBs(), 0); }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  D3DShaderResourceAttribs& GetTexSRV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumTexSRV(), m_TexSRVOffset); }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  D3DShaderResourceAttribs& GetTexUAV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumTexUAV(), m_TexUAVOffset); }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  D3DShaderResourceAttribs& GetBufSRV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumBufSRV(), m_BufSRVOffset); }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  D3DShaderResourceAttribs& GetBufUAV (<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumBufUAV(), m_BufUAVOffset); }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  D3DShaderResourceAttribs& GetSampler(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> n)noexcept{ <span class="keywordflow">return</span> GetResAttribs(n, GetNumSamplers(), m_SamplersOffset); }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> FindAssignedSamplerId(<span class="keyword">const</span> D3DShaderResourceAttribs& TexSRV)<span class="keyword">const</span>;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="comment">// Memory buffer that holds all resources as continuous chunk of memory:</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="comment">// | CBs | TexSRVs | TexUAVs | BufSRVs | BufUAVs | Samplers |</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  std::unique_ptr< void, STDDeleterRawMem<void> > m_MemoryBuffer;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="comment">// Offsets in elements of D3DShaderResourceAttribs</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keyword">typedef</span> <a class="code" href="namespace_diligent.html#aed4157b3402532cf891c93eac3b41479">Uint16</a> OffsetType;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  OffsetType m_TexSRVOffset = 0;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  OffsetType m_TexUAVOffset = 0;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  OffsetType m_BufSRVOffset = 0;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  OffsetType m_BufUAVOffset = 0;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  OffsetType m_SamplersOffset = 0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  OffsetType m_BufferEndOffset = 0;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">SHADER_TYPE</a> m_ShaderType = <a class="code" href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2a6799c4292a2b6e6087a4f0ab3e6efc5a">SHADER_TYPE_UNKNOWN</a>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> };</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> }</div><div class="ttc" id="namespace_diligent_html_a8294eb0a10dafa18441e78a80d231fd2"><div class="ttname"><a href="namespace_diligent.html#a8294eb0a10dafa18441e78a80d231fd2">Diligent::SHADER_TYPE</a></div><div class="ttdeci">SHADER_TYPE</div><div class="ttdoc">Describes the shader type. </div><div class="ttdef"><b>Definition:</b> Shader.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> <div class="ttc" id="class_diligent_1_1_shader_resources_html"><div class="ttname"><a href="class_diligent_1_1_shader_resources.html">Diligent::ShaderResources</a></div><div class="ttdoc">Diligent::ShaderResources class. </div><div class="ttdef"><b>Definition:</b> ShaderResources.h:270</div></div> diff --git a/doc/html/_shader_resources_d3_d11_8h_source.html b/doc/html/_shader_resources_d3_d11_8h_source.html index 5e72adf0..ab88f1ca 100644 --- a/doc/html/_shader_resources_d3_d11_8h_source.html +++ b/doc/html/_shader_resources_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourcesD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// ShaderResourcesD3D11 are created by ShaderD3D11Impl instances. They are then referenced by ShaderResourceLayoutD3D11 objects, which are in turn</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// created by instances of ShaderResourceBindingsD3D11Impl (and ShaderD3D11Impl too)</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// _________________</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// | |</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// | ShaderD3D11Impl |</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// |_________________|</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// |</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// |shared_ptr</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// ________V_____________ _____________________________________________________________________</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// | ShaderResourcesD3D11 |--------------->| CBs | TexSRVs | TexUAVs | BufSRVs | BufUAVs | Samplers |</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// |______________________| |________|___________|___________|___________|___________|____________|</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// A A A A A A A</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// | \ \ \ \ \ |</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// |shared_ptr Ref Ref Ref Ref Ref |</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// ________|__________________ ____\_________\__________\__________\___________\_______ |</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// | ShaderResourceLayoutD3D11 |--------------->| CBs | TexSRVs | TexUAVs | BufSRVs | BufUAVs | |</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// |___________________________| |________|___________|___________|___________|___________| |</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// | Ref </span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// |______________________________________________|</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// </span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// One ShaderResources instance can be referenced by multiple objects</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">//</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">//</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// | | | |</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// ----| ShaderResourceLayoutD3D11 |<-----| ShaderResourceBindingD3D11Impl |</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// | |___________________________| |________________________________|</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// |</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// |</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// _________________ ______________________ | ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// | | shared_ptr | | shared_ptr| | | | |</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// | ShaderD3D11Impl |--------------->| ShaderResourcesD3D11 |<---------------| ShaderResourceLayoutD3D11 |<-----| ShaderResourceBindingD3D11Impl |</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// |_________________| |______________________| | |___________________________| |________________________________|</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// | A |</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// V | |</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// ____<m_StaticResLayout>____ | | ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// | | shared_ptr | | | | | |</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// | ShaderResourceLayoutD3D11 |------------------- ----| ShaderResourceLayoutD3D11 |<-----| ShaderResourceBindingD3D11Impl |</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// |___________________________| |___________________________| |________________________________|</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">//</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">//</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#include "ShaderResources.h"</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resources_d3_d11.html"> 83</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resources_d3_d11.html">ShaderResourcesD3D11</a> : <span class="keyword">public</span> ShaderResources</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// Loads shader resources from the compiled shader bytecode</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="class_diligent_1_1_shader_resources_d3_d11.html">ShaderResourcesD3D11</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11Impl, ID3DBlob *pShaderBytecode, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> &ShdrDesc);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  ~<a class="code" href="class_diligent_1_1_shader_resources_d3_d11.html">ShaderResourcesD3D11</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  __forceinline Int32 GetMaxCBBindPoint()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_MaxCBBindPoint; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  __forceinline Int32 GetMaxSRVBindPoint()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_MaxSRVBindPoint; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  __forceinline Int32 GetMaxSamplerBindPoint()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_MaxSamplerBindPoint; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  __forceinline Int32 GetMaxUAVBindPoint()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_MaxUAVBindPoint; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#ifdef VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">void</span> dbgVerifyCommittedResources(ID3D11Buffer* CommittedD3D11CBs[],</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  ID3D11ShaderResourceView* CommittedD3D11SRVs[],</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  ID3D11Resource* CommittedD3D11SRVResources[],</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  ID3D11SamplerState* CommittedD3D11Samplers[],</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  ID3D11UnorderedAccessView* CommittedD3D11UAVs[],</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  ID3D11Resource* CommittedD3D11UAVResources[],</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> &ResourceCache)<span class="keyword">const</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">const</span> Char *GetShaderName()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_ShaderName;}</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">void</span> InitStaticSamplers(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> &ResourceCache)<span class="keyword">const</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">typedef</span> Int8 MaxBindPointType;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  MaxBindPointType m_MaxCBBindPoint = -1; <span class="comment">// Max == 13</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  MaxBindPointType m_MaxSRVBindPoint = -1; <span class="comment">// Max == 127</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  MaxBindPointType m_MaxSamplerBindPoint = -1; <span class="comment">// Max == 15</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  MaxBindPointType m_MaxUAVBindPoint = -1; <span class="comment">// Max == 7</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Uint8 m_NumStaticSamplers = 0; <span class="comment">// Max == 16</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">static</span> constexpr UINT MaxAllowedBindPoint = std::numeric_limits<MaxBindPointType>::max();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  static_assert(D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT-1 <= MaxAllowedBindPoint, <span class="stringliteral">"Not enough bits to represent max CB slot"</span> );</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  static_assert(D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT-1 <= MaxAllowedBindPoint, <span class="stringliteral">"Not enough bits to represent max SRV slot"</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  static_assert(D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT-1 <= MaxAllowedBindPoint, <span class="stringliteral">"Not enough bits to represent max Sampler slot"</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  static_assert(D3D11_PS_CS_UAV_REGISTER_COUNT-1 <= MaxAllowedBindPoint, <span class="stringliteral">"Not enough bits to represent max UAV slot"</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// ShaderResourcesD3D11 is part of the ShaderD3D11Impl object, so we can simply</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// reference shader name without the need to copy it</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">const</span> Char* m_ShaderName;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">typedef</span> std::pair<const D3DShaderResourceAttribs*, RefCntAutoPtr<ISampler> > StaticSamplerAttribs;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  StaticSamplerAttribs& GetStaticSampler(Uint32 n)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  VERIFY_EXPR(n < m_NumStaticSamplers);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span> StaticSamplerAttribs* <span class="keyword">></span>(m_StaticSamplers.get())[n];</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// We have to use void, because we will be calling destructors manually</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  std::unique_ptr< void, STDDeleterRawMem<void > > m_StaticSamplers;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> };</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div><div class="ttc" id="struct_diligent_1_1_shader_desc_html"><div class="ttname"><a href="struct_diligent_1_1_shader_desc.html">Diligent::ShaderDesc</a></div><div class="ttdoc">Shader description. </div><div class="ttdef"><b>Definition:</b> Shader.h:152</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// ShaderResourcesD3D11 are created by ShaderD3D11Impl instances. They are then referenced by ShaderResourceLayoutD3D11 objects, which are in turn</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// created by instances of ShaderResourceBindingsD3D11Impl (and ShaderD3D11Impl too)</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// _________________</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// | |</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// | ShaderD3D11Impl |</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// |_________________|</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// |</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// |shared_ptr</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// ________V_____________ _____________________________________________________________________</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// | ShaderResourcesD3D11 |--------------->| CBs | TexSRVs | TexUAVs | BufSRVs | BufUAVs | Samplers |</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// |______________________| |________|___________|___________|___________|___________|____________|</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// A A A A A A A</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// | \ \ \ \ \ |</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// |shared_ptr Ref Ref Ref Ref Ref |</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// ________|__________________ ____\_________\__________\__________\___________\_______ |</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// | ShaderResourceLayoutD3D11 |--------------->| CBs | TexSRVs | TexUAVs | BufSRVs | BufUAVs | |</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// |___________________________| |________|___________|___________|___________|___________| |</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// | Ref </span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// |______________________________________________|</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// </span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// One ShaderResources instance can be referenced by multiple objects</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">//</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">//</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// | | | |</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// ----| ShaderResourceLayoutD3D11 |<-----| ShaderResourceBindingD3D11Impl |</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// | |___________________________| |________________________________|</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// |</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// |</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// _________________ ______________________ | ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// | | shared_ptr | | shared_ptr| | | | |</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// | ShaderD3D11Impl |--------------->| ShaderResourcesD3D11 |<---------------| ShaderResourceLayoutD3D11 |<-----| ShaderResourceBindingD3D11Impl |</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// |_________________| |______________________| | |___________________________| |________________________________|</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// | A |</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// V | |</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// ____<m_StaticResLayout>____ | | ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// | | shared_ptr | | | | | |</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// | ShaderResourceLayoutD3D11 |------------------- ----| ShaderResourceLayoutD3D11 |<-----| ShaderResourceBindingD3D11Impl |</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// |___________________________| |___________________________| |________________________________|</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">//</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">//</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#include "ShaderResources.h"</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resources_d3_d11.html"> 83</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resources_d3_d11.html">ShaderResourcesD3D11</a> : <span class="keyword">public</span> ShaderResources</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// Loads shader resources from the compiled shader bytecode</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="class_diligent_1_1_shader_resources_d3_d11.html">ShaderResourcesD3D11</a>(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11Impl, ID3DBlob *pShaderBytecode, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> &ShdrDesc);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  ~<a class="code" href="class_diligent_1_1_shader_resources_d3_d11.html">ShaderResourcesD3D11</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  __forceinline Int32 GetMaxCBBindPoint()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_MaxCBBindPoint; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  __forceinline Int32 GetMaxSRVBindPoint()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_MaxSRVBindPoint; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  __forceinline Int32 GetMaxSamplerBindPoint()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_MaxSamplerBindPoint; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  __forceinline Int32 GetMaxUAVBindPoint()<span class="keyword"> const</span>{<span class="keywordflow">return</span> m_MaxUAVBindPoint; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#ifdef VERIFY_SHADER_BINDINGS</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">void</span> dbgVerifyCommittedResources(ID3D11Buffer* CommittedD3D11CBs[],</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  ID3D11ShaderResourceView* CommittedD3D11SRVs[],</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  ID3D11Resource* CommittedD3D11SRVResources[],</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  ID3D11SamplerState* CommittedD3D11Samplers[],</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  ID3D11UnorderedAccessView* CommittedD3D11UAVs[],</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  ID3D11Resource* CommittedD3D11UAVResources[],</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> &ResourceCache)<span class="keyword">const</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">const</span> Char *GetShaderName()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_ShaderName;}</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">void</span> InitStaticSamplers(<span class="keyword">class</span> <a class="code" href="class_diligent_1_1_shader_resource_cache_d3_d11.html">ShaderResourceCacheD3D11</a> &ResourceCache)<span class="keyword">const</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">typedef</span> Int8 MaxBindPointType;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  MaxBindPointType m_MaxCBBindPoint = -1; <span class="comment">// Max == 13</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  MaxBindPointType m_MaxSRVBindPoint = -1; <span class="comment">// Max == 127</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  MaxBindPointType m_MaxSamplerBindPoint = -1; <span class="comment">// Max == 15</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  MaxBindPointType m_MaxUAVBindPoint = -1; <span class="comment">// Max == 7</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Uint8 m_NumStaticSamplers = 0; <span class="comment">// Max == 16</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">static</span> constexpr UINT MaxAllowedBindPoint = std::numeric_limits<MaxBindPointType>::max();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  static_assert(D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT-1 <= MaxAllowedBindPoint, <span class="stringliteral">"Not enough bits to represent max CB slot"</span> );</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  static_assert(D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT-1 <= MaxAllowedBindPoint, <span class="stringliteral">"Not enough bits to represent max SRV slot"</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  static_assert(D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT-1 <= MaxAllowedBindPoint, <span class="stringliteral">"Not enough bits to represent max Sampler slot"</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  static_assert(D3D11_PS_CS_UAV_REGISTER_COUNT-1 <= MaxAllowedBindPoint, <span class="stringliteral">"Not enough bits to represent max UAV slot"</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// ShaderResourcesD3D11 is part of the ShaderD3D11Impl object, so we can simply</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// reference shader name without the need to copy it</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">const</span> Char* m_ShaderName;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">typedef</span> std::pair<const D3DShaderResourceAttribs*, RefCntAutoPtr<ISampler> > StaticSamplerAttribs;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  StaticSamplerAttribs& GetStaticSampler(Uint32 n)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  VERIFY_EXPR(n < m_NumStaticSamplers);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span> StaticSamplerAttribs* <span class="keyword">></span>(m_StaticSamplers.get())[n];</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// We have to use void, because we will be calling destructors manually</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  std::unique_ptr< void, STDDeleterRawMem<void > > m_StaticSamplers;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> };</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div><div class="ttc" id="struct_diligent_1_1_shader_desc_html"><div class="ttname"><a href="struct_diligent_1_1_shader_desc.html">Diligent::ShaderDesc</a></div><div class="ttdoc">Shader description. </div><div class="ttdef"><b>Definition:</b> Shader.h:152</div></div> <div class="ttc" id="class_diligent_1_1_shader_resource_cache_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_shader_resource_cache_d3_d11.html">Diligent::ShaderResourceCacheD3D11</a></div><div class="ttdoc">The class implements a cache that holds resources bound to a specific shader stage. </div><div class="ttdef"><b>Definition:</b> ShaderResourceCacheD3D11.h:46</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_shader_resources_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_shader_resources_d3_d11.html">Diligent::ShaderResourcesD3D11</a></div><div class="ttdoc">Diligent::ShaderResources class. </div><div class="ttdef"><b>Definition:</b> ShaderResourcesD3D11.h:83</div></div> @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_resources_d3_d12_8h_source.html b/doc/html/_shader_resources_d3_d12_8h_source.html index a1a3728b..1d90a443 100644 --- a/doc/html/_shader_resources_d3_d12_8h_source.html +++ b/doc/html/_shader_resources_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderResourcesD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// ShaderResourcesD3D12 are created by ShaderD3D12Impl instances. They are then referenced by ShaderResourceLayoutD3D12 objects, which are in turn</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// created by instances of PipelineStatesD3D12Impl and ShaderResourceBindingsD3D12Impl (and ShaderD3D12Impl too)</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// _________________</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// | |</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// | ShaderD3D12Impl |</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// |_________________|</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// |</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// |shared_ptr</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// ________V_____________ _____________________________________________________________________</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// | ShaderResourcesD3D12 |--------------->| CBs | TexSRVs | TexUAVs | BufSRVs | BufUAVs | Samplers |</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// |______________________| |________|___________|___________|___________|___________|____________|</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// A A A A </span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// | \ / \</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// |shared_ptr Ref Ref Ref</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// ________|__________________ ________\________________________/_________________________\_________________________________________</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// | ShaderResourceLayoutD3D12 |--------------->| SRV_CBV_UAV[0] | SRV_CBV_UAV[1] | ... | Sampler[0] | Sampler[1] | ... |</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// |___________________________| |___________________|_________________|_______________|__________________|_________________|__________|</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// A | A</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// | |___________________SamplerId________________________|</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// |</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// __________|_____________</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// | |</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// | PipelineStateD3D12Impl |</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// |________________________|</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">//</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">//</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// One ShaderResources instance can be referenced by multiple objects</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">//</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">//</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// ________________________ _<m_ShaderResourceLayouts>_ ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// | | | | | | | |</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// | PipelineStateD3D12Impl |-------->| ShaderResourceLayoutD3D12 | ----| ShaderResourceLayoutD3D12 |<-----| ShaderResourceBindingD3D12Impl |</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// |________________________| |___________________________| | |___________________________| |________________________________|</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// | |</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// | shared_ptr |</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// _________________ ___________V__________ | ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// | | shared_ptr | | shared_ptr| | | | |</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// | ShaderD3D12Impl |--------------->| ShaderResourcesD3D12 |<---------------| ShaderResourceLayoutD3D12 |<-----| ShaderResourceBindingD3D12Impl |</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// |_________________| |______________________| | |___________________________| |________________________________|</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// | A |</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// V | |</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// ____<m_StaticResLayout>____ | | ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// | | shared_ptr | | | | | |</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// | ShaderResourceLayoutD3D12 |------------------- ----| ShaderResourceLayoutD3D12 |<-----| ShaderResourceBindingD3D12Impl |</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// |___________________________| |___________________________| |________________________________|</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">//</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">//</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#include "ShaderResources.h"</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resources_d3_d12.html"> 87</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resources_d3_d12.html">ShaderResourcesD3D12</a> : <span class="keyword">public</span> ShaderResources</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Loads shader resources from the compiled shader bytecode</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="class_diligent_1_1_shader_resources_d3_d12.html">ShaderResourcesD3D12</a>(ID3DBlob *pShaderBytecode, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> &ShdrDesc);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> };</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> }</div><div class="ttc" id="struct_diligent_1_1_shader_desc_html"><div class="ttname"><a href="struct_diligent_1_1_shader_desc.html">Diligent::ShaderDesc</a></div><div class="ttdoc">Shader description. </div><div class="ttdef"><b>Definition:</b> Shader.h:152</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// ShaderResourcesD3D12 are created by ShaderD3D12Impl instances. They are then referenced by ShaderResourceLayoutD3D12 objects, which are in turn</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// created by instances of PipelineStatesD3D12Impl and ShaderResourceBindingsD3D12Impl (and ShaderD3D12Impl too)</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// _________________</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// | |</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// | ShaderD3D12Impl |</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// |_________________|</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// |</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// |shared_ptr</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// ________V_____________ _____________________________________________________________________</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// | ShaderResourcesD3D12 |--------------->| CBs | TexSRVs | TexUAVs | BufSRVs | BufUAVs | Samplers |</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// |______________________| |________|___________|___________|___________|___________|____________|</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// A A A A </span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// | \ / \</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// |shared_ptr Ref Ref Ref</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// ________|__________________ ________\________________________/_________________________\_________________________________________</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// | | unique_ptr | | | | | | |</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// | ShaderResourceLayoutD3D12 |--------------->| SRV_CBV_UAV[0] | SRV_CBV_UAV[1] | ... | Sampler[0] | Sampler[1] | ... |</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// |___________________________| |___________________|_________________|_______________|__________________|_________________|__________|</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// A | A</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// | |___________________SamplerId________________________|</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// |</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// __________|_____________</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// | |</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// | PipelineStateD3D12Impl |</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// |________________________|</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">//</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">//</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// One ShaderResources instance can be referenced by multiple objects</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">//</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">//</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// ________________________ _<m_ShaderResourceLayouts>_ ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// | | | | | | | |</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// | PipelineStateD3D12Impl |-------->| ShaderResourceLayoutD3D12 | ----| ShaderResourceLayoutD3D12 |<-----| ShaderResourceBindingD3D12Impl |</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// |________________________| |___________________________| | |___________________________| |________________________________|</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// | |</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// | shared_ptr |</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// _________________ ___________V__________ | ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// | | shared_ptr | | shared_ptr| | | | |</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// | ShaderD3D12Impl |--------------->| ShaderResourcesD3D12 |<---------------| ShaderResourceLayoutD3D12 |<-----| ShaderResourceBindingD3D12Impl |</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// |_________________| |______________________| | |___________________________| |________________________________|</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// | A |</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// V | |</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// ____<m_StaticResLayout>____ | | ____<m_pResourceLayouts>___ ________________________________ </span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// | | shared_ptr | | | | | |</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// | ShaderResourceLayoutD3D12 |------------------- ----| ShaderResourceLayoutD3D12 |<-----| ShaderResourceBindingD3D12Impl |</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// |___________________________| |___________________________| |________________________________|</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">//</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">//</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#include "ShaderResources.h"</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="class_diligent_1_1_shader_resources_d3_d12.html"> 87</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_shader_resources_d3_d12.html">ShaderResourcesD3D12</a> : <span class="keyword">public</span> ShaderResources</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Loads shader resources from the compiled shader bytecode</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="class_diligent_1_1_shader_resources_d3_d12.html">ShaderResourcesD3D12</a>(ID3DBlob *pShaderBytecode, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_shader_desc.html">ShaderDesc</a> &ShdrDesc);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> };</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> }</div><div class="ttc" id="struct_diligent_1_1_shader_desc_html"><div class="ttname"><a href="struct_diligent_1_1_shader_desc.html">Diligent::ShaderDesc</a></div><div class="ttdoc">Shader description. </div><div class="ttdef"><b>Definition:</b> Shader.h:152</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_shader_resources_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_shader_resources_d3_d12.html">Diligent::ShaderResourcesD3D12</a></div><div class="ttdoc">Diligent::ShaderResources class. </div><div class="ttdef"><b>Definition:</b> ShaderResourcesD3D12.h:87</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_shader_variable_d3_d_base_8h_source.html b/doc/html/_shader_variable_d3_d_base_8h_source.html index 7c9fe530..5b230772 100644 --- a/doc/html/_shader_variable_d3_d_base_8h_source.html +++ b/doc/html/_shader_variable_d3_d_base_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">ShaderVariableD3DBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TShaderResourceLayout></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">struct </span>ShaderVariableD3DBase : <span class="keyword">public</span> IShaderVariable</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ShaderVariableD3DBase(TShaderResourceLayout &ParentResLayout, <span class="keyword">const</span> D3DShaderResourceAttribs &ResourcesAttribs) : </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_ParentResLayout(ParentResLayout),</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  Attribs(ResourcesAttribs)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> IReferenceCounters* GetReferenceCounters()const override final</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> m_ParentResLayout.GetOwner().GetReferenceCounters();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> Atomics::Long AddRef()override final</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> m_ParentResLayout.GetOwner().AddRef();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> Atomics::Long Release()override final</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> m_ParentResLayout.GetOwner().Release();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>( ppInterface == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  *ppInterface = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>( IID == IID_ShaderVariable || IID == <a class="code" href="namespace_diligent.html#a662bf4fe08440024626cf689ac183b0b">IID_Unknown</a> )</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  *ppInterface = <span class="keyword">this</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  (*ppInterface)->AddRef();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">const</span> D3DShaderResourceAttribs &Attribs;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  TShaderResourceLayout &m_ParentResLayout;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  };</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "Shader.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">template</span><<span class="keyword">typename</span> TShaderResourceLayout></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">struct </span>ShaderVariableD3DBase : <span class="keyword">public</span> IShaderVariable</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ShaderVariableD3DBase(TShaderResourceLayout &ParentResLayout, <span class="keyword">const</span> D3DShaderResourceAttribs &ResourcesAttribs) : </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_ParentResLayout(ParentResLayout),</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  Attribs(ResourcesAttribs)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> IReferenceCounters* GetReferenceCounters()const override final</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> m_ParentResLayout.GetOwner().GetReferenceCounters();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> Atomics::Long AddRef()override final</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> m_ParentResLayout.GetOwner().AddRef();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> Atomics::Long Release()override final</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> m_ParentResLayout.GetOwner().Release();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>( ppInterface == <span class="keyword">nullptr</span> )</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  *ppInterface = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>( IID == IID_ShaderVariable || IID == <a class="code" href="namespace_diligent.html#a662bf4fe08440024626cf689ac183b0b">IID_Unknown</a> )</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  *ppInterface = <span class="keyword">this</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  (*ppInterface)->AddRef();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">const</span> D3DShaderResourceAttribs &Attribs;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  TShaderResourceLayout &m_ParentResLayout;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  };</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a662bf4fe08440024626cf689ac183b0b"><div class="ttname"><a href="namespace_diligent.html#a662bf4fe08440024626cf689ac183b0b">Diligent::IID_Unknown</a></div><div class="ttdeci">static constexpr INTERFACE_ID IID_Unknown</div><div class="ttdoc">Unknown interface. </div><div class="ttdef"><b>Definition:</b> InterfaceID.h:50</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> diff --git a/doc/html/_standard_file_8h_source.html b/doc/html/_standard_file_8h_source.html index a21dc1be..8ebe68f9 100644 --- a/doc/html/_standard_file_8h_source.html +++ b/doc/html/_standard_file_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">StandardFile.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "BasicFileSystem.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>StandardFile : <span class="keyword">public</span> BasicFile</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  StandardFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs, Diligent::Char SlashSymbol );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~StandardFile()<span class="keyword">override</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">void</span> Read(<a class="code" href="class_diligent_1_1_i_data_blob.html">Diligent::IDataBlob</a> *pData);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">bool</span> Read(<span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> BufferSize);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">bool</span> Write(<span class="keyword">const</span> <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> BufferSize);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">size_t</span> GetSize();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">size_t</span> GetPos();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> SetPos(<span class="keywordtype">size_t</span> Offset, FilePosOrigin Origin);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  FILE * m_pFile;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="ttc" id="class_diligent_1_1_i_data_blob_html"><div class="ttname"><a href="class_diligent_1_1_i_data_blob.html">Diligent::IDataBlob</a></div><div class="ttdoc">Base interface for a file stream. </div><div class="ttdef"><b>Definition:</b> DataBlob.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "BasicFileSystem.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>StandardFile : <span class="keyword">public</span> BasicFile</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  StandardFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs, Diligent::Char SlashSymbol );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~StandardFile()<span class="keyword">override</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">void</span> Read(<a class="code" href="class_diligent_1_1_i_data_blob.html">Diligent::IDataBlob</a> *pData);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">bool</span> Read(<span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> BufferSize);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">bool</span> Write(<span class="keyword">const</span> <span class="keywordtype">void</span> *Data, <span class="keywordtype">size_t</span> BufferSize);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">size_t</span> GetSize();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">size_t</span> GetPos();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> SetPos(<span class="keywordtype">size_t</span> Offset, FilePosOrigin Origin);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  FILE * m_pFile;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="ttc" id="class_diligent_1_1_i_data_blob_html"><div class="ttname"><a href="class_diligent_1_1_i_data_blob.html">Diligent::IDataBlob</a></div><div class="ttdoc">Base interface for a file stream. </div><div class="ttdef"><b>Definition:</b> DataBlob.h:39</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_state_objects_registry_8h_source.html b/doc/html/_state_objects_registry_8h_source.html index af9434c5..234088e9 100644 --- a/doc/html/_state_objects_registry_8h_source.html +++ b/doc/html/_state_objects_registry_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">StateObjectsRegistry.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ResourceDescType></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html"> 58</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_state_objects_registry.html">StateObjectsRegistry</a></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html#ae826dc2c8950c7f40d3fe37dfc1d36b7"> 62</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> <a class="code" href="class_diligent_1_1_state_objects_registry.html#ae826dc2c8950c7f40d3fe37dfc1d36b7">DeletedObjectsToPurge</a> = 32;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_diligent_1_1_state_objects_registry.html">StateObjectsRegistry</a>(IMemoryAllocator &RawAllocator, <span class="keyword">const</span> Char* RegistryName) :</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_RegistryName( RegistryName ),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_DescToObjHashMap(STD_ALLOCATOR_RAW_MEM(HashMapElem, RawAllocator, <span class="stringliteral">"Allocator for unordered_map<ResourceDescType, RefCntWeakPtr<IDeviceObject> >"</span>) )</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  ~<a class="code" href="class_diligent_1_1_state_objects_registry.html">StateObjectsRegistry</a>()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Object registry is part of the device, and every device</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// object holds a strong reference to the device. So device</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// is destroyed after all device objects are destroyed, and there</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// may only be expired references in the registry. After we</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// purge it, the registry must be empty.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="class_diligent_1_1_state_objects_registry.html#ac4e68d1e015e2ad5941700b4d595a71a">Purge</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  VERIFY( m_DescToObjHashMap.empty(), <span class="stringliteral">"DescToObjHashMap is not empty"</span> );</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html#a24b0050a49d3cb95c7da0540648f4d28"> 91</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_state_objects_registry.html#a24b0050a49d3cb95c7da0540648f4d28">Add</a>( <span class="keyword">const</span> ResourceDescType& ObjectDesc, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject )</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  ThreadingTools::LockHelper Lock( m_LockFlag );</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// If the number of outstanding deleted objects reached the threshold value,</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// purge the registry. Since we have exclusive access now, it is safe</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// to do.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>( m_NumDeletedObjects >= <a class="code" href="class_diligent_1_1_state_objects_registry.html#ae826dc2c8950c7f40d3fe37dfc1d36b7">DeletedObjectsToPurge</a> )</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="class_diligent_1_1_state_objects_registry.html#ac4e68d1e015e2ad5941700b4d595a71a">Purge</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_NumDeletedObjects = 0;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// Try to construct the new element in place</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">auto</span> Elems = m_DescToObjHashMap.emplace( std::make_pair( ObjectDesc, <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">Diligent::RefCntWeakPtr<IDeviceObject></a>(pObject) ) );</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// It is theorertically possible that the same object can be found</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// in the registry. This might happen if two threads try to create</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// the same object at the same time. They both will not find the</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// object and then will create and try to add it.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">//</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// If the object already exists, we replace the existing reference.</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// This is safer as there might be scenarios where existing reference</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// might be expired. For instance, two threads try to create the same</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// object which is not in the registry. The first thread creates</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// the object, adds it to the registry and then releases it. After that</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// the second thread creates the same object and tries to add it to</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">// the registry. It will find an existing expired reference to the </span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// object.</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>( !Elems.second )</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  VERIFY( Elems.first->first == ObjectDesc, <span class="stringliteral">"Incorrect object description"</span> );</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  LOG_WARNING_MESSAGE( <span class="stringliteral">"Object named \""</span>, Elems.first->first.Name, <span class="stringliteral">"\" with the same description already exists in the registry."</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="stringliteral">"Replacing with the new object named \""</span>, ObjectDesc.Name ? ObjectDesc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\"."</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  Elems.first->second = pObject;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html#a6643d764bfcb0bc4314a4d4f227dc4a2"> 129</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_state_objects_registry.html#a6643d764bfcb0bc4314a4d4f227dc4a2">Find</a>( <span class="keyword">const</span> ResourceDescType &Desc, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> **ppObject )</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  VERIFY( *ppObject == <span class="keyword">nullptr</span>, <span class="stringliteral">"Overwriting reference to existing object may cause memory leaks"</span> );</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  *ppObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  ThreadingTools::LockHelper Lock( m_LockFlag );</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">auto</span> It = m_DescToObjHashMap.find( Desc );</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span>( It != m_DescToObjHashMap.end() )</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// Try to obtain strong reference to the object.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// This is an atomic operation and we either get</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// a new strong reference or object has been destroyed</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// and we get null.</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">auto</span> pObject = It->second.Lock();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>( pObject )</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  *ppObject = pObject.Detach();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  LOG_INFO_MESSAGE( <span class="stringliteral">"Equivalent of the requested state object named \""</span>, Desc.Name ? Desc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\" found in the "</span>, m_RegistryName, <span class="stringliteral">" registry. Reusing existing object."</span>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Expired object found: remove it from the map</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_DescToObjHashMap.erase(It);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  Atomics::AtomicDecrement(m_NumDeletedObjects);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html#ac4e68d1e015e2ad5941700b4d595a71a"> 158</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_state_objects_registry.html#ac4e68d1e015e2ad5941700b4d595a71a">Purge</a>()</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  Uint32 NumPurgedObjects = 0;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">auto</span> It = m_DescToObjHashMap.begin();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">while</span>( It != m_DescToObjHashMap.end() )</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">auto</span> NextIt = It;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  ++NextIt;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// Note that IsValid() is not a thread-safe function in the sense that it </span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// can give false positive results. The only thread-safe way to check if the</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// object is alive is to lock the weak pointer, but that requires thread </span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// synchronization. We will immediately unlock the pointer anyway, so we</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// want to detect 100% expired pointers. IsValid() does provide that information</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// because once a weak pointer becomes invalid, it will be invalid</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// until it is destroyed. It is not a problem if we miss an expired weak</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// pointer as it will definitiely be removed next time.</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>( !It->second.IsValid() )</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_DescToObjHashMap.erase( It );</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  ++NumPurgedObjects;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  It = NextIt;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  LOG_INFO_MESSAGE( <span class="stringliteral">"Purged "</span>, NumPurgedObjects, <span class="stringliteral">" deleted objects from the "</span>, m_RegistryName, <span class="stringliteral">" registry"</span> );</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html#a65e4d7c1d3e3f1e6519979b7eac0498c"> 188</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_state_objects_registry.html#a65e4d7c1d3e3f1e6519979b7eac0498c">ReportDeletedObject</a>()</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  Atomics::AtomicIncrement(m_NumDeletedObjects);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  ThreadingTools::LockFlag m_LockFlag;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  Atomics::AtomicLong m_NumDeletedObjects;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">typedef</span> std::pair< const ResourceDescType, RefCntWeakPtr<IDeviceObject> > HashMapElem;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  std::unordered_map<ResourceDescType, RefCntWeakPtr<IDeviceObject>, std::hash<ResourceDescType>, std::equal_to<ResourceDescType>, STDAllocatorRawMem<HashMapElem> > m_DescToObjHashMap;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keyword">const</span> String m_RegistryName;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  };</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <unordered_map></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ResourceDescType></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html"> 58</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_state_objects_registry.html">StateObjectsRegistry</a></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html#ae826dc2c8950c7f40d3fe37dfc1d36b7"> 62</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> <a class="code" href="class_diligent_1_1_state_objects_registry.html#ae826dc2c8950c7f40d3fe37dfc1d36b7">DeletedObjectsToPurge</a> = 32;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_diligent_1_1_state_objects_registry.html">StateObjectsRegistry</a>(IMemoryAllocator &RawAllocator, <span class="keyword">const</span> Char* RegistryName) :</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_RegistryName( RegistryName ),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_DescToObjHashMap(STD_ALLOCATOR_RAW_MEM(HashMapElem, RawAllocator, <span class="stringliteral">"Allocator for unordered_map<ResourceDescType, RefCntWeakPtr<IDeviceObject> >"</span>) )</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  ~<a class="code" href="class_diligent_1_1_state_objects_registry.html">StateObjectsRegistry</a>()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Object registry is part of the device, and every device</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// object holds a strong reference to the device. So device</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// is destroyed after all device objects are destroyed, and there</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// may only be expired references in the registry. After we</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// purge it, the registry must be empty.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="class_diligent_1_1_state_objects_registry.html#ac4e68d1e015e2ad5941700b4d595a71a">Purge</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  VERIFY( m_DescToObjHashMap.empty(), <span class="stringliteral">"DescToObjHashMap is not empty"</span> );</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html#a24b0050a49d3cb95c7da0540648f4d28"> 91</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_state_objects_registry.html#a24b0050a49d3cb95c7da0540648f4d28">Add</a>( <span class="keyword">const</span> ResourceDescType& ObjectDesc, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> *pObject )</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  ThreadingTools::LockHelper Lock( m_LockFlag );</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// If the number of outstanding deleted objects reached the threshold value,</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// purge the registry. Since we have exclusive access now, it is safe</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// to do.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>( m_NumDeletedObjects >= <a class="code" href="class_diligent_1_1_state_objects_registry.html#ae826dc2c8950c7f40d3fe37dfc1d36b7">DeletedObjectsToPurge</a> )</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="class_diligent_1_1_state_objects_registry.html#ac4e68d1e015e2ad5941700b4d595a71a">Purge</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_NumDeletedObjects = 0;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// Try to construct the new element in place</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">auto</span> Elems = m_DescToObjHashMap.emplace( std::make_pair( ObjectDesc, <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">Diligent::RefCntWeakPtr<IDeviceObject></a>(pObject) ) );</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// It is theorertically possible that the same object can be found</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// in the registry. This might happen if two threads try to create</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// the same object at the same time. They both will not find the</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// object and then will create and try to add it.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">//</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// If the object already exists, we replace the existing reference.</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// This is safer as there might be scenarios where existing reference</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// might be expired. For instance, two threads try to create the same</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// object which is not in the registry. The first thread creates</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// the object, adds it to the registry and then releases it. After that</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// the second thread creates the same object and tries to add it to</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">// the registry. It will find an existing expired reference to the </span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// object.</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>( !Elems.second )</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  VERIFY( Elems.first->first == ObjectDesc, <span class="stringliteral">"Incorrect object description"</span> );</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  LOG_WARNING_MESSAGE( <span class="stringliteral">"Object named \""</span>, Elems.first->first.Name, <span class="stringliteral">"\" with the same description already exists in the registry."</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="stringliteral">"Replacing with the new object named \""</span>, ObjectDesc.Name ? ObjectDesc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\"."</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  Elems.first->second = pObject;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html#a6643d764bfcb0bc4314a4d4f227dc4a2"> 129</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_state_objects_registry.html#a6643d764bfcb0bc4314a4d4f227dc4a2">Find</a>( <span class="keyword">const</span> ResourceDescType &Desc, <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a> **ppObject )</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  VERIFY( *ppObject == <span class="keyword">nullptr</span>, <span class="stringliteral">"Overwriting reference to existing object may cause memory leaks"</span> );</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  *ppObject = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  ThreadingTools::LockHelper Lock( m_LockFlag );</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">auto</span> It = m_DescToObjHashMap.find( Desc );</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span>( It != m_DescToObjHashMap.end() )</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// Try to obtain strong reference to the object.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// This is an atomic operation and we either get</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// a new strong reference or object has been destroyed</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// and we get null.</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">auto</span> pObject = It->second.Lock();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>( pObject )</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  *ppObject = pObject.Detach();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  LOG_INFO_MESSAGE( <span class="stringliteral">"Equivalent of the requested state object named \""</span>, Desc.Name ? Desc.Name : <span class="stringliteral">""</span>, <span class="stringliteral">"\" found in the "</span>, m_RegistryName, <span class="stringliteral">" registry. Reusing existing object."</span>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Expired object found: remove it from the map</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_DescToObjHashMap.erase(It);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  Atomics::AtomicDecrement(m_NumDeletedObjects);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html#ac4e68d1e015e2ad5941700b4d595a71a"> 158</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_state_objects_registry.html#ac4e68d1e015e2ad5941700b4d595a71a">Purge</a>()</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  Uint32 NumPurgedObjects = 0;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">auto</span> It = m_DescToObjHashMap.begin();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">while</span>( It != m_DescToObjHashMap.end() )</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">auto</span> NextIt = It;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  ++NextIt;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// Note that IsValid() is not a thread-safe function in the sense that it </span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// can give false positive results. The only thread-safe way to check if the</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// object is alive is to lock the weak pointer, but that requires thread </span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// synchronization. We will immediately unlock the pointer anyway, so we</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// want to detect 100% expired pointers. IsValid() does provide that information</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// because once a weak pointer becomes invalid, it will be invalid</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// until it is destroyed. It is not a problem if we miss an expired weak</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// pointer as it will definitiely be removed next time.</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>( !It->second.IsValid() )</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_DescToObjHashMap.erase( It );</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  ++NumPurgedObjects;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  It = NextIt;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  LOG_INFO_MESSAGE( <span class="stringliteral">"Purged "</span>, NumPurgedObjects, <span class="stringliteral">" deleted objects from the "</span>, m_RegistryName, <span class="stringliteral">" registry"</span> );</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="class_diligent_1_1_state_objects_registry.html#a65e4d7c1d3e3f1e6519979b7eac0498c"> 188</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_state_objects_registry.html#a65e4d7c1d3e3f1e6519979b7eac0498c">ReportDeletedObject</a>()</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  Atomics::AtomicIncrement(m_NumDeletedObjects);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  ThreadingTools::LockFlag m_LockFlag;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  Atomics::AtomicLong m_NumDeletedObjects;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">typedef</span> std::pair< const ResourceDescType, RefCntWeakPtr<IDeviceObject> > HashMapElem;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  std::unordered_map<ResourceDescType, RefCntWeakPtr<IDeviceObject>, std::hash<ResourceDescType>, std::equal_to<ResourceDescType>, STDAllocatorRawMem<HashMapElem> > m_DescToObjHashMap;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keyword">const</span> String m_RegistryName;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  };</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div><div class="ttc" id="class_diligent_1_1_i_device_object_html"><div class="ttname"><a href="class_diligent_1_1_i_device_object.html">Diligent::IDeviceObject</a></div><div class="ttdoc">Base interface for all objects created by the render device Diligent::IRenderDevice. </div><div class="ttdef"><b>Definition:</b> DeviceObject.h:40</div></div> <div class="ttc" id="class_diligent_1_1_state_objects_registry_html_ae826dc2c8950c7f40d3fe37dfc1d36b7"><div class="ttname"><a href="class_diligent_1_1_state_objects_registry.html#ae826dc2c8950c7f40d3fe37dfc1d36b7">Diligent::StateObjectsRegistry::DeletedObjectsToPurge</a></div><div class="ttdeci">static constexpr int DeletedObjectsToPurge</div><div class="ttdoc">Number of outstanding deleted objects to purge the registry. </div><div class="ttdef"><b>Definition:</b> StateObjectsRegistry.h:62</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_state_objects_registry_html"><div class="ttname"><a href="class_diligent_1_1_state_objects_registry.html">Diligent::StateObjectsRegistry</a></div><div class="ttdoc">Template class implementing state object registry. </div><div class="ttdef"><b>Definition:</b> StateObjectsRegistry.h:58</div></div> @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_string_data_blob_impl_8h_source.html b/doc/html/_string_data_blob_impl_8h_source.html index b850799d..bc718841 100644 --- a/doc/html/_string_data_blob_impl_8h_source.html +++ b/doc/html/_string_data_blob_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">StringDataBlobImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_string_data_blob_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_string_data_blob_impl.html">StringDataBlobImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a><IDataBlob></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">Diligent::ObjectBase<IDataBlob></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_string_data_blob_impl.html">StringDataBlobImpl</a>( IReferenceCounters* pRefCounters, <span class="keyword">const</span> String &str ) : <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>(pRefCounters), m_String(str) {}</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_string_data_blob_impl.html">StringDataBlobImpl</a>( IReferenceCounters* pRefCounters, String &&str ) : <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>(pRefCounters), m_String( std::move(str) ) {}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_DataBlob, <a class="code" href="class_diligent_1_1_object_base.html">TBase</a> )</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_diligent_1_1_string_data_blob_impl.html#af81eb85a085ab5923e7d1eb96486ba13"> 49</a></span>  virtual <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_string_data_blob_impl.html#af81eb85a085ab5923e7d1eb96486ba13">Resize</a>(<span class="keywordtype">size_t</span> NewSize)<span class="keyword">override</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_String.resize(NewSize);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_string_data_blob_impl.html#a5c0075a45d1e17559b6194bf4bd756b9"> 55</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_string_data_blob_impl.html#a5c0075a45d1e17559b6194bf4bd756b9">GetSize</a>()<span class="keyword">override</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> m_String.length();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="class_diligent_1_1_string_data_blob_impl.html#a3b2379701e8317c99b814dad85d69077"> 61</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_string_data_blob_impl.html#a3b2379701e8317c99b814dad85d69077">GetDataPtr</a>()<span class="keyword">override</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> &m_String[0];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  String m_String;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DataBlob.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "BasicTypes.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_diligent_1_1_string_data_blob_impl.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_string_data_blob_impl.html">StringDataBlobImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a><IDataBlob></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">Diligent::ObjectBase<IDataBlob></a> <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_string_data_blob_impl.html">StringDataBlobImpl</a>( IReferenceCounters* pRefCounters, <span class="keyword">const</span> String &str ) : <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>(pRefCounters), m_String(str) {}</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_string_data_blob_impl.html">StringDataBlobImpl</a>( IReferenceCounters* pRefCounters, String &&str ) : <a class="code" href="class_diligent_1_1_object_base.html">TBase</a>(pRefCounters), m_String( std::move(str) ) {}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_DataBlob, <a class="code" href="class_diligent_1_1_object_base.html">TBase</a> )</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_diligent_1_1_string_data_blob_impl.html#af81eb85a085ab5923e7d1eb96486ba13"> 49</a></span>  virtual <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_string_data_blob_impl.html#af81eb85a085ab5923e7d1eb96486ba13">Resize</a>(<span class="keywordtype">size_t</span> NewSize)<span class="keyword">override</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_String.resize(NewSize);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_string_data_blob_impl.html#a5c0075a45d1e17559b6194bf4bd756b9"> 55</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_diligent_1_1_string_data_blob_impl.html#a5c0075a45d1e17559b6194bf4bd756b9">GetSize</a>()<span class="keyword">override</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> m_String.length();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="class_diligent_1_1_string_data_blob_impl.html#a3b2379701e8317c99b814dad85d69077"> 61</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_string_data_blob_impl.html#a3b2379701e8317c99b814dad85d69077">GetDataPtr</a>()<span class="keyword">override</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> &m_String[0];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  String m_String;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> <div class="ttc" id="class_diligent_1_1_string_data_blob_impl_html_a5c0075a45d1e17559b6194bf4bd756b9"><div class="ttname"><a href="class_diligent_1_1_string_data_blob_impl.html#a5c0075a45d1e17559b6194bf4bd756b9">Diligent::StringDataBlobImpl::GetSize</a></div><div class="ttdeci">virtual size_t GetSize() override</div><div class="ttdoc">Returns the size of the internal data buffer. </div><div class="ttdef"><b>Definition:</b> StringDataBlobImpl.h:55</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_string_data_blob_impl_html"><div class="ttname"><a href="class_diligent_1_1_string_data_blob_impl.html">Diligent::StringDataBlobImpl</a></div><div class="ttdoc">Base interface for a file stream. </div><div class="ttdef"><b>Definition:</b> StringDataBlobImpl.h:38</div></div> @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_string_tools_8h_source.html b/doc/html/_string_tools_8h_source.html index e735fb29..3454f453 100644 --- a/doc/html/_string_tools_8h_source.html +++ b/doc/html/_string_tools_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">StringTools.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <locale></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <cctype></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">inline</span> std::string NarrowString(<span class="keyword">const</span> std::wstring &WideStr)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::string NarrowStr;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> std::ctype<wchar_t>& ctfacet = std::use_facet< std::ctype<wchar_t> >( std::wstringstream().getloc() ) ;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">for</span>( std::wstring::const_iterator CurrWChar = WideStr.begin();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  CurrWChar != WideStr.end();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  CurrWChar++ )</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  NarrowStr.push_back( ctfacet.narrow( *CurrWChar, 0 ) );</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> NarrowStr;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">inline</span> std::wstring WidenString(<span class="keyword">const</span> <span class="keywordtype">char</span> *Str)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::wstring WideStr;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> std::ctype<wchar_t>& ctfacet = std::use_facet< std::ctype<wchar_t> >( std::wstringstream().getloc() ) ;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">for</span>( <span class="keyword">auto</span> CurrChar = Str; *CurrChar != 0; ++CurrChar )</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  WideStr.push_back( ctfacet.widen( *CurrChar ) );</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> WideStr;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">inline</span> std::wstring WidenString(<span class="keyword">const</span> std::string &Str)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  std::wstring WideStr;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">const</span> std::ctype<wchar_t>& ctfacet = std::use_facet< std::ctype<wchar_t> >( std::wstringstream().getloc() ) ;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">for</span>( std::string::const_iterator CurrChar = Str.begin();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  CurrChar != Str.end();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  CurrChar++ )</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  WideStr.push_back( ctfacet.widen( *CurrChar ) );</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> WideStr;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> StrCmpNoCase(<span class="keyword">const</span> <span class="keywordtype">char</span>* Str1, <span class="keyword">const</span> <span class="keywordtype">char</span>* Str2, <span class="keywordtype">size_t</span> NumChars)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#if defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"># define _strnicmp strncasecmp</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> _strnicmp( Str1, Str2, NumChars );</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> StrCmpNoCase(<span class="keyword">const</span> <span class="keywordtype">char</span>* Str1, <span class="keyword">const</span> <span class="keywordtype">char</span>* Str2)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#if defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"># define _stricmp strcasecmp</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> _stricmp( Str1, Str2 );</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// Returns true if RefStr == Str + Suff</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> StrCmpSuff(<span class="keyword">const</span> <span class="keywordtype">char</span> *RefStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *Str, <span class="keyword">const</span> <span class="keywordtype">char</span> *Suff)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  VERIFY_EXPR(RefStr != <span class="keyword">nullptr</span> && Str!= <span class="keyword">nullptr</span> && Suff != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span>(RefStr==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">const</span> <span class="keyword">auto</span> *r = RefStr;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">const</span> <span class="keyword">auto</span> *s = Str;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span>(; *r!=0 && *s!=0; ++r, ++s)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (*r != *s)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>( *s != 0 )</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  VERIFY_EXPR(*r == 0);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> strcmp(r, Suff) == 0;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> StrToLowerInPlace(std::string &str)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::transform(str.begin(), str.end(), str.begin(),</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// http://en.cppreference.com/w/cpp/string/byte/tolower</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  [](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c) { <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(std::tolower(c)); }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  );</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">inline</span> std::string StrToLower(std::string str)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  StrToLowerInPlace(str);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <locale></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <cctype></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">inline</span> std::string NarrowString(<span class="keyword">const</span> std::wstring &WideStr)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::string NarrowStr;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> std::ctype<wchar_t>& ctfacet = std::use_facet< std::ctype<wchar_t> >( std::wstringstream().getloc() ) ;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">for</span>( std::wstring::const_iterator CurrWChar = WideStr.begin();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  CurrWChar != WideStr.end();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  CurrWChar++ )</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  NarrowStr.push_back( ctfacet.narrow( *CurrWChar, 0 ) );</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> NarrowStr;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">inline</span> std::wstring WidenString(<span class="keyword">const</span> <span class="keywordtype">char</span> *Str)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::wstring WideStr;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> std::ctype<wchar_t>& ctfacet = std::use_facet< std::ctype<wchar_t> >( std::wstringstream().getloc() ) ;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">for</span>( <span class="keyword">auto</span> CurrChar = Str; *CurrChar != 0; ++CurrChar )</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  WideStr.push_back( ctfacet.widen( *CurrChar ) );</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> WideStr;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">inline</span> std::wstring WidenString(<span class="keyword">const</span> std::string &Str)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  std::wstring WideStr;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">const</span> std::ctype<wchar_t>& ctfacet = std::use_facet< std::ctype<wchar_t> >( std::wstringstream().getloc() ) ;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">for</span>( std::string::const_iterator CurrChar = Str.begin();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  CurrChar != Str.end();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  CurrChar++ )</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  WideStr.push_back( ctfacet.widen( *CurrChar ) );</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> WideStr;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> StrCmpNoCase(<span class="keyword">const</span> <span class="keywordtype">char</span>* Str1, <span class="keyword">const</span> <span class="keywordtype">char</span>* Str2, <span class="keywordtype">size_t</span> NumChars)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#if defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"># define _strnicmp strncasecmp</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> _strnicmp( Str1, Str2, NumChars );</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> StrCmpNoCase(<span class="keyword">const</span> <span class="keywordtype">char</span>* Str1, <span class="keyword">const</span> <span class="keywordtype">char</span>* Str2)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#if defined(PLATFORM_ANDROID) || defined(PLATFORM_LINUX)</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"># define _stricmp strcasecmp</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> _stricmp( Str1, Str2 );</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// Returns true if RefStr == Str + Suff</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> StrCmpSuff(<span class="keyword">const</span> <span class="keywordtype">char</span> *RefStr, <span class="keyword">const</span> <span class="keywordtype">char</span> *Str, <span class="keyword">const</span> <span class="keywordtype">char</span> *Suff)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  VERIFY_EXPR(RefStr != <span class="keyword">nullptr</span> && Str!= <span class="keyword">nullptr</span> && Suff != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span>(RefStr==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">const</span> <span class="keyword">auto</span> *r = RefStr;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">const</span> <span class="keyword">auto</span> *s = Str;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span>(; *r!=0 && *s!=0; ++r, ++s)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (*r != *s)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>( *s != 0 )</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  VERIFY_EXPR(*r == 0);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> strcmp(r, Suff) == 0;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> StrToLowerInPlace(std::string &str)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::transform(str.begin(), str.end(), str.begin(),</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// http://en.cppreference.com/w/cpp/string/byte/tolower</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  [](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c) { <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(std::tolower(c)); }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  );</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">inline</span> std::string StrToLower(std::string str)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  StrToLowerInPlace(str);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_swap_chain_8h_source.html b/doc/html/_swap_chain_8h_source.html index c8fff9cf..dbba0e37 100644 --- a/doc/html/_swap_chain_8h_source.html +++ b/doc/html/_swap_chain_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SwapChain.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {1C703B77-6607-4EEC-B1FE-15C82D3B4130}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SwapChain =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x1c703b77, 0x6607, 0x4eec, { 0xb1, 0xfe, 0x15, 0xc8, 0x2d, 0x3b, 0x41, 0x30 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_swap_chain.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_swap_chain.html#a58db3eb1439ca733cba6fb1bdd8447c0">Present</a>() = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& <a class="code" href="class_diligent_1_1_i_swap_chain.html#ab52c1742b2132aec905ab49a321e0b23">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_swap_chain.html#a83b525f779bd68d9e49e8065b876ec32">Resize</a>( Uint32 NewWidth, Uint32 NewHeight ) = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Object.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {1C703B77-6607-4EEC-B1FE-15C82D3B4130}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SwapChain =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x1c703b77, 0x6607, 0x4eec, { 0xb1, 0xfe, 0x15, 0xc8, 0x2d, 0x3b, 0x41, 0x30 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_swap_chain.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a> : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_swap_chain.html#a58db3eb1439ca733cba6fb1bdd8447c0">Present</a>() = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& <a class="code" href="class_diligent_1_1_i_swap_chain.html#ab52c1742b2132aec905ab49a321e0b23">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_swap_chain.html#a83b525f779bd68d9e49e8065b876ec32">Resize</a>( Uint32 NewWidth, Uint32 NewHeight ) = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> <div class="ttc" id="class_diligent_1_1_i_swap_chain_html_ab52c1742b2132aec905ab49a321e0b23"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain.html#ab52c1742b2132aec905ab49a321e0b23">Diligent::ISwapChain::GetDesc</a></div><div class="ttdeci">virtual const SwapChainDesc & GetDesc() const =0</div><div class="ttdoc">Returns the swap chain desctription. </div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_swap_chain_html_a83b525f779bd68d9e49e8065b876ec32"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain.html#a83b525f779bd68d9e49e8065b876ec32">Diligent::ISwapChain::Resize</a></div><div class="ttdeci">virtual void Resize(Uint32 NewWidth, Uint32 NewHeight)=0</div><div class="ttdoc">Changes the swap chain&#39;s back buffer size. </div></div> @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_swap_chain_base_8h_source.html b/doc/html/_swap_chain_base_8h_source.html index 68235bc8..ac04a792 100644 --- a/doc/html/_swap_chain_base_8h_source.html +++ b/doc/html/_swap_chain_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SwapChainBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html"> 43</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><BaseInterface></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<BaseInterface></a> <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html#a2f792731da56cfe08f9c6d38bcab085a"> 52</a></span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a2f792731da56cfe08f9c6d38bcab085a">SwapChainBase</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pDeviceContext,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& SCDesc ) : </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>(pRefCounters),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#abc09a0e8693486adfde7b00359e70eb8">m_pRenderDevice</a>(pDevice),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#adfa0afc3bec1c866c37015d8d4986540">m_wpDeviceContext</a>(pDeviceContext),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>(SCDesc)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ~<a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>()</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_SwapChain, TObjectBase )</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html#a5e2c49ff4e687fa21fbb69c1b03d1e24"> 70</a></span>  virtual const <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& <a class="code" href="class_diligent_1_1_swap_chain_base.html#a5e2c49ff4e687fa21fbb69c1b03d1e24">GetDesc</a>()const override final</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">bool</span> Resize( Uint32 NewWidth, Uint32 NewHeight, Int32 Dummy = 0<span class="comment">/*To be different from virtual function*/</span> )</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>( NewWidth != 0 && NewHeight != 0 &&</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  (<a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a> != NewWidth || <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a> != NewHeight) )</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a> = NewWidth;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a> = NewHeight;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  LOG_INFO_MESSAGE(<span class="stringliteral">"Changing display resolution to "</span>, <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a>, <span class="stringliteral">"x"</span>, <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html#abc09a0e8693486adfde7b00359e70eb8"> 91</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IRenderDevice></a> <a class="code" href="class_diligent_1_1_swap_chain_base.html#abc09a0e8693486adfde7b00359e70eb8">m_pRenderDevice</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html#adfa0afc3bec1c866c37015d8d4986540"> 95</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">Diligent::RefCntWeakPtr<IDeviceContext></a> <a class="code" href="class_diligent_1_1_swap_chain_base.html#adfa0afc3bec1c866c37015d8d4986540">m_wpDeviceContext</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7"> 98</a></span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a> <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a2f792731da56cfe08f9c6d38bcab085a">SwapChainBase</a>( <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>& );</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a2f792731da56cfe08f9c6d38bcab085a">SwapChainBase</a>( <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>&& );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>& operator = ( <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>& );</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>& operator = ( <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>&& );</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Errors.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html"> 43</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase</a><BaseInterface></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_object_base.html">ObjectBase<BaseInterface></a> <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html#a2f792731da56cfe08f9c6d38bcab085a"> 52</a></span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a2f792731da56cfe08f9c6d38bcab085a">SwapChainBase</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pDeviceContext,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& SCDesc ) : </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_object_base.html">TObjectBase</a>(pRefCounters),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#abc09a0e8693486adfde7b00359e70eb8">m_pRenderDevice</a>(pDevice),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#adfa0afc3bec1c866c37015d8d4986540">m_wpDeviceContext</a>(pDeviceContext),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>(SCDesc)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ~<a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>()</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_SwapChain, TObjectBase )</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html#a5e2c49ff4e687fa21fbb69c1b03d1e24"> 70</a></span>  virtual const <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& <a class="code" href="class_diligent_1_1_swap_chain_base.html#a5e2c49ff4e687fa21fbb69c1b03d1e24">GetDesc</a>()const override final</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">bool</span> Resize( Uint32 NewWidth, Uint32 NewHeight, Int32 Dummy = 0<span class="comment">/*To be different from virtual function*/</span> )</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>( NewWidth != 0 && NewHeight != 0 &&</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  (<a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a> != NewWidth || <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a> != NewHeight) )</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a> = NewWidth;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a> = NewHeight;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  LOG_INFO_MESSAGE(<span class="stringliteral">"Changing display resolution to "</span>, <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#a93578e91e15e6546d33e292a9a43397a">Width</a>, <span class="stringliteral">"x"</span>, <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>.<a class="code" href="struct_diligent_1_1_swap_chain_desc.html#abdfe5c1308ae6a670d4a27ee289fd945">Height</a>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html#abc09a0e8693486adfde7b00359e70eb8"> 91</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IRenderDevice></a> <a class="code" href="class_diligent_1_1_swap_chain_base.html#abc09a0e8693486adfde7b00359e70eb8">m_pRenderDevice</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html#adfa0afc3bec1c866c37015d8d4986540"> 95</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_weak_ptr.html">Diligent::RefCntWeakPtr<IDeviceContext></a> <a class="code" href="class_diligent_1_1_swap_chain_base.html#adfa0afc3bec1c866c37015d8d4986540">m_wpDeviceContext</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7"> 98</a></span>  <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a> <a class="code" href="class_diligent_1_1_swap_chain_base.html#a90d1239e1d91f6e4eed19d5f7cf6d0b7">m_SwapChainDesc</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a2f792731da56cfe08f9c6d38bcab085a">SwapChainBase</a>( <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>& );</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="class_diligent_1_1_swap_chain_base.html#a2f792731da56cfe08f9c6d38bcab085a">SwapChainBase</a>( <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>&& );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>& operator = ( <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>& );</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">const</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>& operator = ( <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a>&& );</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_swap_chain_base_html_a2f792731da56cfe08f9c6d38bcab085a"><div class="ttname"><a href="class_diligent_1_1_swap_chain_base.html#a2f792731da56cfe08f9c6d38bcab085a">Diligent::SwapChainBase::SwapChainBase</a></div><div class="ttdeci">SwapChainBase(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, IDeviceContext *pDeviceContext, const SwapChainDesc &SCDesc)</div><div class="ttdef"><b>Definition:</b> SwapChainBase.h:52</div></div> <div class="ttc" id="class_diligent_1_1_object_base_html"><div class="ttname"><a href="class_diligent_1_1_object_base.html">Diligent::ObjectBase</a></div><div class="ttdoc">Template class implementing base functionality for an object. </div><div class="ttdef"><b>Definition:</b> ObjectBase.h:62</div></div> @@ -89,7 +89,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_swap_chain_d3_d11_8h_source.html b/doc/html/_swap_chain_d3_d11_8h_source.html index c1f67fc9..43fd5c6e 100644 --- a/doc/html/_swap_chain_d3_d11_8h_source.html +++ b/doc/html/_swap_chain_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SwapChainD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {4DAF2E76-9204-4DC4-A53A-B00097412D3A}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SwapChainD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x4daf2e76, 0x9204, 0x4dc4, { 0xa5, 0x3a, 0xb0, 0x0, 0x97, 0x41, 0x2d, 0x3a } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_swap_chain_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_swap_chain_d3_d11.html">ISwapChainD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> IDXGISwapChain *<a class="code" href="class_diligent_1_1_i_swap_chain_d3_d11.html#af0e55b9dde1da1ab209439766b6de22b">GetDXGISwapChain</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> ID3D11RenderTargetView *<a class="code" href="class_diligent_1_1_i_swap_chain_d3_d11.html#ab57aacde93605c468cf8a14287bdf0f7">GetRTV</a>() = 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> ID3D11DepthStencilView *<a class="code" href="class_diligent_1_1_i_swap_chain_d3_d11.html#aa15564484ae0f7c5191546687b87c3c2">GetDSV</a>() = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {4DAF2E76-9204-4DC4-A53A-B00097412D3A}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SwapChainD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x4daf2e76, 0x9204, 0x4dc4, { 0xa5, 0x3a, 0xb0, 0x0, 0x97, 0x41, 0x2d, 0x3a } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_swap_chain_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_swap_chain_d3_d11.html">ISwapChainD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> IDXGISwapChain *<a class="code" href="class_diligent_1_1_i_swap_chain_d3_d11.html#af0e55b9dde1da1ab209439766b6de22b">GetDXGISwapChain</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> ID3D11RenderTargetView *<a class="code" href="class_diligent_1_1_i_swap_chain_d3_d11.html#ab57aacde93605c468cf8a14287bdf0f7">GetRTV</a>() = 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> ID3D11DepthStencilView *<a class="code" href="class_diligent_1_1_i_swap_chain_d3_d11.html#aa15564484ae0f7c5191546687b87c3c2">GetDSV</a>() = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_swap_chain_html"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain.html">Diligent::ISwapChain</a></div><div class="ttdoc">Swap chain interface. </div><div class="ttdef"><b>Definition:</b> SwapChain.h:41</div></div> <div class="ttc" id="class_diligent_1_1_i_swap_chain_d3_d11_html_ab57aacde93605c468cf8a14287bdf0f7"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain_d3_d11.html#ab57aacde93605c468cf8a14287bdf0f7">Diligent::ISwapChainD3D11::GetRTV</a></div><div class="ttdeci">virtual ID3D11RenderTargetView * GetRTV()=0</div><div class="ttdoc">Returns d3d11 render target view of the swap chain&#39;s back buffer. </div></div> <div class="ttc" id="class_diligent_1_1_i_swap_chain_d3_d11_html_af0e55b9dde1da1ab209439766b6de22b"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain_d3_d11.html#af0e55b9dde1da1ab209439766b6de22b">Diligent::ISwapChainD3D11::GetDXGISwapChain</a></div><div class="ttdeci">virtual IDXGISwapChain * GetDXGISwapChain()=0</div><div class="ttdoc">Returns a pointer to the IDXGISwapChain interface of the internal DXGI object. </div></div> @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_swap_chain_d3_d11_impl_8h_source.html b/doc/html/_swap_chain_d3_d11_impl_8h_source.html index 02ed5c52..b2b8d27f 100644 --- a/doc/html/_swap_chain_d3_d11_impl_8h_source.html +++ b/doc/html/_swap_chain_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SwapChainD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SwapChainD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "SwapChainBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>IMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d11_impl.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html">SwapChainD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a><ISwapChainD3D11></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase<ISwapChainD3D11></a> <a class="code" href="class_diligent_1_1_swap_chain_base.html">TSwapChainBase</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html">SwapChainD3D11Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a>* pRenderDeviceD3D11,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html">DeviceContextD3D11Impl</a>* pDeviceContextD3D11,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span>* pNativeWndHandle);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ~<a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html">SwapChainD3D11Impl</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a184a546f820b13993ceeb38462207f26">Present</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#ae48a4fb93b6f71f610a0100e3777f857">Resize</a>( Uint32 NewWidth, Uint32 NewHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#ac0f6f26b649c88af28430c5197629176"> 53</a></span>  <span class="keyword">virtual</span> IDXGISwapChain *<a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#ac0f6f26b649c88af28430c5197629176">GetDXGISwapChain</a>()override final{ <span class="keywordflow">return</span> m_pSwapChain; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a5028b6516e417053ba1b2e794a9cda2b"> 55</a></span>  <span class="keyword">virtual</span> ID3D11RenderTargetView* <a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a5028b6516e417053ba1b2e794a9cda2b">GetRTV</a>()override final{ <span class="keywordflow">return</span> m_pRenderTargetView; }</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a5f206a17d241c1cbc3fc925a03d0dfc7"> 56</a></span>  <span class="keyword">virtual</span> ID3D11DepthStencilView* <a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a5f206a17d241c1cbc3fc925a03d0dfc7">GetDSV</a>()override final{ <span class="keywordflow">return</span> m_pDepthStencilView; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span> CreateRTVandDSV();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  CComPtr<IDXGISwapChain> m_pSwapChain;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  CComPtr<ID3D11RenderTargetView> m_pRenderTargetView;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  CComPtr<ID3D11DepthStencilView> m_pDepthStencilView;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SwapChainD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "SwapChainBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>IMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d11_impl.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html">SwapChainD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a><ISwapChainD3D11></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase<ISwapChainD3D11></a> <a class="code" href="class_diligent_1_1_swap_chain_base.html">TSwapChainBase</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html">SwapChainD3D11Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a>* pRenderDeviceD3D11,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_device_context_d3_d11_impl.html">DeviceContextD3D11Impl</a>* pDeviceContextD3D11,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span>* pNativeWndHandle);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ~<a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html">SwapChainD3D11Impl</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a184a546f820b13993ceeb38462207f26">Present</a>()<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#ae48a4fb93b6f71f610a0100e3777f857">Resize</a>( Uint32 NewWidth, Uint32 NewHeight )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#ac0f6f26b649c88af28430c5197629176"> 53</a></span>  <span class="keyword">virtual</span> IDXGISwapChain *<a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#ac0f6f26b649c88af28430c5197629176">GetDXGISwapChain</a>()override final{ <span class="keywordflow">return</span> m_pSwapChain; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a5028b6516e417053ba1b2e794a9cda2b"> 55</a></span>  <span class="keyword">virtual</span> ID3D11RenderTargetView* <a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a5028b6516e417053ba1b2e794a9cda2b">GetRTV</a>()override final{ <span class="keywordflow">return</span> m_pRenderTargetView; }</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a5f206a17d241c1cbc3fc925a03d0dfc7"> 56</a></span>  <span class="keyword">virtual</span> ID3D11DepthStencilView* <a class="code" href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a5f206a17d241c1cbc3fc925a03d0dfc7">GetDSV</a>()override final{ <span class="keywordflow">return</span> m_pDepthStencilView; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span> CreateRTVandDSV();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  CComPtr<IDXGISwapChain> m_pSwapChain;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  CComPtr<ID3D11RenderTargetView> m_pRenderTargetView;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  CComPtr<ID3D11DepthStencilView> m_pDepthStencilView;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_swap_chain_d3_d11_impl_html"><div class="ttname"><a href="class_diligent_1_1_swap_chain_d3_d11_impl.html">Diligent::SwapChainD3D11Impl</a></div><div class="ttdoc">Implementation of the Diligent::ISwapChainD3D11 interface. </div><div class="ttdef"><b>Definition:</b> SwapChainD3D11Impl.h:37</div></div> <div class="ttc" id="class_diligent_1_1_swap_chain_d3_d11_impl_html_a5f206a17d241c1cbc3fc925a03d0dfc7"><div class="ttname"><a href="class_diligent_1_1_swap_chain_d3_d11_impl.html#a5f206a17d241c1cbc3fc925a03d0dfc7">Diligent::SwapChainD3D11Impl::GetDSV</a></div><div class="ttdeci">virtual ID3D11DepthStencilView * GetDSV() override final</div><div class="ttdoc">Returns d3d11 depth stencil view of the internal depth buffer object. </div><div class="ttdef"><b>Definition:</b> SwapChainD3D11Impl.h:56</div></div> @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_swap_chain_d3_d12_8h_source.html b/doc/html/_swap_chain_d3_d12_8h_source.html index 1bba0b1e..e0eef64d 100644 --- a/doc/html/_swap_chain_d3_d12_8h_source.html +++ b/doc/html/_swap_chain_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SwapChainD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <dxgi1_4.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureViewD3D12.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// {C9F8384D-A45E-4970-8447-394177E5B0EE}</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SwapChainD3D12 =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> { 0xc9f8384d, 0xa45e, 0x4970, { 0x84, 0x47, 0x39, 0x41, 0x77, 0xe5, 0xb0, 0xee } };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_swap_chain_d3_d12.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_swap_chain_d3_d12.html">ISwapChainD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> IDXGISwapChain *<a class="code" href="class_diligent_1_1_i_swap_chain_d3_d12.html#a75ac9652e62e8739d72ae2bd08bd2370">GetDXGISwapChain</a>() = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a>* <a class="code" href="class_diligent_1_1_i_swap_chain_d3_d12.html#aad6957dcade829f2388854844e9f7926">GetCurrentBackBufferRTV</a>() = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a>* <a class="code" href="class_diligent_1_1_i_swap_chain_d3_d12.html#a4be4c4e747d60105dfb092a3321609aa">GetDepthBufferDSV</a>() = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="ttc" id="class_diligent_1_1_i_swap_chain_d3_d12_html_aad6957dcade829f2388854844e9f7926"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain_d3_d12.html#aad6957dcade829f2388854844e9f7926">Diligent::ISwapChainD3D12::GetCurrentBackBufferRTV</a></div><div class="ttdeci">virtual ITextureViewD3D12 * GetCurrentBackBufferRTV()=0</div><div class="ttdoc">Returns a pointer to the render target view of the current back buffer in the swap chain...</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <dxgi1_4.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureViewD3D12.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// {C9F8384D-A45E-4970-8447-394177E5B0EE}</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SwapChainD3D12 =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> { 0xc9f8384d, 0xa45e, 0x4970, { 0x84, 0x47, 0x39, 0x41, 0x77, 0xe5, 0xb0, 0xee } };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_swap_chain_d3_d12.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_swap_chain_d3_d12.html">ISwapChainD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> IDXGISwapChain *<a class="code" href="class_diligent_1_1_i_swap_chain_d3_d12.html#a75ac9652e62e8739d72ae2bd08bd2370">GetDXGISwapChain</a>() = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a>* <a class="code" href="class_diligent_1_1_i_swap_chain_d3_d12.html#aad6957dcade829f2388854844e9f7926">GetCurrentBackBufferRTV</a>() = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a>* <a class="code" href="class_diligent_1_1_i_swap_chain_d3_d12.html#a4be4c4e747d60105dfb092a3321609aa">GetDepthBufferDSV</a>() = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="ttc" id="class_diligent_1_1_i_swap_chain_d3_d12_html_aad6957dcade829f2388854844e9f7926"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain_d3_d12.html#aad6957dcade829f2388854844e9f7926">Diligent::ISwapChainD3D12::GetCurrentBackBufferRTV</a></div><div class="ttdeci">virtual ITextureViewD3D12 * GetCurrentBackBufferRTV()=0</div><div class="ttdoc">Returns a pointer to the render target view of the current back buffer in the swap chain...</div></div> <div class="ttc" id="class_diligent_1_1_i_swap_chain_d3_d12_html_a4be4c4e747d60105dfb092a3321609aa"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain_d3_d12.html#a4be4c4e747d60105dfb092a3321609aa">Diligent::ISwapChainD3D12::GetDepthBufferDSV</a></div><div class="ttdeci">virtual ITextureViewD3D12 * GetDepthBufferDSV()=0</div><div class="ttdoc">Returns a pointer to the depth-stencil view of the depth buffer. </div></div> <div class="ttc" id="class_diligent_1_1_i_swap_chain_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain_d3_d12.html">Diligent::ISwapChainD3D12</a></div><div class="ttdoc">Interface to the swap chain object implemented in D3D12. </div><div class="ttdef"><b>Definition:</b> SwapChainD3D12.h:41</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_swap_chain_d3_d12_impl_8h_source.html b/doc/html/_swap_chain_d3_d12_impl_8h_source.html index 18bad626..d292fe4f 100644 --- a/doc/html/_swap_chain_d3_d12_impl_8h_source.html +++ b/doc/html/_swap_chain_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SwapChainD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <dxgi1_4.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "SwapChainD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SwapChainBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>ITextureViewD3D12;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>IMemoryAllocator;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d12_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html">SwapChainD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a><ISwapChainD3D12></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase<ISwapChainD3D12></a> <a class="code" href="class_diligent_1_1_swap_chain_base.html">TSwapChainBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html">SwapChainD3D12Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a>* pRenderDeviceD3D12,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html">DeviceContextD3D12Impl</a>* pDeviceContextD3D12,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span>* pNativeWndHandle);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ~<a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html">SwapChainD3D12Impl</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a95bd81d5f0388819e4d53d1c69dcaf71">Present</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#ac2c55b06f784ba3d876e370a7ecca6a7">Resize</a>( Uint32 NewWidth, Uint32 NewHeight );</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a5230d30e20acc005a17fcadb78dddb08"> 55</a></span>  <span class="keyword">virtual</span> IDXGISwapChain* <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a5230d30e20acc005a17fcadb78dddb08">GetDXGISwapChain</a>()override final{ <span class="keywordflow">return</span> m_pSwapChain; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a>* <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a89d8ff966e12a7cc8deab53c8f9d5b73">GetCurrentBackBufferRTV</a>()override final;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a94690b3c57829d90237bdc7de3916c09"> 57</a></span>  virtual <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a>* <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a94690b3c57829d90237bdc7de3916c09">GetDepthBufferDSV</a>()override final{<span class="keywordflow">return</span> m_pDepthBufferDSV;}</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">void</span> InitBuffersAndViews();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  CComPtr<IDXGISwapChain3> m_pSwapChain;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector< RefCntAutoPtr<ITextureViewD3D12>, STDAllocatorRawMem<RefCntAutoPtr<ITextureViewD3D12>> > m_pBackBufferRTV;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<ITextureViewD3D12></a> m_pDepthBufferDSV;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> };</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> }</div><div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <dxgi1_4.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "SwapChainD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "SwapChainBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>ITextureViewD3D12;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>IMemoryAllocator;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d12_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html">SwapChainD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a><ISwapChainD3D12></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase<ISwapChainD3D12></a> <a class="code" href="class_diligent_1_1_swap_chain_base.html">TSwapChainBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html">SwapChainD3D12Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a>* pRenderDeviceD3D12,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_device_context_d3_d12_impl.html">DeviceContextD3D12Impl</a>* pDeviceContextD3D12,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span>* pNativeWndHandle);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ~<a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html">SwapChainD3D12Impl</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a95bd81d5f0388819e4d53d1c69dcaf71">Present</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#ac2c55b06f784ba3d876e370a7ecca6a7">Resize</a>( Uint32 NewWidth, Uint32 NewHeight );</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a5230d30e20acc005a17fcadb78dddb08"> 55</a></span>  <span class="keyword">virtual</span> IDXGISwapChain* <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a5230d30e20acc005a17fcadb78dddb08">GetDXGISwapChain</a>()override final{ <span class="keywordflow">return</span> m_pSwapChain; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a>* <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a89d8ff966e12a7cc8deab53c8f9d5b73">GetCurrentBackBufferRTV</a>()override final;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a94690b3c57829d90237bdc7de3916c09"> 57</a></span>  virtual <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a>* <a class="code" href="class_diligent_1_1_swap_chain_d3_d12_impl.html#a94690b3c57829d90237bdc7de3916c09">GetDepthBufferDSV</a>()override final{<span class="keywordflow">return</span> m_pDepthBufferDSV;}</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">void</span> InitBuffersAndViews();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  CComPtr<IDXGISwapChain3> m_pSwapChain;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector< RefCntAutoPtr<ITextureViewD3D12>, STDAllocatorRawMem<RefCntAutoPtr<ITextureViewD3D12>> > m_pBackBufferRTV;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">RefCntAutoPtr<ITextureViewD3D12></a> m_pDepthBufferDSV;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> };</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> }</div><div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_device_context_d3_d12_impl_html"><div class="ttname"><a href="class_diligent_1_1_device_context_d3_d12_impl.html">Diligent::DeviceContextD3D12Impl</a></div><div class="ttdoc">Implementation of the Diligent::IDeviceContext interface. </div><div class="ttdef"><b>Definition:</b> DeviceContextD3D12Impl.h:41</div></div> <div class="ttc" id="class_diligent_1_1_swap_chain_d3_d12_impl_html"><div class="ttname"><a href="class_diligent_1_1_swap_chain_d3_d12_impl.html">Diligent::SwapChainD3D12Impl</a></div><div class="ttdoc">Implementation of the Diligent::ISwapChainD3D12 interface. </div><div class="ttdef"><b>Definition:</b> SwapChainD3D12Impl.h:39</div></div> @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_swap_chain_g_l_8h_source.html b/doc/html/_swap_chain_g_l_8h_source.html index ba510aa9..b5f9f725 100644 --- a/doc/html/_swap_chain_g_l_8h_source.html +++ b/doc/html/_swap_chain_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SwapChainGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {F457BD7C-E725-4D3E-8607-A1F9BAE329EB}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SwapChainGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xf457bd7c, 0xe725, 0x4d3e, { 0x86, 0x7, 0xa1, 0xf9, 0xba, 0xe3, 0x29, 0xeb } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_swap_chain_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_swap_chain_g_l.html">ISwapChainGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> };</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "SwapChain.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {F457BD7C-E725-4D3E-8607-A1F9BAE329EB}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_SwapChainGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xf457bd7c, 0xe725, 0x4d3e, { 0x86, 0x7, 0xa1, 0xf9, 0xba, 0xe3, 0x29, 0xeb } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_swap_chain_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_swap_chain_g_l.html">ISwapChainGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_swap_chain.html">ISwapChain</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> };</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_swap_chain_html"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain.html">Diligent::ISwapChain</a></div><div class="ttdoc">Swap chain interface. </div><div class="ttdef"><b>Definition:</b> SwapChain.h:41</div></div> <div class="ttc" id="class_diligent_1_1_i_swap_chain_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_swap_chain_g_l.html">Diligent::ISwapChainGL</a></div><div class="ttdoc">Interface to the swap chain object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> SwapChainGL.h:39</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_swap_chain_g_l_impl_8h_source.html b/doc/html/_swap_chain_g_l_impl_8h_source.html index 0d089958..77d3dae9 100644 --- a/doc/html/_swap_chain_g_l_impl_8h_source.html +++ b/doc/html/_swap_chain_g_l_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">SwapChainGLImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "SwapChainGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "SwapChainBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>IMemoryAllocator;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_g_l_impl.html"> 34</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html">SwapChainGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a><ISwapChainGL></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase<ISwapChainGL></a> <a class="code" href="class_diligent_1_1_swap_chain_base.html">TSwapChainBase</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html">SwapChainGLImpl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a>* pRenderDeviceGL,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a>* pImmediateContextGL);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ~<a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html">SwapChainGLImpl</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html#acb77b563ade60f92b38bbc29dfe49317">Present</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html#ab2c4136845e7e12e93b46342dff8e7f3">Resize</a>( Uint32 NewWidth, Uint32 NewHeight );</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "SwapChainGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "SwapChainBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>IMemoryAllocator;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_diligent_1_1_swap_chain_g_l_impl.html"> 34</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html">SwapChainGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase</a><ISwapChainGL></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_swap_chain_base.html">SwapChainBase<ISwapChainGL></a> <a class="code" href="class_diligent_1_1_swap_chain_base.html">TSwapChainBase</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html">SwapChainGLImpl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>& <a class="code" href="struct_diligent_1_1_swap_chain_desc.html">SwapChainDesc</a>, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a>* pRenderDeviceGL,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a>* pImmediateContextGL);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ~<a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html">SwapChainGLImpl</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> QueryInterface( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html#acb77b563ade60f92b38bbc29dfe49317">Present</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_swap_chain_g_l_impl.html#ab2c4136845e7e12e93b46342dff8e7f3">Resize</a>( Uint32 NewWidth, Uint32 NewHeight );</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="ttc" id="struct_diligent_1_1_swap_chain_desc_html"><div class="ttname"><a href="struct_diligent_1_1_swap_chain_desc.html">Diligent::SwapChainDesc</a></div><div class="ttdoc">Swap chain description. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:912</div></div> <div class="ttc" id="class_diligent_1_1_swap_chain_g_l_impl_html_ab2c4136845e7e12e93b46342dff8e7f3"><div class="ttname"><a href="class_diligent_1_1_swap_chain_g_l_impl.html#ab2c4136845e7e12e93b46342dff8e7f3">Diligent::SwapChainGLImpl::Resize</a></div><div class="ttdeci">virtual void Resize(Uint32 NewWidth, Uint32 NewHeight)</div><div class="ttdoc">Changes the swap chain&#39;s back buffer size. </div><div class="ttdef"><b>Definition:</b> SwapChainGLImpl.cpp:51</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_device_context_g_l_impl_html"><div class="ttname"><a href="class_diligent_1_1_device_context_g_l_impl.html">Diligent::DeviceContextGLImpl</a></div><div class="ttdoc">Implementation of the Diligent::IDeviceContextGL interface. </div><div class="ttdef"><b>Definition:</b> DeviceContextGLImpl.h:35</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_tex_region_render_8h_source.html b/doc/html/_tex_region_render_8h_source.html index e6a92d4e..9bad11aa 100644 --- a/doc/html/_tex_region_render_8h_source.html +++ b/doc/html/_tex_region_render_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TexRegionRender.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Helper class to facilitate texture copying by rendering</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">class </span>TexRegionRender</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  TexRegionRender(<span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">void</span> SetStates(<span class="keyword">class</span> DeviceContextGLImpl *pCtxGL);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">void</span> RestoreStates(<span class="keyword">class</span> DeviceContextGLImpl *pCtxGL);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">void</span> Render(<span class="keyword">class</span> DeviceContextGLImpl *pCtxGL,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  ITextureView *pSrcSRV,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">RESOURCE_DIMENSION</a> TexType,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  Int32 DstToSrcXOffset, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Int32 DstToSrcYOffset,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Int32 SrcZ,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  Int32 SrcMipLevel);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IShader></a> m_pVertexShader;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IShader></a> m_pFragmentShaders[<a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aa8c62a6c20eefee728772831dd50b000">RESOURCE_DIM_NUM_DIMENSIONS</a> * 3];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IBuffer></a> m_pConstantBuffer;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IPipelineState></a> m_pPSO[<a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aa8c62a6c20eefee728772831dd50b000">RESOURCE_DIM_NUM_DIMENSIONS</a> * 3];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IPipelineState></a> m_pOrigPSO;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  Uint32 m_OrigStencilRef = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">float</span> m_OrigBlendFactors[4] = {};</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  Uint32 m_NumRenderTargets = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  ITextureView *m_pOrigRTVs[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>] = {};</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<ITextureView></a> m_pOrigDSV;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::vector<Viewport> m_OrigViewports;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Helper class to facilitate texture copying by rendering</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">class </span>TexRegionRender</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  TexRegionRender(<span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">void</span> SetStates(<span class="keyword">class</span> DeviceContextGLImpl *pCtxGL);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">void</span> RestoreStates(<span class="keyword">class</span> DeviceContextGLImpl *pCtxGL);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">void</span> Render(<span class="keyword">class</span> DeviceContextGLImpl *pCtxGL,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  ITextureView *pSrcSRV,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">RESOURCE_DIMENSION</a> TexType,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> TexFormat,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  Int32 DstToSrcXOffset, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Int32 DstToSrcYOffset,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Int32 SrcZ,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  Int32 SrcMipLevel);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IShader></a> m_pVertexShader;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IShader></a> m_pFragmentShaders[<a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aa8c62a6c20eefee728772831dd50b000">RESOURCE_DIM_NUM_DIMENSIONS</a> * 3];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IBuffer></a> m_pConstantBuffer;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IPipelineState></a> m_pPSO[<a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aa8c62a6c20eefee728772831dd50b000">RESOURCE_DIM_NUM_DIMENSIONS</a> * 3];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<IPipelineState></a> m_pOrigPSO;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  Uint32 m_OrigStencilRef = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">float</span> m_OrigBlendFactors[4] = {};</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  Uint32 m_NumRenderTargets = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  ITextureView *m_pOrigRTVs[<a class="code" href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">MaxRenderTargets</a>] = {};</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<ITextureView></a> m_pOrigDSV;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::vector<Viewport> m_OrigViewports;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="namespace_diligent_html_ac667e59fc3ba021e3bd1d1424a3674d8"><div class="ttname"><a href="namespace_diligent.html#ac667e59fc3ba021e3bd1d1424a3674d8">Diligent::MaxRenderTargets</a></div><div class="ttdeci">static constexpr Uint32 MaxRenderTargets</div><div class="ttdoc">Maximum number of simultaneous render targets. </div><div class="ttdef"><b>Definition:</b> Constants.h:36</div></div> <div class="ttc" id="namespace_diligent_html_aa01f48fca1ad92ac9a1eca28e2d51c67"><div class="ttname"><a href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">Diligent::RESOURCE_DIMENSION</a></div><div class="ttdeci">RESOURCE_DIMENSION</div><div class="ttdoc">Describes resource dimension. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:172</div></div> @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture1_d___d3_d11_8h_source.html b/doc/html/_texture1_d___d3_d11_8h_source.html index 005cc6e6..b5a76695 100644 --- a/doc/html/_texture1_d___d3_d11_8h_source.html +++ b/doc/html/_texture1_d___d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">Texture1D_D3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureBaseD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture1_d___d3_d11.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture1_d___d3_d11.html">Texture1D_D3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_diligent_1_1_texture1_d___d3_d11.html">Texture1D_D3D11</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_texture1_d___d3_d11.html">Texture1D_D3D11</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ID3D11Texture1D *pd3d11Texture);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ~<a class="code" href="class_diligent_1_1_texture1_d___d3_d11.html">Texture1D_D3D11</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSRV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &SRVDesc, ID3D11ShaderResourceView **ppD3D11SRV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateRTV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &RTVDesc, ID3D11RenderTargetView **ppD3D11RTV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDSV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &DSVDesc, ID3D11DepthStencilView **ppD3D11DSV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateUAV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &UAVDesc, ID3D11UnorderedAccessView **ppD3D11UAV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureBaseD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture1_d___d3_d11.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture1_d___d3_d11.html">Texture1D_D3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_diligent_1_1_texture1_d___d3_d11.html">Texture1D_D3D11</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_texture1_d___d3_d11.html">Texture1D_D3D11</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ID3D11Texture1D *pd3d11Texture);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ~<a class="code" href="class_diligent_1_1_texture1_d___d3_d11.html">Texture1D_D3D11</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSRV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &SRVDesc, ID3D11ShaderResourceView **ppD3D11SRV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateRTV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &RTVDesc, ID3D11RenderTargetView **ppD3D11RTV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDSV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &DSVDesc, ID3D11DepthStencilView **ppD3D11DSV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateUAV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &UAVDesc, ID3D11UnorderedAccessView **ppD3D11UAV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_texture_base_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_d3_d11.html">Diligent::TextureBaseD3D11</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureD3D11 interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseD3D11.h:50</div></div> <div class="ttc" id="class_diligent_1_1_texture1_d___d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_texture1_d___d3_d11.html">Diligent::Texture1D_D3D11</a></div><div class="ttdoc">Implementation of a 1D texture. </div><div class="ttdef"><b>Definition:</b> Texture1D_D3D11.h:35</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture1_d___o_g_l_8h_source.html b/doc/html/_texture1_d___o_g_l_8h_source.html index 0a150f67..2921f1d9 100644 --- a/doc/html/_texture1_d___o_g_l_8h_source.html +++ b/doc/html/_texture1_d___o_g_l_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">Texture1D_OGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>Texture1D_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Texture1D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Texture1D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~Texture1D_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>Texture1D_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Texture1D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Texture1D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~Texture1D_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture1_d_array___o_g_l_8h_source.html b/doc/html/_texture1_d_array___o_g_l_8h_source.html index 51a9e523..2c6d2c69 100644 --- a/doc/html/_texture1_d_array___o_g_l_8h_source.html +++ b/doc/html/_texture1_d_array___o_g_l_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">Texture1DArray_OGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>Texture1DArray_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Texture1DArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Texture1DArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~Texture1DArray_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>Texture1DArray_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Texture1DArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Texture1DArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~Texture1DArray_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture2_d___d3_d11_8h_source.html b/doc/html/_texture2_d___d3_d11_8h_source.html index 2c14d458..26a06bd6 100644 --- a/doc/html/_texture2_d___d3_d11_8h_source.html +++ b/doc/html/_texture2_d___d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">Texture2D_D3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureBaseD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture2_d___d3_d11.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture2_d___d3_d11.html">Texture2D_D3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_diligent_1_1_texture2_d___d3_d11.html">Texture2D_D3D11</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_texture2_d___d3_d11.html">Texture2D_D3D11</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ID3D11Texture2D *pd3d11Texture);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ~<a class="code" href="class_diligent_1_1_texture2_d___d3_d11.html">Texture2D_D3D11</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSRV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &SRVDesc, ID3D11ShaderResourceView **ppD3D11SRV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateRTV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &RTVDesc, ID3D11RenderTargetView **ppD3D11RTV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDSV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &DSVDesc, ID3D11DepthStencilView **ppD3D11DSV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateUAV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &UAVDesc, ID3D11UnorderedAccessView **ppD3D11UAV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureBaseD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture2_d___d3_d11.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture2_d___d3_d11.html">Texture2D_D3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_diligent_1_1_texture2_d___d3_d11.html">Texture2D_D3D11</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_texture2_d___d3_d11.html">Texture2D_D3D11</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ID3D11Texture2D *pd3d11Texture);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ~<a class="code" href="class_diligent_1_1_texture2_d___d3_d11.html">Texture2D_D3D11</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSRV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &SRVDesc, ID3D11ShaderResourceView **ppD3D11SRV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateRTV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &RTVDesc, ID3D11RenderTargetView **ppD3D11RTV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDSV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &DSVDesc, ID3D11DepthStencilView **ppD3D11DSV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateUAV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &UAVDesc, ID3D11UnorderedAccessView **ppD3D11UAV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_texture_base_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_d3_d11.html">Diligent::TextureBaseD3D11</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureD3D11 interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseD3D11.h:50</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="struct_diligent_1_1_texture_data_html"><div class="ttname"><a href="struct_diligent_1_1_texture_data.html">Diligent::TextureData</a></div><div class="ttdoc">Describes the initial data to store in the texture. </div><div class="ttdef"><b>Definition:</b> Texture.h:243</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture2_d___o_g_l_8h_source.html b/doc/html/_texture2_d___o_g_l_8h_source.html index 0b82aa13..a4672dca 100644 --- a/doc/html/_texture2_d___o_g_l_8h_source.html +++ b/doc/html/_texture2_d___o_g_l_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">Texture2D_OGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>Texture2D_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Texture2D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Texture2D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~Texture2D_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>Texture2D_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Texture2D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Texture2D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~Texture2D_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture2_d_array___o_g_l_8h_source.html b/doc/html/_texture2_d_array___o_g_l_8h_source.html index 95bbaea5..0488bc09 100644 --- a/doc/html/_texture2_d_array___o_g_l_8h_source.html +++ b/doc/html/_texture2_d_array___o_g_l_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">Texture2DArray_OGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>Texture2DArray_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Texture2DArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Texture2DArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~Texture2DArray_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>Texture2DArray_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Texture2DArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Texture2DArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~Texture2DArray_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture3_d___d3_d11_8h_source.html b/doc/html/_texture3_d___d3_d11_8h_source.html index f7ee9dca..06a97b4e 100644 --- a/doc/html/_texture3_d___d3_d11_8h_source.html +++ b/doc/html/_texture3_d___d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">Texture3D_D3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureBaseD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture3_d___d3_d11.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture3_d___d3_d11.html">Texture3D_D3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_diligent_1_1_texture3_d___d3_d11.html">Texture3D_D3D11</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_texture3_d___d3_d11.html">Texture3D_D3D11</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ID3D11Texture3D *pd3d11Texture);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ~<a class="code" href="class_diligent_1_1_texture3_d___d3_d11.html">Texture3D_D3D11</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSRV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &SRVDesc, ID3D11ShaderResourceView **ppD3D11SRV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateRTV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &RTVDesc, ID3D11RenderTargetView **ppD3D11RTV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDSV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &DSVDesc, ID3D11DepthStencilView **ppD3D11DSV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateUAV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &UAVDesc, ID3D11UnorderedAccessView **ppD3D11UAV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureBaseD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture3_d___d3_d11.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture3_d___d3_d11.html">Texture3D_D3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_diligent_1_1_texture3_d___d3_d11.html">Texture3D_D3D11</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_diligent_1_1_texture3_d___d3_d11.html">Texture3D_D3D11</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ID3D11Texture3D *pd3d11Texture);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ~<a class="code" href="class_diligent_1_1_texture3_d___d3_d11.html">Texture3D_D3D11</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSRV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &SRVDesc, ID3D11ShaderResourceView **ppD3D11SRV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateRTV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &RTVDesc, ID3D11RenderTargetView **ppD3D11RTV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDSV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &DSVDesc, ID3D11DepthStencilView **ppD3D11DSV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateUAV( <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &UAVDesc, ID3D11UnorderedAccessView **ppD3D11UAV )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_texture_base_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_d3_d11.html">Diligent::TextureBaseD3D11</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureD3D11 interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseD3D11.h:50</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="struct_diligent_1_1_texture_data_html"><div class="ttname"><a href="struct_diligent_1_1_texture_data.html">Diligent::TextureData</a></div><div class="ttdoc">Describes the initial data to store in the texture. </div><div class="ttdef"><b>Definition:</b> Texture.h:243</div></div> @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture3_d___o_g_l_8h_source.html b/doc/html/_texture3_d___o_g_l_8h_source.html index f880b896..2325790e 100644 --- a/doc/html/_texture3_d___o_g_l_8h_source.html +++ b/doc/html/_texture3_d___o_g_l_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">Texture3D_OGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>Texture3D_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Texture3D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Texture3D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~Texture3D_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData(IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>Texture3D_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  Texture3D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Texture3D_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~Texture3D_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData(IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_8h_source.html b/doc/html/_texture_8h_source.html index 2dad7825..c8437a3b 100644 --- a/doc/html/_texture_8h_source.html +++ b/doc/html/_texture_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">Texture.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {A64B0E60-1B5E-4CFD-B880-663A1ADCBE98}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_Texture =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xa64b0e60, 0x1b5e, 0x4cfd, { 0xb8, 0x80, 0x66, 0x3a, 0x1a, 0xdc, 0xbe, 0x98 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_clear_value.html"> 39</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html">DepthStencilClearValue</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_clear_value.html#afd8bc5b2356e2e962a2f5b9350388be0"> 42</a></span>  Float32 <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#afd8bc5b2356e2e962a2f5b9350388be0">Depth</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_clear_value.html#aa66a0364673a8dad318084ca95e5e325"> 44</a></span>  Uint8 <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#aa66a0364673a8dad318084ca95e5e325">Stencil</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html">DepthStencilClearValue</a>() : </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#afd8bc5b2356e2e962a2f5b9350388be0">Depth</a>(1.f),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#aa66a0364673a8dad318084ca95e5e325">Stencil</a>(0)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_optimized_clear_value.html"> 52</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_optimized_clear_value.html">OptimizedClearValue</a></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_optimized_clear_value.html#ac9d7d42da6e94a23a4146bf5bc5a9f04"> 55</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#ac9d7d42da6e94a23a4146bf5bc5a9f04">Format</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f"> 57</a></span>  Float32 <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[ 4 ];</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4"> 59</a></span>  <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html">DepthStencilClearValue</a> <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4">DepthStencil</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html">OptimizedClearValue</a>() : </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#ac9d7d42da6e94a23a4146bf5bc5a9f04">Format</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[0] = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[1] = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[2] = 0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[3] = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_optimized_clear_value.html">OptimizedClearValue</a>& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#ac9d7d42da6e94a23a4146bf5bc5a9f04">Format</a> == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#ac9d7d42da6e94a23a4146bf5bc5a9f04">Format</a> &&</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[0] == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[0] &&</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[1] == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[1] &&</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[2] == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[2] &&</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[3] == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[3] &&</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4">DepthStencil</a>.<a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#afd8bc5b2356e2e962a2f5b9350388be0">Depth</a> == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4">DepthStencil</a>.<a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#afd8bc5b2356e2e962a2f5b9350388be0">Depth</a> &&</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4">DepthStencil</a>.<a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#aa66a0364673a8dad318084ca95e5e325">Stencil</a> == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4">DepthStencil</a>.<a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#aa66a0364673a8dad318084ca95e5e325">Stencil</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html"> 82</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490"> 85</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">RESOURCE_DIMENSION</a> <a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709"> 88</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a61bc12d7c99fd26e00555776bf0e9fdf"> 91</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a61bc12d7c99fd26e00555776bf0e9fdf">Height</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">union</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a9f1c03e9ab8af4d281c389e722f71931"> 95</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a9f1c03e9ab8af4d281c389e722f71931">ArraySize</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#ad87979958a20966805d72d9335179613"> 98</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#ad87979958a20966805d72d9335179613">Depth</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  };</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9"> 102</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9">Format</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997"> 106</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a809c087dd8a353cbb4460e56b44720f4"> 110</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a809c087dd8a353cbb4460e56b44720f4">SampleCount</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a2379f3e799a8b97f8c36c6ec1a42937c"> 113</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> <a class="code" href="struct_diligent_1_1_texture_desc.html#a2379f3e799a8b97f8c36c6ec1a42937c">Usage</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a"> 120</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a">BindFlags</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a429dac9dc391f1d139042708ae4f3111"> 124</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a429dac9dc391f1d139042708ae4f3111">CPUAccessFlags</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a9386aa4e98ad13a15363e647b4238a0d"> 128</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a9386aa4e98ad13a15363e647b4238a0d">MiscFlags</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#ab13dcc16058700967e89c21ac1790cea"> 131</a></span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html">OptimizedClearValue</a> <a class="code" href="struct_diligent_1_1_texture_desc.html#ab13dcc16058700967e89c21ac1790cea">ClearValue</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#aab1ba608a78b7eee921a94caa6f8c024"> 149</a></span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#aab1ba608a78b7eee921a94caa6f8c024">TextureDesc</a>() : </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a>(<a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67af059ddcde8b1a3bf1c6f32f3b4865cfe">RESOURCE_DIM_UNDEFINED</a>),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a>(0),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a61bc12d7c99fd26e00555776bf0e9fdf">Height</a>(0),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9f1c03e9ab8af4d281c389e722f71931">ArraySize</a>(1),</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9">Format</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a>(1),</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a809c087dd8a353cbb4460e56b44720f4">SampleCount</a>(1),</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a2379f3e799a8b97f8c36c6ec1a42937c">Usage</a>(<a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>),</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a">BindFlags</a>(0),</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a429dac9dc391f1d139042708ae4f3111">CPUAccessFlags</a>(0),</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9386aa4e98ad13a15363e647b4238a0d">MiscFlags</a>(0)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#ade268a186493a358acfc457741f1611e"> 172</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_desc.html#ade268a186493a358acfc457741f1611e">operator ==</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// Name is primarily used for debug purposes and does not affect the state.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// It is ignored in comparison operation.</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="comment">// strcmp(Name, RHS.Name) == 0 &&</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a> &&</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a> &&</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a61bc12d7c99fd26e00555776bf0e9fdf">Height</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a61bc12d7c99fd26e00555776bf0e9fdf">Height</a> &&</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9f1c03e9ab8af4d281c389e722f71931">ArraySize</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9f1c03e9ab8af4d281c389e722f71931">ArraySize</a> &&</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9">Format</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9">Format</a> &&</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> &&</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a809c087dd8a353cbb4460e56b44720f4">SampleCount</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a809c087dd8a353cbb4460e56b44720f4">SampleCount</a> &&</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a2379f3e799a8b97f8c36c6ec1a42937c">Usage</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a2379f3e799a8b97f8c36c6ec1a42937c">Usage</a> &&</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a">BindFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a">BindFlags</a> &&</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a429dac9dc391f1d139042708ae4f3111">CPUAccessFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a429dac9dc391f1d139042708ae4f3111">CPUAccessFlags</a> &&</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9386aa4e98ad13a15363e647b4238a0d">MiscFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9386aa4e98ad13a15363e647b4238a0d">MiscFlags</a> &&</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#ab13dcc16058700967e89c21ac1790cea">ClearValue</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#ab13dcc16058700967e89c21ac1790cea">ClearValue</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> };</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html"> 193</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#a2b2bb575cc953e611b8cba07192f18d1"> 197</a></span>  <span class="keyword">const</span> <span class="keywordtype">void</span>* <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a2b2bb575cc953e611b8cba07192f18d1">pData</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#a3b7a503a92d3c70b4875da0ac48facb9"> 201</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *<a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a3b7a503a92d3c70b4875da0ac48facb9">pSrcBuffer</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#ae4f1c2064390d9fc3706d38523acac69"> 204</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae4f1c2064390d9fc3706d38523acac69">Stride</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#ae24a67af843826f53e4e1d8b0090b7fd"> 208</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae24a67af843826f53e4e1d8b0090b7fd">DepthStride</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#a8198bdcafb7971398448a701dfa6b329"> 218</a></span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a8198bdcafb7971398448a701dfa6b329">TextureSubResData</a>():</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a2b2bb575cc953e611b8cba07192f18d1">pData</a>(nullptr),</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a3b7a503a92d3c70b4875da0ac48facb9">pSrcBuffer</a>(nullptr),</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae4f1c2064390d9fc3706d38523acac69">Stride</a>(0),</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae24a67af843826f53e4e1d8b0090b7fd">DepthStride</a>(0)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {}</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  </div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#a7035a123eda79ee0670960f011098beb"> 226</a></span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a7035a123eda79ee0670960f011098beb">TextureSubResData</a>(<span class="keywordtype">void</span> *_pData, Uint32 _Stride, Uint32 _DepthStride=0) :</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a2b2bb575cc953e611b8cba07192f18d1">pData</a>(_pData),</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a3b7a503a92d3c70b4875da0ac48facb9">pSrcBuffer</a>(nullptr),</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae4f1c2064390d9fc3706d38523acac69">Stride</a>(_Stride),</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae24a67af843826f53e4e1d8b0090b7fd">DepthStride</a>(_DepthStride)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {}</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#a1a5c731825d0f686668f1f6bb3711224"> 234</a></span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a1a5c731825d0f686668f1f6bb3711224">TextureSubResData</a>(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *_pBuffer, Uint32 _Stride, Uint32 _DepthStride=0) :</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a2b2bb575cc953e611b8cba07192f18d1">pData</a>(nullptr),</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a3b7a503a92d3c70b4875da0ac48facb9">pSrcBuffer</a>(_pBuffer),</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae4f1c2064390d9fc3706d38523acac69">Stride</a>(_Stride),</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae24a67af843826f53e4e1d8b0090b7fd">DepthStride</a>(_DepthStride)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {}</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> };</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_data.html"> 243</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_data.html#ab7bd0ded2a2f31e8f6bdb1eaec410c04"> 247</a></span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> *<a class="code" href="struct_diligent_1_1_texture_data.html#ab7bd0ded2a2f31e8f6bdb1eaec410c04">pSubResources</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_data.html#aa2f8aae2bc55091930db5cbe89884712"> 253</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_data.html#aa2f8aae2bc55091930db5cbe89884712">NumSubresources</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_data.html#af0c0f1f5b7dbfc6f6c9d81e3646f48bf"> 262</a></span>  <a class="code" href="struct_diligent_1_1_texture_data.html#af0c0f1f5b7dbfc6f6c9d81e3646f48bf">TextureData</a>() : </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="struct_diligent_1_1_texture_data.html#ab7bd0ded2a2f31e8f6bdb1eaec410c04">pSubResources</a>(nullptr),</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="struct_diligent_1_1_texture_data.html#aa2f8aae2bc55091930db5cbe89884712">NumSubresources</a>(0)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {}</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> };</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword">struct </span>MappedTextureSubresource</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  PVoid pData = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  Uint32 Stride = 0;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  Uint32 DepthStride = 0;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> };</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture.html"> 276</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#a5e61c7d58d7c8a95c568dfeda661e496">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& <a class="code" href="class_diligent_1_1_i_texture.html#af98b320201b52d87b4c3e280a93d5e97">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#ab3f1935532ddd971e455941e3abc21f9">CreateView</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &ViewDesc, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppView) = 0;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a>* <a class="code" href="class_diligent_1_1_i_texture.html#a9ba5c3ebe17f0a196b22295b611d168f">GetDefaultView</a>( <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> ViewType ) = 0;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#a8a3e8c23344b0fce96f61ea6732c0782">UpdateData</a>( <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> &SubresData ) = 0;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#a1141214ba00faa0ca61f656269bb3508">CopyData</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pSrcTexture, </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> *pSrcBox,</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  Uint32 DstSlice,</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  Uint32 DstX,</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  Uint32 DstY,</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  Uint32 DstZ) = 0;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#a3889d01df9f41ea6f07d6fb814ff466f">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData ) = 0;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#af7ccbdefee685cb40a92ffb2fbb4c4ed">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags ) = 0;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_i_texture.html#a6242160413bfb2962ecb5127dd66af77">GetNativeHandle</a>() = 0;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> };</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {A64B0E60-1B5E-4CFD-B880-663A1ADCBE98}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_Texture =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xa64b0e60, 0x1b5e, 0x4cfd, { 0xb8, 0x80, 0x66, 0x3a, 0x1a, 0xdc, 0xbe, 0x98 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_clear_value.html"> 39</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html">DepthStencilClearValue</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_clear_value.html#afd8bc5b2356e2e962a2f5b9350388be0"> 42</a></span>  Float32 <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#afd8bc5b2356e2e962a2f5b9350388be0">Depth</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_depth_stencil_clear_value.html#aa66a0364673a8dad318084ca95e5e325"> 44</a></span>  Uint8 <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#aa66a0364673a8dad318084ca95e5e325">Stencil</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html">DepthStencilClearValue</a>() : </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#afd8bc5b2356e2e962a2f5b9350388be0">Depth</a>(1.f),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#aa66a0364673a8dad318084ca95e5e325">Stencil</a>(0)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_optimized_clear_value.html"> 52</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_optimized_clear_value.html">OptimizedClearValue</a></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_optimized_clear_value.html#ac9d7d42da6e94a23a4146bf5bc5a9f04"> 55</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#ac9d7d42da6e94a23a4146bf5bc5a9f04">Format</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f"> 57</a></span>  Float32 <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[ 4 ];</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4"> 59</a></span>  <a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html">DepthStencilClearValue</a> <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4">DepthStencil</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html">OptimizedClearValue</a>() : </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#ac9d7d42da6e94a23a4146bf5bc5a9f04">Format</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[0] = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[1] = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[2] = 0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[3] = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_optimized_clear_value.html">OptimizedClearValue</a>& rhs)<span class="keyword">const</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#ac9d7d42da6e94a23a4146bf5bc5a9f04">Format</a> == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#ac9d7d42da6e94a23a4146bf5bc5a9f04">Format</a> &&</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[0] == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[0] &&</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[1] == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[1] &&</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[2] == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[2] &&</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[3] == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a11898e2bde2185d78d2ca05bc850e92f">Color</a>[3] &&</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4">DepthStencil</a>.<a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#afd8bc5b2356e2e962a2f5b9350388be0">Depth</a> == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4">DepthStencil</a>.<a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#afd8bc5b2356e2e962a2f5b9350388be0">Depth</a> &&</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4">DepthStencil</a>.<a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#aa66a0364673a8dad318084ca95e5e325">Stencil</a> == rhs.<a class="code" href="struct_diligent_1_1_optimized_clear_value.html#a6262729d1a08fb34fb566e78f52ee7d4">DepthStencil</a>.<a class="code" href="struct_diligent_1_1_depth_stencil_clear_value.html#aa66a0364673a8dad318084ca95e5e325">Stencil</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html"> 82</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490"> 85</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">RESOURCE_DIMENSION</a> <a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709"> 88</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a61bc12d7c99fd26e00555776bf0e9fdf"> 91</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a61bc12d7c99fd26e00555776bf0e9fdf">Height</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">union</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a9f1c03e9ab8af4d281c389e722f71931"> 95</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a9f1c03e9ab8af4d281c389e722f71931">ArraySize</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#ad87979958a20966805d72d9335179613"> 98</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#ad87979958a20966805d72d9335179613">Depth</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  };</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9"> 102</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9">Format</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997"> 106</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a809c087dd8a353cbb4460e56b44720f4"> 110</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a809c087dd8a353cbb4460e56b44720f4">SampleCount</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a2379f3e799a8b97f8c36c6ec1a42937c"> 113</a></span>  <a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746">USAGE</a> <a class="code" href="struct_diligent_1_1_texture_desc.html#a2379f3e799a8b97f8c36c6ec1a42937c">Usage</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a"> 120</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a">BindFlags</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a429dac9dc391f1d139042708ae4f3111"> 124</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a429dac9dc391f1d139042708ae4f3111">CPUAccessFlags</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#a9386aa4e98ad13a15363e647b4238a0d"> 128</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_desc.html#a9386aa4e98ad13a15363e647b4238a0d">MiscFlags</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#ab13dcc16058700967e89c21ac1790cea"> 131</a></span>  <a class="code" href="struct_diligent_1_1_optimized_clear_value.html">OptimizedClearValue</a> <a class="code" href="struct_diligent_1_1_texture_desc.html#ab13dcc16058700967e89c21ac1790cea">ClearValue</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#aab1ba608a78b7eee921a94caa6f8c024"> 149</a></span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#aab1ba608a78b7eee921a94caa6f8c024">TextureDesc</a>() : </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a>(<a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67af059ddcde8b1a3bf1c6f32f3b4865cfe">RESOURCE_DIM_UNDEFINED</a>),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a>(0),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a61bc12d7c99fd26e00555776bf0e9fdf">Height</a>(0),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9f1c03e9ab8af4d281c389e722f71931">ArraySize</a>(1),</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9">Format</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a>(1),</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a809c087dd8a353cbb4460e56b44720f4">SampleCount</a>(1),</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a2379f3e799a8b97f8c36c6ec1a42937c">Usage</a>(<a class="code" href="namespace_diligent.html#a5342fb015dbf7f2e638dbfccc325a746ae6658ba1c8f4426a8b0bdae1b7e3ae64">USAGE_DEFAULT</a>),</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a">BindFlags</a>(0),</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a429dac9dc391f1d139042708ae4f3111">CPUAccessFlags</a>(0),</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9386aa4e98ad13a15363e647b4238a0d">MiscFlags</a>(0)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_desc.html#ade268a186493a358acfc457741f1611e"> 172</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_desc.html#ade268a186493a358acfc457741f1611e">operator ==</a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// Name is primarily used for debug purposes and does not affect the state.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// It is ignored in comparison operation.</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="comment">// strcmp(Name, RHS.Name) == 0 &&</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a> &&</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a> &&</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a61bc12d7c99fd26e00555776bf0e9fdf">Height</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a61bc12d7c99fd26e00555776bf0e9fdf">Height</a> &&</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9f1c03e9ab8af4d281c389e722f71931">ArraySize</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9f1c03e9ab8af4d281c389e722f71931">ArraySize</a> &&</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9">Format</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a61757069b9f990537b730d7dc5033ee9">Format</a> &&</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> &&</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a809c087dd8a353cbb4460e56b44720f4">SampleCount</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a809c087dd8a353cbb4460e56b44720f4">SampleCount</a> &&</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a2379f3e799a8b97f8c36c6ec1a42937c">Usage</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a2379f3e799a8b97f8c36c6ec1a42937c">Usage</a> &&</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a">BindFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a884a52b8c5088e44640394c7cf26de3a">BindFlags</a> &&</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a429dac9dc391f1d139042708ae4f3111">CPUAccessFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a429dac9dc391f1d139042708ae4f3111">CPUAccessFlags</a> &&</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#a9386aa4e98ad13a15363e647b4238a0d">MiscFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9386aa4e98ad13a15363e647b4238a0d">MiscFlags</a> &&</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="struct_diligent_1_1_texture_desc.html#ab13dcc16058700967e89c21ac1790cea">ClearValue</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_desc.html#ab13dcc16058700967e89c21ac1790cea">ClearValue</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> };</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html"> 193</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#a2b2bb575cc953e611b8cba07192f18d1"> 197</a></span>  <span class="keyword">const</span> <span class="keywordtype">void</span>* <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a2b2bb575cc953e611b8cba07192f18d1">pData</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#a3b7a503a92d3c70b4875da0ac48facb9"> 201</a></span>  <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *<a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a3b7a503a92d3c70b4875da0ac48facb9">pSrcBuffer</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#ae4f1c2064390d9fc3706d38523acac69"> 204</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae4f1c2064390d9fc3706d38523acac69">Stride</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#ae24a67af843826f53e4e1d8b0090b7fd"> 208</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae24a67af843826f53e4e1d8b0090b7fd">DepthStride</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#a8198bdcafb7971398448a701dfa6b329"> 218</a></span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a8198bdcafb7971398448a701dfa6b329">TextureSubResData</a>():</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a2b2bb575cc953e611b8cba07192f18d1">pData</a>(nullptr),</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a3b7a503a92d3c70b4875da0ac48facb9">pSrcBuffer</a>(nullptr),</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae4f1c2064390d9fc3706d38523acac69">Stride</a>(0),</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae24a67af843826f53e4e1d8b0090b7fd">DepthStride</a>(0)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {}</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  </div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#a7035a123eda79ee0670960f011098beb"> 226</a></span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a7035a123eda79ee0670960f011098beb">TextureSubResData</a>(<span class="keywordtype">void</span> *_pData, Uint32 _Stride, Uint32 _DepthStride=0) :</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a2b2bb575cc953e611b8cba07192f18d1">pData</a>(_pData),</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a3b7a503a92d3c70b4875da0ac48facb9">pSrcBuffer</a>(nullptr),</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae4f1c2064390d9fc3706d38523acac69">Stride</a>(_Stride),</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae24a67af843826f53e4e1d8b0090b7fd">DepthStride</a>(_DepthStride)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {}</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_sub_res_data.html#a1a5c731825d0f686668f1f6bb3711224"> 234</a></span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a1a5c731825d0f686668f1f6bb3711224">TextureSubResData</a>(<a class="code" href="class_diligent_1_1_i_buffer.html">IBuffer</a> *_pBuffer, Uint32 _Stride, Uint32 _DepthStride=0) :</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a2b2bb575cc953e611b8cba07192f18d1">pData</a>(nullptr),</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#a3b7a503a92d3c70b4875da0ac48facb9">pSrcBuffer</a>(_pBuffer),</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae4f1c2064390d9fc3706d38523acac69">Stride</a>(_Stride),</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html#ae24a67af843826f53e4e1d8b0090b7fd">DepthStride</a>(_DepthStride)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {}</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> };</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_data.html"> 243</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_data.html#ab7bd0ded2a2f31e8f6bdb1eaec410c04"> 247</a></span>  <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> *<a class="code" href="struct_diligent_1_1_texture_data.html#ab7bd0ded2a2f31e8f6bdb1eaec410c04">pSubResources</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_data.html#aa2f8aae2bc55091930db5cbe89884712"> 253</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_data.html#aa2f8aae2bc55091930db5cbe89884712">NumSubresources</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_data.html#af0c0f1f5b7dbfc6f6c9d81e3646f48bf"> 262</a></span>  <a class="code" href="struct_diligent_1_1_texture_data.html#af0c0f1f5b7dbfc6f6c9d81e3646f48bf">TextureData</a>() : </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="struct_diligent_1_1_texture_data.html#ab7bd0ded2a2f31e8f6bdb1eaec410c04">pSubResources</a>(nullptr),</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="struct_diligent_1_1_texture_data.html#aa2f8aae2bc55091930db5cbe89884712">NumSubresources</a>(0)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {}</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> };</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword">struct </span>MappedTextureSubresource</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  PVoid pData = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  Uint32 Stride = 0;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  Uint32 DepthStride = 0;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> };</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture.html"> 276</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#a5e61c7d58d7c8a95c568dfeda661e496">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& <a class="code" href="class_diligent_1_1_i_texture.html#af98b320201b52d87b4c3e280a93d5e97">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#ab3f1935532ddd971e455941e3abc21f9">CreateView</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &ViewDesc, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppView) = 0;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a>* <a class="code" href="class_diligent_1_1_i_texture.html#a9ba5c3ebe17f0a196b22295b611d168f">GetDefaultView</a>( <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> ViewType ) = 0;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#a8a3e8c23344b0fce96f61ea6732c0782">UpdateData</a>( <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> &SubresData ) = 0;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#a1141214ba00faa0ca61f656269bb3508">CopyData</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pSrcTexture, </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> *pSrcBox,</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  Uint32 DstSlice,</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  Uint32 DstX,</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  Uint32 DstY,</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  Uint32 DstZ) = 0;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#a3889d01df9f41ea6f07d6fb814ff466f">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData ) = 0;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture.html#af7ccbdefee685cb40a92ffb2fbb4c4ed">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags ) = 0;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_i_texture.html#a6242160413bfb2962ecb5127dd66af77">GetNativeHandle</a>() = 0;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> };</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_html_a8a3e8c23344b0fce96f61ea6732c0782"><div class="ttname"><a href="class_diligent_1_1_i_texture.html#a8a3e8c23344b0fce96f61ea6732c0782">Diligent::ITexture::UpdateData</a></div><div class="ttdeci">virtual void UpdateData(class IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, const Box &DstBox, const TextureSubResData &SubresData)=0</div><div class="ttdoc">Updates the data in the texture. </div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="namespace_diligent_html_a4f10ca1e5c5034aa6dcc86224d1189bd"><div class="ttname"><a href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">Diligent::TEXTURE_VIEW_TYPE</a></div><div class="ttdeci">TEXTURE_VIEW_TYPE</div><div class="ttdoc">Texture view type. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:190</div></div> @@ -135,7 +135,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_base_8h_source.html b/doc/html/_texture_base_8h_source.html index bc4c81e3..6cbb0fcc 100644 --- a/doc/html/_texture_base_8h_source.html +++ b/doc/html/_texture_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">void</span> ValidateTextureDesc(<span class="keyword">const</span> TextureDesc& TexDesc);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">void</span> ValidateUpdateDataParams( <span class="keyword">const</span> TextureDesc &TexDesc, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData );</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">void</span> VliadateCopyTextureDataParams( <span class="keyword">const</span> TextureDesc &SrcTexDesc, Uint32 SrcMipLevel, Uint32 SrcSlice, <span class="keyword">const</span> Box *pSrcBox,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> TextureDesc &DstTexDesc, Uint32 DstMipLevel, Uint32 DstSlice,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Uint32 DstX, Uint32 DstY, Uint32 DstZ );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html"> 52</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_base.html">TextureBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, TextureDesc></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, TextureDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#ab57ba2c59cef18b9a9a1b5d265108271"> 64</a></span>  <a class="code" href="class_diligent_1_1_texture_base.html#ab57ba2c59cef18b9a9a1b5d265108271">TextureBase</a>( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  TTexViewObjAllocator &TexViewObjAllocator,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& Desc, </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, Desc, bIsDeviceInternal ),</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> #ifdef _DEBUG</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_dbgTexViewObjAllocator(TexViewObjAllocator),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> #endif</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="class_diligent_1_1_texture_base.html#a422073618342c8734795dee260e8b5b7">m_pDefaultSRV</a>(nullptr, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>(TexViewObjAllocator)),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="class_diligent_1_1_texture_base.html#a6b84853e321ab2023d96a62ae1b71095">m_pDefaultRTV</a>(nullptr, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>(TexViewObjAllocator)),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_texture_base.html#a6a63f0edcd4eabfb50c2be35d4c42bba">m_pDefaultDSV</a>(nullptr, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>(TexViewObjAllocator)),</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="class_diligent_1_1_texture_base.html#ac39e3ed2439c28eecbde7b5e57a80bec">m_pDefaultUAV</a>(nullptr, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>(TexViewObjAllocator))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> == 0 )</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Compute the number of levels in the full mipmap chain</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a> == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a> ||</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a> )</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> = ComputeMipLevelsCount(this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a> == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> ||</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> || </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> || </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a> )</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  { </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> = ComputeMipLevelsCount( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a>, this->m_Desc.Height );</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a> == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a> )</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> = ComputeMipLevelsCount( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a>, this->m_Desc.Height, this->m_Desc.Depth );</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  UNEXPECTED( <span class="stringliteral">"Unkwnown texture type"</span> );</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Validate correctness of texture description</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  ValidateTextureDesc( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a> );</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_Texture, TDeviceObjectBase )</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#ac01f2d9b9d68038be0f307be08f25d07">CreateView</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &ViewDesc, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppView )<span class="keyword">override</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="class_diligent_1_1_texture_base.html#a3e8b435697f7083e4e7454dcb214f3f5">CreateViewInternal</a>( ViewDesc, ppView, <span class="keyword">false</span> );</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a8ebdab4ab9ffafd8fbf2470b74ee161f">UpdateData</a>( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a614420569d09b39f90231181769b7d55">CopyData</a>( IDeviceContext *pContext,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  ITexture *pSrcTexture,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">const</span> Box *pSrcBox,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  Uint32 DstSlice,</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  Uint32 DstX,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Uint32 DstY,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  Uint32 DstZ )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a9304ec9edb52c699cf958b51804fc532">Map</a>( IDeviceContext *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#ad1136237abd271ed16feb7972185b0fd">Unmap</a>( IDeviceContext *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a832ba2a8e7a76ad9c0f349c839c1dbda">CreateDefaultViews</a>();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a3e8b435697f7083e4e7454dcb214f3f5">CreateViewInternal</a>( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc &ViewDesc, ITextureView **ppView, <span class="keywordtype">bool</span> bIsDefaultView ) = 0;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  TTexViewObjAllocator &m_dbgTexViewObjAllocator;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// WARNING! We cannot use ITextureView here, because ITextureView has no virtual dtor!</span></div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a422073618342c8734795dee260e8b5b7"> 158</a></span> <span class="comment"></span> std::unique_ptr<TTextureViewImpl, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>> <a class="code" href="class_diligent_1_1_texture_base.html#a422073618342c8734795dee260e8b5b7">m_pDefaultSRV</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a6b84853e321ab2023d96a62ae1b71095"> 160</a></span>  std::unique_ptr<TTextureViewImpl, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>> <a class="code" href="class_diligent_1_1_texture_base.html#a6b84853e321ab2023d96a62ae1b71095">m_pDefaultRTV</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a6a63f0edcd4eabfb50c2be35d4c42bba"> 162</a></span>  std::unique_ptr<TTextureViewImpl, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>> <a class="code" href="class_diligent_1_1_texture_base.html#a6a63f0edcd4eabfb50c2be35d4c42bba">m_pDefaultDSV</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#ac39e3ed2439c28eecbde7b5e57a80bec"> 164</a></span>  std::unique_ptr<TTextureViewImpl, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>> <a class="code" href="class_diligent_1_1_texture_base.html#ac39e3ed2439c28eecbde7b5e57a80bec">m_pDefaultUAV</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a5fa5b07276e371a99eeb077ce62c06fc"> 167</a></span>  <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a>* <a class="code" href="class_diligent_1_1_texture_base.html#a5fa5b07276e371a99eeb077ce62c06fc">GetDefaultView</a>( <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> ViewType )<span class="keyword">override</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">switch</span>( ViewType )</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>: <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base.html#a422073618342c8734795dee260e8b5b7">m_pDefaultSRV</a>.get();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>: <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base.html#a6b84853e321ab2023d96a62ae1b71095">m_pDefaultRTV</a>.get();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>: <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base.html#a6a63f0edcd4eabfb50c2be35d4c42bba">m_pDefaultDSV</a>.get();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248">TEXTURE_VIEW_UNORDERED_ACCESS</a>: <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base.html#ac39e3ed2439c28eecbde7b5e57a80bec">m_pDefaultUAV</a>.get();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknown view type"</span> ); <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">void</span> CorrectTextureViewDesc( <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &ViewDesc );</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> };</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keywordtype">void</span> TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: CorrectTextureViewDesc(<span class="keyword">struct</span> TextureViewDesc &ViewDesc)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#define TEX_VIEW_VALIDATION_ERROR(...) LOG_ERROR_AND_THROW( "Texture view \"", ViewDesc.Name ? ViewDesc.Name : "", "\": ", ##__VA_ARGS__ )</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span>( !(ViewDesc.ViewType > <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf08182e262af9a13ffed563d3ae6a791">TEXTURE_VIEW_UNDEFINED</a> && ViewDesc.ViewType < <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdab5bd5c90bb6c469b63cffe7947832970">TEXTURE_VIEW_NUM_VIEWS</a>) )</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Texture view type is not specified"</span> );</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span>( ViewDesc.MostDetailedMip + ViewDesc.NumMipLevels > this->m_Desc.MipLevels )</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Most detailed mip ("</span>, ViewDesc.MostDetailedMip, <span class="stringliteral">") and number of mip levels in the view ("</span>, ViewDesc.NumMipLevels, <span class="stringliteral">") specify more levels than target texture has ("</span>, this->m_Desc.MipLevels, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span>( ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a> )</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  ViewDesc.Format = GetDefaultTextureViewFormat( this->m_Desc.Format, ViewDesc.ViewType, this->m_Desc.BindFlags );</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67af059ddcde8b1a3bf1c6f32f3b4865cfe">RESOURCE_DIM_UNDEFINED</a> )</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span> (this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> || this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a>)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">switch</span> (ViewDesc.ViewType)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>: </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  ViewDesc.TextureDim = this->m_Desc.Type;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>: </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>: </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248">TEXTURE_VIEW_UNORDERED_ACCESS</a>: </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  ViewDesc.TextureDim = <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unexpected view type"</span>);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  ViewDesc.TextureDim = this->m_Desc.Type;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">switch</span>( this->m_Desc.Type )</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>:</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a> )</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture 1D view: only Texture 1D is allowed"</span> );</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>:</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a> && </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a> )</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect view type for Texture 1D Array: only Texture 1D or Texture 1D Array are allowed"</span> );</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>:</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">if</span>(ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> )</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture 2D view: only Texture 2D is allowed"</span> );</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>:</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> && </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> )</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture 2D Array view: only Texture 2D or Texture 2D Array are allowed"</span> );</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>:</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a> )</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture 3D view: only Texture 3D is allowed"</span> );</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a>:</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span>(ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>(ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> &&</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> && </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a>)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture cube SRV: Texture 2D, Texture 2D array or Texture Cube is allowed"</span> );</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span>(ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> &&</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture cube non-shader resource view: Texture 2D or Texture 2D array is allowed"</span> );</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a>:</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">if</span>(ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span>(ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> &&</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> && </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> && </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a>)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture cube array SRV: Texture 2D, Texture 2D array, Texture Cube or Texture Cube Array is allowed"</span> );</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span>(ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> &&</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture cube array non-shader resource view: Texture 2D or Texture 2D array is allowed"</span> );</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  UNEXPECTED( <span class="stringliteral">"Unexpected texture type"</span> );</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span> ( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> )</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  VERIFY(ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Unexpected view type: SRV is expected"</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span>(ViewDesc.NumArraySlices != 6 && ViewDesc.NumArraySlices != 0)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Texture cube SRV is expected to have 6 array slices, while "</span>, ViewDesc.NumArraySlices, <span class="stringliteral">" is provided"</span> );</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span>(ViewDesc.FirstArraySlice != 0)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"First slice ("</span>, ViewDesc.FirstArraySlice, <span class="stringliteral">") must be 0 for non-array texture cube SRV"</span> );</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">if</span> ( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a> )</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  VERIFY(ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Unexpected view type: SRV is expected"</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">if</span>((ViewDesc.NumArraySlices % 6) != 0)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Number of slices in texture cube array SRV is expected to be multiple of 6. "</span>, ViewDesc.NumArraySlices, <span class="stringliteral">" slices provided."</span> );</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span> (ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a> ||</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span>(ViewDesc.FirstArraySlice != 0)</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"First slice ("</span>, ViewDesc.FirstArraySlice, <span class="stringliteral">") must be 0 for non-array texture 1D/2D views"</span> );</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">if</span>(ViewDesc.NumArraySlices > 1)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Number of slices in the view ("</span>, ViewDesc.NumArraySlices, <span class="stringliteral">") must be 1 (or 0) for non-array texture 1D/2D views"</span> );</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a> || </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> || </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> || </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a> )</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span>( ViewDesc.FirstArraySlice + ViewDesc.NumArraySlices > this->m_Desc.ArraySize )</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"First slice ("</span>, ViewDesc.FirstArraySlice, <span class="stringliteral">") and number of slices in the view ("</span>, ViewDesc.NumArraySlices, <span class="stringliteral">") specify more slices than target texture has ("</span>, this->m_Desc.ArraySize, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a> )</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">auto</span> MipDepth = this->m_Desc.Depth >> ViewDesc.MostDetailedMip;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span>( ViewDesc.FirstDepthSlice + ViewDesc.NumDepthSlices > MipDepth )</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"First slice ("</span>, ViewDesc.FirstDepthSlice, <span class="stringliteral">") and number of slices in the view ("</span>, ViewDesc.NumDepthSlices, <span class="stringliteral">") specify more slices than target 3D texture mip level has ("</span>, MipDepth, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  UNEXPECTED(<span class="stringliteral">"Unexpected texture dimension"</span>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor">#undef TEX_VIEW_VALIDATION_ERROR</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span>( ViewDesc.NumMipLevels == 0 )</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">if</span>( ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a> )</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  ViewDesc.NumMipLevels = this->m_Desc.MipLevels - ViewDesc.MostDetailedMip;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  ViewDesc.NumMipLevels = 1;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">if</span>( ViewDesc.NumArraySlices == 0 )</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a> || </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> || </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> || </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a> )</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  ViewDesc.NumArraySlices = this->m_Desc.ArraySize - ViewDesc.FirstArraySlice;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a> )</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keyword">auto</span> MipDepth = this->m_Desc.Depth >> ViewDesc.MostDetailedMip;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  ViewDesc.NumDepthSlices = MipDepth - ViewDesc.FirstDepthSlice;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  ViewDesc.NumArraySlices = 1;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span>( (ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>) && </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  ( ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7340ccaf1e5bb4da97f53f9dc9cdaede">TEX_FORMAT_R8_SNORM</a> || ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a981eca1860bc430747e5f2107c3668d4">TEX_FORMAT_RG8_SNORM</a> || ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee7096ae28505b3d8a5a3b35dd6a6137">TEX_FORMAT_RGBA8_SNORM</a> ||</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0611b4b06d9f2395dc9cb22352f3e0e0">TEX_FORMAT_R16_SNORM</a> || ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7f9b08e92d01fa0d05415a50949f7988">TEX_FORMAT_RG16_SNORM</a> || ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a71b0ad28b1acc91bc51c7313d981d116">TEX_FORMAT_RGBA16_SNORM</a> ) )</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keyword">const</span> <span class="keyword">auto</span> *FmtName = GetTextureFormatAttribs( ViewDesc.Format ).Name;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  LOG_WARNING_MESSAGE( FmtName, <span class="stringliteral">" render target view is created.\n"</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="stringliteral">"There might be an issue in OpenGL driver on NVidia hardware: when rendering to SNORM textures, all negative values are clamped to zero.\n"</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="stringliteral">"Use UNORM format instead."</span> );</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a832ba2a8e7a76ad9c0f349c839c1dbda"> 388</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a832ba2a8e7a76ad9c0f349c839c1dbda">TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: CreateDefaultViews</a>()</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& TexFmtAttribs = GetTextureFormatAttribs(this->m_Desc.Format);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">if</span> (TexFmtAttribs.ComponentType == <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cae0b3fdc5523e496fa7c4bbf417b4ad90">COMPONENT_TYPE_UNDEFINED</a>)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="comment">// Cannot create default view for TYPELESS formats</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">if</span>(this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a> )</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> ViewDesc;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> = <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pSRV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  CreateViewInternal( ViewDesc, &pSRV, <span class="keyword">true</span> );</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  m_pDefaultSRV.reset( static_cast<TTextureViewImpl*>(pSRV) );</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  VERIFY( m_pDefaultSRV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span>(this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">BIND_RENDER_TARGET</a> )</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> ViewDesc;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> = <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pRTV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  CreateViewInternal( ViewDesc, &pRTV, <span class="keyword">true</span> );</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  m_pDefaultRTV.reset( static_cast<TTextureViewImpl*>(pRTV) );</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  VERIFY( m_pDefaultRTV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span>(this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08">BIND_DEPTH_STENCIL</a> )</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> ViewDesc;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> = <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDSV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  CreateViewInternal( ViewDesc, &pDSV, <span class="keyword">true</span> );</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  m_pDefaultDSV.reset( static_cast<TTextureViewImpl*>(pDSV) );</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  VERIFY( m_pDefaultDSV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">if</span>(this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a> )</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> ViewDesc;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> = <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248">TEXTURE_VIEW_UNORDERED_ACCESS</a>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a> = <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5a25a679f6814bcfb15998ba9e33077160">UAV_ACCESS_FLAG_READ_WRITE</a>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pUAV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  CreateViewInternal( ViewDesc, &pUAV, <span class="keyword">true</span> );</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  m_pDefaultUAV.reset( static_cast<TTextureViewImpl*>(pUAV) );</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  VERIFY( m_pDefaultUAV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248">TEXTURE_VIEW_UNORDERED_ACCESS</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a8ebdab4ab9ffafd8fbf2470b74ee161f"> 441</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a8ebdab4ab9ffafd8fbf2470b74ee161f">TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> &SubresData )</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  ValidateUpdateDataParams( this->m_Desc, MipLevel, Slice, DstBox, SubresData );</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a614420569d09b39f90231181769b7d55"> 447</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a614420569d09b39f90231181769b7d55">TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext,</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pSrcTexture,</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> *pSrcBox,</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  Uint32 DstSlice,</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  Uint32 DstX,</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  Uint32 DstY,</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  Uint32 DstZ )</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  VERIFY( pContext, <span class="stringliteral">"pContext is null"</span> );</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  VERIFY( pSrcTexture, <span class="stringliteral">"pSrcTexture is null"</span> );</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  VliadateCopyTextureDataParams( pSrcTexture-><a class="code" href="class_diligent_1_1_i_texture.html#af98b320201b52d87b4c3e280a93d5e97">GetDesc</a>(), SrcMipLevel, SrcSlice, pSrcBox,</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  this->GetDesc(), DstMipLevel, DstSlice, DstX, DstY, DstZ );</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a9304ec9edb52c699cf958b51804fc532"> 465</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a9304ec9edb52c699cf958b51804fc532">TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData )</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00470"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#ad1136237abd271ed16feb7972185b0fd"> 470</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#ad1136237abd271ed16feb7972185b0fd">TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> }</div><div class="ttc" id="namespace_diligent_html_aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9"><div class="ttname"><a href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">Diligent::RESOURCE_DIM_TEX_CUBE</a></div><div class="ttdoc">Cube-map texture. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:181</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">void</span> ValidateTextureDesc(<span class="keyword">const</span> TextureDesc& TexDesc);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">void</span> ValidateUpdateDataParams( <span class="keyword">const</span> TextureDesc &TexDesc, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData );</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">void</span> VliadateCopyTextureDataParams( <span class="keyword">const</span> TextureDesc &SrcTexDesc, Uint32 SrcMipLevel, Uint32 SrcSlice, <span class="keyword">const</span> Box *pSrcBox,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> TextureDesc &DstTexDesc, Uint32 DstMipLevel, Uint32 DstSlice,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Uint32 DstX, Uint32 DstY, Uint32 DstZ );</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html"> 52</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_base.html">TextureBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, TextureDesc></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, TextureDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#ab57ba2c59cef18b9a9a1b5d265108271"> 64</a></span>  <a class="code" href="class_diligent_1_1_texture_base.html#ab57ba2c59cef18b9a9a1b5d265108271">TextureBase</a>( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  TTexViewObjAllocator &TexViewObjAllocator,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& Desc, </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> ) :</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, Desc, bIsDeviceInternal ),</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> #ifdef _DEBUG</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_dbgTexViewObjAllocator(TexViewObjAllocator),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> #endif</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="class_diligent_1_1_texture_base.html#a422073618342c8734795dee260e8b5b7">m_pDefaultSRV</a>(nullptr, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>(TexViewObjAllocator)),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="class_diligent_1_1_texture_base.html#a6b84853e321ab2023d96a62ae1b71095">m_pDefaultRTV</a>(nullptr, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>(TexViewObjAllocator)),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_texture_base.html#a6a63f0edcd4eabfb50c2be35d4c42bba">m_pDefaultDSV</a>(nullptr, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>(TexViewObjAllocator)),</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="class_diligent_1_1_texture_base.html#ac39e3ed2439c28eecbde7b5e57a80bec">m_pDefaultUAV</a>(nullptr, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>(TexViewObjAllocator))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> == 0 )</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Compute the number of levels in the full mipmap chain</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a> == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a> ||</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a> )</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> = ComputeMipLevelsCount(this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a> == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> ||</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> || </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> || </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a> )</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  { </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> = ComputeMipLevelsCount( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a>, this->m_Desc.Height );</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#ac2f19e2db2d62d58ecaae3b0f1c35490">Type</a> == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a> )</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a3e1b9f6489054523bfeb0252071cf997">MipLevels</a> = ComputeMipLevelsCount( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_desc.html#a9726140fc14cf4b4c0a274a2c5322709">Width</a>, this->m_Desc.Height, this->m_Desc.Depth );</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  UNEXPECTED( <span class="stringliteral">"Unkwnown texture type"</span> );</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Validate correctness of texture description</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  ValidateTextureDesc( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a> );</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_Texture, TDeviceObjectBase )</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#ac01f2d9b9d68038be0f307be08f25d07">CreateView</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &ViewDesc, <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppView )<span class="keyword">override</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="class_diligent_1_1_texture_base.html#a3e8b435697f7083e4e7454dcb214f3f5">CreateViewInternal</a>( ViewDesc, ppView, <span class="keyword">false</span> );</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a8ebdab4ab9ffafd8fbf2470b74ee161f">UpdateData</a>( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a614420569d09b39f90231181769b7d55">CopyData</a>( IDeviceContext *pContext,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  ITexture *pSrcTexture,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">const</span> Box *pSrcBox,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  Uint32 DstSlice,</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  Uint32 DstX,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Uint32 DstY,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  Uint32 DstZ )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a9304ec9edb52c699cf958b51804fc532">Map</a>( IDeviceContext *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#ad1136237abd271ed16feb7972185b0fd">Unmap</a>( IDeviceContext *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span> = 0;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a832ba2a8e7a76ad9c0f349c839c1dbda">CreateDefaultViews</a>();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a3e8b435697f7083e4e7454dcb214f3f5">CreateViewInternal</a>( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc &ViewDesc, ITextureView **ppView, <span class="keywordtype">bool</span> bIsDefaultView ) = 0;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  TTexViewObjAllocator &m_dbgTexViewObjAllocator;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// WARNING! We cannot use ITextureView here, because ITextureView has no virtual dtor!</span></div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a422073618342c8734795dee260e8b5b7"> 158</a></span> <span class="comment"></span> std::unique_ptr<TTextureViewImpl, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>> <a class="code" href="class_diligent_1_1_texture_base.html#a422073618342c8734795dee260e8b5b7">m_pDefaultSRV</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a6b84853e321ab2023d96a62ae1b71095"> 160</a></span>  std::unique_ptr<TTextureViewImpl, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>> <a class="code" href="class_diligent_1_1_texture_base.html#a6b84853e321ab2023d96a62ae1b71095">m_pDefaultRTV</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a6a63f0edcd4eabfb50c2be35d4c42bba"> 162</a></span>  std::unique_ptr<TTextureViewImpl, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>> <a class="code" href="class_diligent_1_1_texture_base.html#a6a63f0edcd4eabfb50c2be35d4c42bba">m_pDefaultDSV</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#ac39e3ed2439c28eecbde7b5e57a80bec"> 164</a></span>  std::unique_ptr<TTextureViewImpl, STDDeleter<TTextureViewImpl, TTexViewObjAllocator>> <a class="code" href="class_diligent_1_1_texture_base.html#ac39e3ed2439c28eecbde7b5e57a80bec">m_pDefaultUAV</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a5fa5b07276e371a99eeb077ce62c06fc"> 167</a></span>  <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a>* <a class="code" href="class_diligent_1_1_texture_base.html#a5fa5b07276e371a99eeb077ce62c06fc">GetDefaultView</a>( <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> ViewType )<span class="keyword">override</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">switch</span>( ViewType )</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>: <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base.html#a422073618342c8734795dee260e8b5b7">m_pDefaultSRV</a>.get();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>: <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base.html#a6b84853e321ab2023d96a62ae1b71095">m_pDefaultRTV</a>.get();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>: <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base.html#a6a63f0edcd4eabfb50c2be35d4c42bba">m_pDefaultDSV</a>.get();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248">TEXTURE_VIEW_UNORDERED_ACCESS</a>: <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base.html#ac39e3ed2439c28eecbde7b5e57a80bec">m_pDefaultUAV</a>.get();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">default</span>: UNEXPECTED( <span class="stringliteral">"Unknown view type"</span> ); <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">void</span> CorrectTextureViewDesc( <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &ViewDesc );</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> };</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keywordtype">void</span> TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: CorrectTextureViewDesc(<span class="keyword">struct</span> TextureViewDesc &ViewDesc)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#define TEX_VIEW_VALIDATION_ERROR(...) LOG_ERROR_AND_THROW( "Texture view \"", ViewDesc.Name ? ViewDesc.Name : "", "\": ", ##__VA_ARGS__ )</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span>( !(ViewDesc.ViewType > <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf08182e262af9a13ffed563d3ae6a791">TEXTURE_VIEW_UNDEFINED</a> && ViewDesc.ViewType < <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdab5bd5c90bb6c469b63cffe7947832970">TEXTURE_VIEW_NUM_VIEWS</a>) )</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Texture view type is not specified"</span> );</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span>( ViewDesc.MostDetailedMip + ViewDesc.NumMipLevels > this->m_Desc.MipLevels )</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Most detailed mip ("</span>, ViewDesc.MostDetailedMip, <span class="stringliteral">") and number of mip levels in the view ("</span>, ViewDesc.NumMipLevels, <span class="stringliteral">") specify more levels than target texture has ("</span>, this->m_Desc.MipLevels, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span>( ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a> )</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  ViewDesc.Format = GetDefaultTextureViewFormat( this->m_Desc.Format, ViewDesc.ViewType, this->m_Desc.BindFlags );</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67af059ddcde8b1a3bf1c6f32f3b4865cfe">RESOURCE_DIM_UNDEFINED</a> )</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span> (this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> || this->m_Desc.Type == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a>)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">switch</span> (ViewDesc.ViewType)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>: </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  ViewDesc.TextureDim = this->m_Desc.Type;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>: </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>: </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248">TEXTURE_VIEW_UNORDERED_ACCESS</a>: </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  ViewDesc.TextureDim = <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">default</span>: UNEXPECTED(<span class="stringliteral">"Unexpected view type"</span>);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  ViewDesc.TextureDim = this->m_Desc.Type;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">switch</span>( this->m_Desc.Type )</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a>:</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a> )</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture 1D view: only Texture 1D is allowed"</span> );</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a>:</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a> && </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a> )</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect view type for Texture 1D Array: only Texture 1D or Texture 1D Array are allowed"</span> );</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>:</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">if</span>(ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> )</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture 2D view: only Texture 2D is allowed"</span> );</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>:</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> && </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> )</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture 2D Array view: only Texture 2D or Texture 2D Array are allowed"</span> );</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a>:</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a> )</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture 3D view: only Texture 3D is allowed"</span> );</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a>:</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span>(ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>(ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> &&</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> && </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a>)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture cube SRV: Texture 2D, Texture 2D array or Texture Cube is allowed"</span> );</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span>(ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> &&</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture cube non-shader resource view: Texture 2D or Texture 2D array is allowed"</span> );</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">case</span> <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a>:</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">if</span>(ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span>(ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> &&</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> && </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> && </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a>)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture cube array SRV: Texture 2D, Texture 2D array, Texture Cube or Texture Cube Array is allowed"</span> );</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span>(ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a> &&</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  ViewDesc.TextureDim != <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a>)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Incorrect texture type for Texture cube array non-shader resource view: Texture 2D or Texture 2D array is allowed"</span> );</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  UNEXPECTED( <span class="stringliteral">"Unexpected texture type"</span> );</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span> ( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> )</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  VERIFY(ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Unexpected view type: SRV is expected"</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span>(ViewDesc.NumArraySlices != 6 && ViewDesc.NumArraySlices != 0)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Texture cube SRV is expected to have 6 array slices, while "</span>, ViewDesc.NumArraySlices, <span class="stringliteral">" is provided"</span> );</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span>(ViewDesc.FirstArraySlice != 0)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"First slice ("</span>, ViewDesc.FirstArraySlice, <span class="stringliteral">") must be 0 for non-array texture cube SRV"</span> );</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">if</span> ( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a> )</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  VERIFY(ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Unexpected view type: SRV is expected"</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">if</span>((ViewDesc.NumArraySlices % 6) != 0)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Number of slices in texture cube array SRV is expected to be multiple of 6. "</span>, ViewDesc.NumArraySlices, <span class="stringliteral">" slices provided."</span> );</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span> (ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a1e2fafd112b4c4578d9a8eff40218cfa">RESOURCE_DIM_TEX_1D</a> ||</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">RESOURCE_DIM_TEX_2D</a>)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span>(ViewDesc.FirstArraySlice != 0)</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"First slice ("</span>, ViewDesc.FirstArraySlice, <span class="stringliteral">") must be 0 for non-array texture 1D/2D views"</span> );</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">if</span>(ViewDesc.NumArraySlices > 1)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"Number of slices in the view ("</span>, ViewDesc.NumArraySlices, <span class="stringliteral">") must be 1 (or 0) for non-array texture 1D/2D views"</span> );</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a> || </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> || </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> || </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a> )</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span>( ViewDesc.FirstArraySlice + ViewDesc.NumArraySlices > this->m_Desc.ArraySize )</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"First slice ("</span>, ViewDesc.FirstArraySlice, <span class="stringliteral">") and number of slices in the view ("</span>, ViewDesc.NumArraySlices, <span class="stringliteral">") specify more slices than target texture has ("</span>, this->m_Desc.ArraySize, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a> )</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">auto</span> MipDepth = this->m_Desc.Depth >> ViewDesc.MostDetailedMip;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span>( ViewDesc.FirstDepthSlice + ViewDesc.NumDepthSlices > MipDepth )</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  TEX_VIEW_VALIDATION_ERROR( <span class="stringliteral">"First slice ("</span>, ViewDesc.FirstDepthSlice, <span class="stringliteral">") and number of slices in the view ("</span>, ViewDesc.NumDepthSlices, <span class="stringliteral">") specify more slices than target 3D texture mip level has ("</span>, MipDepth, <span class="stringliteral">")"</span> );</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  UNEXPECTED(<span class="stringliteral">"Unexpected texture dimension"</span>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor">#undef TEX_VIEW_VALIDATION_ERROR</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span>( ViewDesc.NumMipLevels == 0 )</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">if</span>( ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a> )</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  ViewDesc.NumMipLevels = this->m_Desc.MipLevels - ViewDesc.MostDetailedMip;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  ViewDesc.NumMipLevels = 1;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">if</span>( ViewDesc.NumArraySlices == 0 )</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span>( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a0307953fa536e87c4a7a2995a3cbc346">RESOURCE_DIM_TEX_1D_ARRAY</a> || </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67aba30654de202e4d748a6d4b4a7214efd">RESOURCE_DIM_TEX_2D_ARRAY</a> || </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">RESOURCE_DIM_TEX_CUBE</a> || </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a733c51d86d7108d6dc0811aebb583337">RESOURCE_DIM_TEX_CUBE_ARRAY</a> )</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  ViewDesc.NumArraySlices = this->m_Desc.ArraySize - ViewDesc.FirstArraySlice;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>( ViewDesc.TextureDim == <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac6cac31ad017cb986d0acb9775900d89">RESOURCE_DIM_TEX_3D</a> )</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keyword">auto</span> MipDepth = this->m_Desc.Depth >> ViewDesc.MostDetailedMip;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  ViewDesc.NumDepthSlices = MipDepth - ViewDesc.FirstDepthSlice;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  ViewDesc.NumArraySlices = 1;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span>( (ViewDesc.ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>) && </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  ( ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7340ccaf1e5bb4da97f53f9dc9cdaede">TEX_FORMAT_R8_SNORM</a> || ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a981eca1860bc430747e5f2107c3668d4">TEX_FORMAT_RG8_SNORM</a> || ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465aee7096ae28505b3d8a5a3b35dd6a6137">TEX_FORMAT_RGBA8_SNORM</a> ||</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a0611b4b06d9f2395dc9cb22352f3e0e0">TEX_FORMAT_R16_SNORM</a> || ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a7f9b08e92d01fa0d05415a50949f7988">TEX_FORMAT_RG16_SNORM</a> || ViewDesc.Format == <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465a71b0ad28b1acc91bc51c7313d981d116">TEX_FORMAT_RGBA16_SNORM</a> ) )</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keyword">const</span> <span class="keyword">auto</span> *FmtName = GetTextureFormatAttribs( ViewDesc.Format ).Name;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  LOG_WARNING_MESSAGE( FmtName, <span class="stringliteral">" render target view is created.\n"</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="stringliteral">"There might be an issue in OpenGL driver on NVidia hardware: when rendering to SNORM textures, all negative values are clamped to zero.\n"</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="stringliteral">"Use UNORM format instead."</span> );</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a832ba2a8e7a76ad9c0f349c839c1dbda"> 388</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a832ba2a8e7a76ad9c0f349c839c1dbda">TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: CreateDefaultViews</a>()</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& TexFmtAttribs = GetTextureFormatAttribs(this->m_Desc.Format);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">if</span> (TexFmtAttribs.ComponentType == <a class="code" href="namespace_diligent.html#ad488f0b4140addfa16d24580ee85476cae0b3fdc5523e496fa7c4bbf417b4ad90">COMPONENT_TYPE_UNDEFINED</a>)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="comment">// Cannot create default view for TYPELESS formats</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">if</span>(this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaef09415507884d7beea9a716e824a138">BIND_SHADER_RESOURCE</a> )</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> ViewDesc;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> = <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pSRV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  CreateViewInternal( ViewDesc, &pSRV, <span class="keyword">true</span> );</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  m_pDefaultSRV.reset( static_cast<TTextureViewImpl*>(pSRV) );</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  VERIFY( m_pDefaultSRV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span>(this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcea4154c60d5487f7cded7fc1ef4a1bba89">BIND_RENDER_TARGET</a> )</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> ViewDesc;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> = <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pRTV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  CreateViewInternal( ViewDesc, &pRTV, <span class="keyword">true</span> );</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  m_pDefaultRTV.reset( static_cast<TTextureViewImpl*>(pRTV) );</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  VERIFY( m_pDefaultRTV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdae7e090499e01b1aa0e57e7d71c9e7d22">TEXTURE_VIEW_RENDER_TARGET</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span>(this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbcead7245b76139a33a218e237afc6748b08">BIND_DEPTH_STENCIL</a> )</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> ViewDesc;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> = <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pDSV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  CreateViewInternal( ViewDesc, &pDSV, <span class="keyword">true</span> );</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  m_pDefaultDSV.reset( static_cast<TTextureViewImpl*>(pDSV) );</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  VERIFY( m_pDefaultDSV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf974362f40fbd2a6062e8220124a86aa">TEXTURE_VIEW_DEPTH_STENCIL</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">if</span>(this->m_Desc.BindFlags & <a class="code" href="namespace_diligent.html#ad748ff5bd670e021d6e29182b530cbceaf4c7e9aeccba22f01ef46f348551fd0c">BIND_UNORDERED_ACCESS</a> )</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> ViewDesc;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> = <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248">TEXTURE_VIEW_UNORDERED_ACCESS</a>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  ViewDesc.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a> = <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5a25a679f6814bcfb15998ba9e33077160">UAV_ACCESS_FLAG_READ_WRITE</a>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> *pUAV = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  CreateViewInternal( ViewDesc, &pUAV, <span class="keyword">true</span> );</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  m_pDefaultUAV.reset( static_cast<TTextureViewImpl*>(pUAV) );</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  VERIFY( m_pDefaultUAV->GetDesc().ViewType == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bda54fbca78137e0827e5691c21dde2d248">TEXTURE_VIEW_UNORDERED_ACCESS</a>, <span class="stringliteral">"Unexpected view type"</span> );</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a8ebdab4ab9ffafd8fbf2470b74ee161f"> 441</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a8ebdab4ab9ffafd8fbf2470b74ee161f">TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> &SubresData )</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  ValidateUpdateDataParams( this->m_Desc, MipLevel, Slice, DstBox, SubresData );</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a614420569d09b39f90231181769b7d55"> 447</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a614420569d09b39f90231181769b7d55">TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: CopyData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext,</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pSrcTexture,</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> *pSrcBox,</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  Uint32 DstSlice,</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  Uint32 DstX,</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  Uint32 DstY,</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  Uint32 DstZ )</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  VERIFY( pContext, <span class="stringliteral">"pContext is null"</span> );</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  VERIFY( pSrcTexture, <span class="stringliteral">"pSrcTexture is null"</span> );</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  VliadateCopyTextureDataParams( pSrcTexture-><a class="code" href="class_diligent_1_1_i_texture.html#af98b320201b52d87b4c3e280a93d5e97">GetDesc</a>(), SrcMipLevel, SrcSlice, pSrcBox,</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  this->GetDesc(), DstMipLevel, DstSlice, DstX, DstY, DstZ );</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#a9304ec9edb52c699cf958b51804fc532"> 465</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#a9304ec9edb52c699cf958b51804fc532">TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData )</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface, <span class="keyword">class</span> TTextureViewImpl, <span class="keyword">class</span> TTexViewObjAllocator></div><div class="line"><a name="l00470"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base.html#ad1136237abd271ed16feb7972185b0fd"> 470</a></span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base.html#ad1136237abd271ed16feb7972185b0fd">TextureBase<BaseInterface, TTextureViewImpl, TTexViewObjAllocator> :: Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> }</div><div class="ttc" id="namespace_diligent_html_aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9"><div class="ttname"><a href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67a2880d013561aef98ce197ef491adfbe9">Diligent::RESOURCE_DIM_TEX_CUBE</a></div><div class="ttdoc">Cube-map texture. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:181</div></div> <div class="ttc" id="class_diligent_1_1_texture_base_html_ad1136237abd271ed16feb7972185b0fd"><div class="ttname"><a href="class_diligent_1_1_texture_base.html#ad1136237abd271ed16feb7972185b0fd">Diligent::TextureBase::Unmap</a></div><div class="ttdeci">virtual void Unmap(IDeviceContext *pContext, Uint32 Subresource, MAP_TYPE MapType, Uint32 MapFlags) override=0</div><div class="ttdoc">Base implementaiton of ITexture::Unmap() </div><div class="ttdef"><b>Definition:</b> TextureBase.h:470</div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="namespace_diligent_html_aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c"><div class="ttname"><a href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67ac647e0be625f3b5724ae5bf26130969c">Diligent::RESOURCE_DIM_TEX_2D</a></div><div class="ttdoc">Two-dimensional texture. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:178</div></div> @@ -134,7 +134,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_base_d3_d11_8h_source.html b/doc/html/_texture_base_d3_d11_8h_source.html index 064b34b7..84facc39 100644 --- a/doc/html/_texture_base_d3_d11_8h_source.html +++ b/doc/html/_texture_base_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureBaseD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "TextureViewD3D11Impl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">enum class</span> D3D11TextureState</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Undefined = 0x0,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ShaderResource = 0x1,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  RenderTarget = 0x2,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  DepthStencil = 0x4,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  UnorderedAccess = 0x8,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  Output = RenderTarget | DepthStencil | UnorderedAccess</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_d3_d11.html"> 50</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase</a><ITextureD3D11, TextureViewD3D11Impl, FixedBlockMemoryAllocator></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase<ITextureD3D11, TextureViewD3D11Impl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_texture_base.html">TTextureBase</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ~<a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a>();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a311d0bd5513e2f1c688d86c7383421a7">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a170da425e02469cadc16939a9fa7aeb4">UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">//virtual void CopyData(CTexture *pSrcTexture, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size);</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#aef90cfa2cb64f8478dc1e5da263a88ff">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a1befa21d692561ad8143f33c80c3b2bd">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_d3_d11.html#afb680998c917c0311d6d495f99ab109a"> 70</a></span>  <span class="keyword">virtual</span> ID3D11Resource* <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#afb680998c917c0311d6d495f99ab109a">GetD3D11Texture</a>()override final{ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a681cce9a4730459dbb10871d4ab7c401">m_pd3d11Texture</a>; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_d3_d11.html#a1f2c2db637a93b0c5b07b7e01f0524f9"> 72</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a1f2c2db637a93b0c5b07b7e01f0524f9">GetNativeHandle</a>()override final { <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#afb680998c917c0311d6d495f99ab109a">GetD3D11Texture</a>(); }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a4d74db98d7ded0d72ba992afc93b34f8">CopyData</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pSrcTexture, </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> *pSrcBox,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint32 DstSlice,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Uint32 DstX,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  Uint32 DstY,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  Uint32 DstZ);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> ResetState(D3D11TextureState State){m_State = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(State);}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> AddState(D3D11TextureState State){m_State |= <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(State);}</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> ClearState(D3D11TextureState State){m_State &= ~static_cast<Uint32>(State);}</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">bool</span> CheckState(D3D11TextureState State){<span class="keywordflow">return</span> (m_State & static_cast<Uint32>(State)) ? true : <span class="keyword">false</span>;}</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a7287d949e2502d56e237fe6183cf3c41">CreateViewInternal</a>( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc &ViewDesc, ITextureView **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">void</span> PrepareD3D11InitData(<span class="keyword">const</span> TextureData &InitData, Uint32 NumSubresources, </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  std::vector<D3D11_SUBRESOURCE_DATA, STDAllocatorRawMem<D3D11_SUBRESOURCE_DATA> > &D3D11InitData);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSRV( TextureViewDesc &SRVDesc, ID3D11ShaderResourceView **ppD3D11SRV ) = 0;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateRTV( TextureViewDesc &RTVDesc, ID3D11RenderTargetView **ppD3D11RTV ) = 0;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDSV( TextureViewDesc &DSVDesc, ID3D11DepthStencilView **ppD3D11DSV ) = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateUAV( TextureViewDesc &UAVDesc, ID3D11UnorderedAccessView **ppD3D11UAV ) = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">friend</span> <span class="keyword">class </span>RenderDeviceD3D11Impl;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_d3_d11.html#a681cce9a4730459dbb10871d4ab7c401"> 102</a></span>  CComPtr<ID3D11Resource> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a681cce9a4730459dbb10871d4ab7c401">m_pd3d11Texture</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Uint32 m_State = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(D3D11TextureState::Undefined);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="ttc" id="class_diligent_1_1_texture_base_d3_d11_html_a311d0bd5513e2f1c688d86c7383421a7"><div class="ttname"><a href="class_diligent_1_1_texture_base_d3_d11.html#a311d0bd5513e2f1c688d86c7383421a7">Diligent::TextureBaseD3D11::QueryInterface</a></div><div class="ttdeci">virtual void QueryInterface(const Diligent::INTERFACE_ID &IID, IObject **ppInterface) override final</div><div class="ttdoc">Queries the specific interface, see IObject::QueryInterface() for details. </div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "TextureViewD3D11Impl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">enum class</span> D3D11TextureState</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Undefined = 0x0,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ShaderResource = 0x1,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  RenderTarget = 0x2,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  DepthStencil = 0x4,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  UnorderedAccess = 0x8,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  Output = RenderTarget | DepthStencil | UnorderedAccess</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_d3_d11.html"> 50</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase</a><ITextureD3D11, TextureViewD3D11Impl, FixedBlockMemoryAllocator></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase<ITextureD3D11, TextureViewD3D11Impl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_texture_base.html">TTextureBase</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d11_impl.html">RenderDeviceD3D11Impl</a> *pDeviceD3D11, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ~<a class="code" href="class_diligent_1_1_texture_base_d3_d11.html">TextureBaseD3D11</a>();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a311d0bd5513e2f1c688d86c7383421a7">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a170da425e02469cadc16939a9fa7aeb4">UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">//virtual void CopyData(CTexture *pSrcTexture, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size);</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#aef90cfa2cb64f8478dc1e5da263a88ff">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a1befa21d692561ad8143f33c80c3b2bd">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_d3_d11.html#afb680998c917c0311d6d495f99ab109a"> 70</a></span>  <span class="keyword">virtual</span> ID3D11Resource* <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#afb680998c917c0311d6d495f99ab109a">GetD3D11Texture</a>()override final{ <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a681cce9a4730459dbb10871d4ab7c401">m_pd3d11Texture</a>; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_d3_d11.html#a1f2c2db637a93b0c5b07b7e01f0524f9"> 72</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a1f2c2db637a93b0c5b07b7e01f0524f9">GetNativeHandle</a>()override final { <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#afb680998c917c0311d6d495f99ab109a">GetD3D11Texture</a>(); }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a4d74db98d7ded0d72ba992afc93b34f8">CopyData</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pSrcTexture, </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> *pSrcBox,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint32 DstSlice,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Uint32 DstX,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  Uint32 DstY,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  Uint32 DstZ);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> ResetState(D3D11TextureState State){m_State = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(State);}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> AddState(D3D11TextureState State){m_State |= <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(State);}</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> ClearState(D3D11TextureState State){m_State &= ~static_cast<Uint32>(State);}</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">bool</span> CheckState(D3D11TextureState State){<span class="keywordflow">return</span> (m_State & static_cast<Uint32>(State)) ? true : <span class="keyword">false</span>;}</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a7287d949e2502d56e237fe6183cf3c41">CreateViewInternal</a>( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc &ViewDesc, ITextureView **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">void</span> PrepareD3D11InitData(<span class="keyword">const</span> TextureData &InitData, Uint32 NumSubresources, </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  std::vector<D3D11_SUBRESOURCE_DATA, STDAllocatorRawMem<D3D11_SUBRESOURCE_DATA> > &D3D11InitData);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateSRV( TextureViewDesc &SRVDesc, ID3D11ShaderResourceView **ppD3D11SRV ) = 0;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateRTV( TextureViewDesc &RTVDesc, ID3D11RenderTargetView **ppD3D11RTV ) = 0;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateDSV( TextureViewDesc &DSVDesc, ID3D11DepthStencilView **ppD3D11DSV ) = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateUAV( TextureViewDesc &UAVDesc, ID3D11UnorderedAccessView **ppD3D11UAV ) = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">friend</span> <span class="keyword">class </span>RenderDeviceD3D11Impl;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_d3_d11.html#a681cce9a4730459dbb10871d4ab7c401"> 102</a></span>  CComPtr<ID3D11Resource> <a class="code" href="class_diligent_1_1_texture_base_d3_d11.html#a681cce9a4730459dbb10871d4ab7c401">m_pd3d11Texture</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Uint32 m_State = <span class="keyword">static_cast<</span>Uint32<span class="keyword">></span>(D3D11TextureState::Undefined);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> }</div><div class="ttc" id="class_diligent_1_1_texture_base_d3_d11_html_a311d0bd5513e2f1c688d86c7383421a7"><div class="ttname"><a href="class_diligent_1_1_texture_base_d3_d11.html#a311d0bd5513e2f1c688d86c7383421a7">Diligent::TextureBaseD3D11::QueryInterface</a></div><div class="ttdeci">virtual void QueryInterface(const Diligent::INTERFACE_ID &IID, IObject **ppInterface) override final</div><div class="ttdoc">Queries the specific interface, see IObject::QueryInterface() for details. </div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_texture_base_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_d3_d11.html">Diligent::TextureBaseD3D11</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureD3D11 interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseD3D11.h:50</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -95,7 +95,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_base_g_l_8h_source.html b/doc/html/_texture_base_g_l_8h_source.html index 5af6d1a6..29172f48 100644 --- a/doc/html/_texture_base_g_l_8h_source.html +++ b/doc/html/_texture_base_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureBaseGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "TextureGL.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "TextureBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureViewGLImpl.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "AsyncWritableResource.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_g_l.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase</a><ITextureGL, TextureViewGLImpl, FixedBlockMemoryAllocator>, <span class="keyword">public</span> AsyncWritableResource</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase<ITextureGL, TextureViewGLImpl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_texture_base.html">TTextureBase</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>& TexViewObjAllocator, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a> &TexDesc, </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  GLenum BindTarget,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>(), </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>& TexViewObjAllocator, </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a> *pDeviceContext, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLenum BindTarget,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ~<a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a6e0a428ffb29fc093f4bd97053632fee">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( <span class="keyword">class</span> GLContextState &CtxState, <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> &SubresData );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">//virtual void CopyData(CTexture *pSrcTexture, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size);</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a34a1a8a070f02497414b84322449d4b9">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData )<span class="keyword">override</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a771d0fa96be08e567b09cb22dfe9cf83">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">const</span> GLObjectWrappers::GLTextureObj& GetGLHandle()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_GlTexture; }</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_g_l.html#a966d0dd2dd0110a2059e88c2dad9aee5"> 74</a></span>  <span class="keyword">virtual</span> GLenum <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a966d0dd2dd0110a2059e88c2dad9aee5">GetBindTarget</a>()const override final{<span class="keywordflow">return</span> m_BindTarget;}</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  GLenum GetGLTexFormat()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_GLTexFormat; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> TextureMemoryBarrier( Uint32 RequiredBarriers, <span class="keyword">class</span> GLContextState &GLContextState);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer(<span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint) = 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html#ae087c0ba29cd6813842a385abdf21537">CopyData</a>(IDeviceContext *pContext, </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  ITexture *pSrcTexture, </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> Box *pSrcBox,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  Uint32 DstSlice,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  Uint32 DstX,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Uint32 DstY,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  Uint32 DstZ)<span class="keyword">override</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_g_l.html#a2d74593340bf951750df5169ece8ff20"> 92</a></span>  <span class="keyword">virtual</span> GLuint <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a2d74593340bf951750df5169ece8ff20">GetGLTextureHandle</a>()override final { <span class="keywordflow">return</span> GetGLHandle(); }</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_g_l.html#a3f9de3628ca90e93a9c11142981dc840"> 93</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a3f9de3628ca90e93a9c11142981dc840">GetNativeHandle</a>()override final { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(<a class="code" href="class_diligent_1_1_texture_base_g_l.html#a2d74593340bf951750df5169ece8ff20">GetGLTextureHandle</a>())); }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a61a5b0b884668fc6c932f8cba9da2a18">CreateViewInternal</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &ViewDesc, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">void</span> SetDefaultGLParameters();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  GLObjectWrappers::GLTextureObj m_GlTexture;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">const</span> GLenum m_BindTarget;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> GLenum m_GLTexFormat;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">//Uint32 m_uiMapTarget;</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="ttc" id="class_diligent_1_1_texture_base_g_l_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_g_l.html">Diligent::TextureBaseGL</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureGL interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseGL.h:41</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "TextureGL.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "TextureBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureViewGLImpl.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "AsyncWritableResource.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_g_l.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase</a><ITextureGL, TextureViewGLImpl, FixedBlockMemoryAllocator>, <span class="keyword">public</span> AsyncWritableResource</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase<ITextureGL, TextureViewGLImpl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_texture_base.html">TTextureBase</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>& TexViewObjAllocator, </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a> &TexDesc, </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  GLenum BindTarget,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>(), </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a>(IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a>& TexViewObjAllocator, </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_g_l_impl.html">RenderDeviceGLImpl</a> *pDeviceGL, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_device_context_g_l_impl.html">DeviceContextGLImpl</a> *pDeviceContext, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLenum BindTarget,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">bool</span> bIsDeviceInternal);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ~<a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a6e0a428ffb29fc093f4bd97053632fee">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( <span class="keyword">class</span> GLContextState &CtxState, <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> &SubresData );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">//virtual void CopyData(CTexture *pSrcTexture, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size);</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a34a1a8a070f02497414b84322449d4b9">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData )<span class="keyword">override</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a771d0fa96be08e567b09cb22dfe9cf83">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">const</span> GLObjectWrappers::GLTextureObj& GetGLHandle()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_GlTexture; }</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_g_l.html#a966d0dd2dd0110a2059e88c2dad9aee5"> 74</a></span>  <span class="keyword">virtual</span> GLenum <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a966d0dd2dd0110a2059e88c2dad9aee5">GetBindTarget</a>()const override final{<span class="keywordflow">return</span> m_BindTarget;}</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  GLenum GetGLTexFormat()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_GLTexFormat; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> TextureMemoryBarrier( Uint32 RequiredBarriers, <span class="keyword">class</span> GLContextState &GLContextState);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer(<span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint) = 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html#ae087c0ba29cd6813842a385abdf21537">CopyData</a>(IDeviceContext *pContext, </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  ITexture *pSrcTexture, </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> Box *pSrcBox,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  Uint32 DstSlice,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  Uint32 DstX,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  Uint32 DstY,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  Uint32 DstZ)<span class="keyword">override</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_g_l.html#a2d74593340bf951750df5169ece8ff20"> 92</a></span>  <span class="keyword">virtual</span> GLuint <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a2d74593340bf951750df5169ece8ff20">GetGLTextureHandle</a>()override final { <span class="keywordflow">return</span> GetGLHandle(); }</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_base_g_l.html#a3f9de3628ca90e93a9c11142981dc840"> 93</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a3f9de3628ca90e93a9c11142981dc840">GetNativeHandle</a>()override final { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keywordtype">void</span>*<span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(<a class="code" href="class_diligent_1_1_texture_base_g_l.html#a2d74593340bf951750df5169ece8ff20">GetGLTextureHandle</a>())); }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html#a61a5b0b884668fc6c932f8cba9da2a18">CreateViewInternal</a>( <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> &ViewDesc, <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">void</span> SetDefaultGLParameters();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  GLObjectWrappers::GLTextureObj m_GlTexture;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">const</span> GLenum m_BindTarget;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> GLenum m_GLTexFormat;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">//Uint32 m_uiMapTarget;</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="ttc" id="class_diligent_1_1_texture_base_g_l_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_g_l.html">Diligent::TextureBaseGL</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureGL interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseGL.h:41</div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_texture_base_g_l_html_ae087c0ba29cd6813842a385abdf21537"><div class="ttname"><a href="class_diligent_1_1_texture_base_g_l.html#ae087c0ba29cd6813842a385abdf21537">Diligent::TextureBaseGL::CopyData</a></div><div class="ttdeci">virtual void CopyData(IDeviceContext *pContext, ITexture *pSrcTexture, Uint32 SrcMipLevel, Uint32 SrcSlice, const Box *pSrcBox, Uint32 DstMipLevel, Uint32 DstSlice, Uint32 DstX, Uint32 DstY, Uint32 DstZ) override</div><div class="ttdoc">Base implementaiton of ITexture::CopyData(); validates input parameters. </div><div class="ttdef"><b>Definition:</b> TextureBaseGL.cpp:312</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -96,7 +96,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_cube___o_g_l_8h_source.html b/doc/html/_texture_cube___o_g_l_8h_source.html index c19d8034..0aeac7a4 100644 --- a/doc/html/_texture_cube___o_g_l_8h_source.html +++ b/doc/html/_texture_cube___o_g_l_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">TextureCube_OGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>TextureCube_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  TextureCube_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  TextureCube_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~TextureCube_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>TextureCube_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  TextureCube_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  TextureCube_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~TextureCube_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_cube_array___o_g_l_8h_source.html b/doc/html/_texture_cube_array___o_g_l_8h_source.html index 7b552431..96b39571 100644 --- a/doc/html/_texture_cube_array___o_g_l_8h_source.html +++ b/doc/html/_texture_cube_array___o_g_l_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">TextureCubeArray_OGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>TextureCubeArray_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  TextureCubeArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  TextureCubeArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~TextureCubeArray_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureBaseGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>TextureCubeArray_OGL : <span class="keyword">public</span> TextureBaseGL</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  TextureCubeArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  FixedBlockMemoryAllocator& TexViewObjAllocator,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> TextureData& InitData = TextureData(), </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span> );</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  TextureCubeArray_OGL( IReferenceCounters *pRefCounters, </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  FixedBlockMemoryAllocator& TexViewObjAllocator, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">class</span> RenderDeviceGLImpl *pDeviceGL, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> DeviceContextGLImpl *pDeviceContext, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> TextureDesc& TexDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLuint GLTextureHandle,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">bool</span> bIsDeviceInternal = <span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~TextureCubeArray_OGL();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateData( IDeviceContext *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> Box &DstBox, <span class="keyword">const</span> TextureSubResData &SubresData )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AttachToFramebuffer( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc& ViewDesc, GLenum AttachmentPoint )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_d3_d11_8h_source.html b/doc/html/_texture_d3_d11_8h_source.html index c48c50ab..1da400e2 100644 --- a/doc/html/_texture_d3_d11_8h_source.html +++ b/doc/html/_texture_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {F3A84CC2-E485-4E72-A08A-437D7FFBA3AB}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xf3a84cc2, 0xe485, 0x4e72, { 0xa0, 0x8a, 0x43, 0x7d, 0x7f, 0xfb, 0xa3, 0xab } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_d3_d11.html">ITextureD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11Resource* <a class="code" href="class_diligent_1_1_i_texture_d3_d11.html#adf1796931d51c7495e596050e7b74c58">GetD3D11Texture</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {F3A84CC2-E485-4E72-A08A-437D7FFBA3AB}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xf3a84cc2, 0xe485, 0x4e72, { 0xa0, 0x8a, 0x43, 0x7d, 0x7f, 0xfb, 0xa3, 0xab } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_d3_d11.html">ITextureD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11Resource* <a class="code" href="class_diligent_1_1_i_texture_d3_d11.html#adf1796931d51c7495e596050e7b74c58">GetD3D11Texture</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_i_texture_d3_d11.html">Diligent::ITextureD3D11</a></div><div class="ttdoc">Interface to the texture object implemented in D3D11. </div><div class="ttdef"><b>Definition:</b> TextureD3D11.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_d3_d11_html_adf1796931d51c7495e596050e7b74c58"><div class="ttname"><a href="class_diligent_1_1_i_texture_d3_d11.html#adf1796931d51c7495e596050e7b74c58">Diligent::ITextureD3D11::GetD3D11Texture</a></div><div class="ttdeci">virtual ID3D11Resource * GetD3D11Texture()=0</div><div class="ttdoc">Returns a pointer to the ID3D11Resource interface of the internal Direct3D11 object. </div></div> <div class="ttc" id="class_diligent_1_1_i_texture_html"><div class="ttname"><a href="class_diligent_1_1_i_texture.html">Diligent::ITexture</a></div><div class="ttdoc">Texture inteface. </div><div class="ttdef"><b>Definition:</b> Texture.h:276</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_d3_d12_8h_source.html b/doc/html/_texture_d3_d12_8h_source.html index 049a0b25..9acf62db 100644 --- a/doc/html/_texture_d3_d12_8h_source.html +++ b/doc/html/_texture_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {CF5522EF-8116-4D76-ADF1-5CC8FB31FF66}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xcf5522ef, 0x8116, 0x4d76, { 0xad, 0xf1, 0x5c, 0xc8, 0xfb, 0x31, 0xff, 0x66 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_d3_d12.html">ITextureD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D12Resource* <a class="code" href="class_diligent_1_1_i_texture_d3_d12.html#af922342877487c6e750e29f783cd11e5">GetD3D12Texture</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture_d3_d12.html#af5142471dd9e26efd297f4bb42d341c6">SetD3D12ResourceState</a>(D3D12_RESOURCE_STATES state) = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> };</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="ttc" id="class_diligent_1_1_i_texture_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_texture_d3_d12.html">Diligent::ITextureD3D12</a></div><div class="ttdoc">Interface to the texture object implemented in D3D11. </div><div class="ttdef"><b>Definition:</b> TextureD3D12.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {CF5522EF-8116-4D76-ADF1-5CC8FB31FF66}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xcf5522ef, 0x8116, 0x4d76, { 0xad, 0xf1, 0x5c, 0xc8, 0xfb, 0x31, 0xff, 0x66 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_d3_d12.html">ITextureD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D12Resource* <a class="code" href="class_diligent_1_1_i_texture_d3_d12.html#af922342877487c6e750e29f783cd11e5">GetD3D12Texture</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture_d3_d12.html#af5142471dd9e26efd297f4bb42d341c6">SetD3D12ResourceState</a>(D3D12_RESOURCE_STATES state) = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> };</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="ttc" id="class_diligent_1_1_i_texture_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_texture_d3_d12.html">Diligent::ITextureD3D12</a></div><div class="ttdoc">Interface to the texture object implemented in D3D11. </div><div class="ttdef"><b>Definition:</b> TextureD3D12.h:39</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_d3_d12_html_af922342877487c6e750e29f783cd11e5"><div class="ttname"><a href="class_diligent_1_1_i_texture_d3_d12.html#af922342877487c6e750e29f783cd11e5">Diligent::ITextureD3D12::GetD3D12Texture</a></div><div class="ttdeci">virtual ID3D12Resource * GetD3D12Texture()=0</div><div class="ttdoc">Returns a pointer to the ID3D12Resource interface of the internal Direct3D12 object. </div></div> <div class="ttc" id="class_diligent_1_1_i_texture_d3_d12_html_af5142471dd9e26efd297f4bb42d341c6"><div class="ttname"><a href="class_diligent_1_1_i_texture_d3_d12.html#af5142471dd9e26efd297f4bb42d341c6">Diligent::ITextureD3D12::SetD3D12ResourceState</a></div><div class="ttdeci">virtual void SetD3D12ResourceState(D3D12_RESOURCE_STATES state)=0</div><div class="ttdoc">Sets the texture usage state. </div></div> @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_d3_d12_impl_8h_source.html b/doc/html/_texture_d3_d12_impl_8h_source.html index 0f3cd100..1f89f88b 100644 --- a/doc/html/_texture_d3_d12_impl_8h_source.html +++ b/doc/html/_texture_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "TextureViewD3D12Impl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "D3D12ResourceBase.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_d3_d12_impl.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase</a><ITextureD3D12, TextureViewD3D12Impl, FixedBlockMemoryAllocator>, <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_d3_d12_resource_base.html">D3D12ResourceBase</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase<ITextureD3D12, TextureViewD3D12Impl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_texture_base.html">TTextureBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Creates a new D3D12 resource</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// Attaches to an existing D3D12 resource</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  ID3D12Resource *pTexture);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  ~<a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a036fc5e08941a941dccbd0a339107482">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#abc3712b7390da6ee07e0f0ec9d9ea115">UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> &SubresData )<span class="keyword">override</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">//virtual void CopyData(CTexture *pSrcTexture, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size);</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a7dfc1769e55ab8084ed0c61167964777">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData )<span class="keyword">override</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a29700533b4983a0514a3a9b2ee4d548c">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_d3_d12_impl.html#aa86ba650c3fecbba2a92a2d042bbdd8c"> 69</a></span>  <span class="keyword">virtual</span> ID3D12Resource* <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#aa86ba650c3fecbba2a92a2d042bbdd8c">GetD3D12Texture</a>(){ <span class="keywordflow">return</span> GetD3D12Resource(); }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_d3_d12_impl.html#a610e841d55f450885431a1b0947edaf8"> 71</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a610e841d55f450885431a1b0947edaf8">GetNativeHandle</a>()override final { <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#aa86ba650c3fecbba2a92a2d042bbdd8c">GetD3D12Texture</a>(); }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_d3_d12_impl.html#ac44265e34a17b177212978ac29fed5db"> 73</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#ac44265e34a17b177212978ac29fed5db">SetD3D12ResourceState</a>(D3D12_RESOURCE_STATES state)<span class="keyword">override</span> <span class="keyword">final</span>{ SetState(state); }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a5e580b4a669a3d3aac44256dee9ae8fa">CopyData</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pSrcTexture, </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> *pSrcBox,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Uint32 DstSlice,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  Uint32 DstX,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  Uint32 DstY,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  Uint32 DstZ);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  D3D12_CPU_DESCRIPTOR_HANDLE GetMipLevelUAV(Uint32 Mip)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> m_MipUAVs.GetCpuHandle(Mip);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  D3D12_CPU_DESCRIPTOR_HANDLE GetTexArraySRV()</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> m_TexArraySRV.GetCpuHandle();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a54a1792a4ccf01e8cee6bb8701910419">CreateViewInternal</a>( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc &ViewDesc, ITextureView **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">//void PrepareD3D12InitData(const TextureData &InitData, Uint32 NumSubresources, std::vector<D3D12_SUBRESOURCE_DATA> &D3D12InitData);</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">void</span> CreateSRV( TextureViewDesc &SRVDesc, D3D12_CPU_DESCRIPTOR_HANDLE SRVHandle );</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">void</span> CreateRTV( TextureViewDesc &RTVDesc, D3D12_CPU_DESCRIPTOR_HANDLE RTVHandle );</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">void</span> CreateDSV( TextureViewDesc &DSVDesc, D3D12_CPU_DESCRIPTOR_HANDLE DSVHandle );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">void</span> CreateUAV( TextureViewDesc &UAVDesc, D3D12_CPU_DESCRIPTOR_HANDLE UAVHandle );</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// UAVs for every mip level to facilitate mipmap generation</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  DescriptorHeapAllocation m_MipUAVs;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// SRV as texture array (even for a non-array texture) required for mipmap generation</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  DescriptorHeapAllocation m_TexArraySRV;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">friend</span> <span class="keyword">class </span>RenderDeviceD3D12Impl;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> };</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div><div class="ttc" id="class_diligent_1_1_texture_d3_d12_impl_html_a5e580b4a669a3d3aac44256dee9ae8fa"><div class="ttname"><a href="class_diligent_1_1_texture_d3_d12_impl.html#a5e580b4a669a3d3aac44256dee9ae8fa">Diligent::TextureD3D12Impl::CopyData</a></div><div class="ttdeci">void CopyData(IDeviceContext *pContext, ITexture *pSrcTexture, Uint32 SrcMipLevel, Uint32 SrcSlice, const Box *pSrcBox, Uint32 DstMipLevel, Uint32 DstSlice, Uint32 DstX, Uint32 DstY, Uint32 DstZ)</div><div class="ttdoc">Base implementaiton of ITexture::CopyData(); validates input parameters. </div><div class="ttdef"><b>Definition:</b> TextureD3D12Impl.cpp:422</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "TextureViewD3D12Impl.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "D3D12ResourceBase.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_d3_d12_impl.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase</a><ITextureD3D12, TextureViewD3D12Impl, FixedBlockMemoryAllocator>, <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_d3_d12_resource_base.html">D3D12ResourceBase</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_base.html">TextureBase<ITextureD3D12, TextureViewD3D12Impl, FixedBlockMemoryAllocator></a> <a class="code" href="class_diligent_1_1_texture_base.html">TTextureBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Creates a new D3D12 resource</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12, </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a> &InitData = <a class="code" href="struct_diligent_1_1_texture_data.html">TextureData</a>());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// Attaches to an existing D3D12 resource</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_diligent_1_1_fixed_block_memory_allocator.html">FixedBlockMemoryAllocator</a> &TexViewObjAllocator,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_render_device_d3_d12_impl.html">RenderDeviceD3D12Impl</a> *pDeviceD3D12, </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_desc.html">TextureDesc</a>& TexDesc, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  ID3D12Resource *pTexture);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  ~<a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html">TextureD3D12Impl</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a036fc5e08941a941dccbd0a339107482">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#abc3712b7390da6ee07e0f0ec9d9ea115">UpdateData</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 MipLevel, Uint32 Slice, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> &DstBox, <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_sub_res_data.html">TextureSubResData</a> &SubresData )<span class="keyword">override</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">//virtual void CopyData(CTexture *pSrcTexture, Uint32 SrcOffset, Uint32 DstOffset, Uint32 Size);</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a7dfc1769e55ab8084ed0c61167964777">Map</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags, MappedTextureSubresource &MappedData )<span class="keyword">override</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a29700533b4983a0514a3a9b2ee4d548c">Unmap</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, Uint32 Subresource, <a class="code" href="namespace_diligent.html#aaf23669c215f709c983b1405efc19357">MAP_TYPE</a> MapType, Uint32 MapFlags )<span class="keyword">override</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_d3_d12_impl.html#aa86ba650c3fecbba2a92a2d042bbdd8c"> 69</a></span>  <span class="keyword">virtual</span> ID3D12Resource* <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#aa86ba650c3fecbba2a92a2d042bbdd8c">GetD3D12Texture</a>(){ <span class="keywordflow">return</span> GetD3D12Resource(); }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_d3_d12_impl.html#a610e841d55f450885431a1b0947edaf8"> 71</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a610e841d55f450885431a1b0947edaf8">GetNativeHandle</a>()override final { <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#aa86ba650c3fecbba2a92a2d042bbdd8c">GetD3D12Texture</a>(); }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_d3_d12_impl.html#ac44265e34a17b177212978ac29fed5db"> 73</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#ac44265e34a17b177212978ac29fed5db">SetD3D12ResourceState</a>(D3D12_RESOURCE_STATES state)<span class="keyword">override</span> <span class="keyword">final</span>{ SetState(state); }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a5e580b4a669a3d3aac44256dee9ae8fa">CopyData</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext, </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pSrcTexture, </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  Uint32 SrcMipLevel,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  Uint32 SrcSlice,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_box.html">Box</a> *pSrcBox,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint32 DstMipLevel,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  Uint32 DstSlice,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  Uint32 DstX,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  Uint32 DstY,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  Uint32 DstZ);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  D3D12_CPU_DESCRIPTOR_HANDLE GetMipLevelUAV(Uint32 Mip)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> m_MipUAVs.GetCpuHandle(Mip);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  D3D12_CPU_DESCRIPTOR_HANDLE GetTexArraySRV()</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> m_TexArraySRV.GetCpuHandle();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_d3_d12_impl.html#a54a1792a4ccf01e8cee6bb8701910419">CreateViewInternal</a>( <span class="keyword">const</span> <span class="keyword">struct</span> TextureViewDesc &ViewDesc, ITextureView **ppView, <span class="keywordtype">bool</span> bIsDefaultView )<span class="keyword">override</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">//void PrepareD3D12InitData(const TextureData &InitData, Uint32 NumSubresources, std::vector<D3D12_SUBRESOURCE_DATA> &D3D12InitData);</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">void</span> CreateSRV( TextureViewDesc &SRVDesc, D3D12_CPU_DESCRIPTOR_HANDLE SRVHandle );</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">void</span> CreateRTV( TextureViewDesc &RTVDesc, D3D12_CPU_DESCRIPTOR_HANDLE RTVHandle );</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">void</span> CreateDSV( TextureViewDesc &DSVDesc, D3D12_CPU_DESCRIPTOR_HANDLE DSVHandle );</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">void</span> CreateUAV( TextureViewDesc &UAVDesc, D3D12_CPU_DESCRIPTOR_HANDLE UAVHandle );</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// UAVs for every mip level to facilitate mipmap generation</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  DescriptorHeapAllocation m_MipUAVs;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// SRV as texture array (even for a non-array texture) required for mipmap generation</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  DescriptorHeapAllocation m_TexArraySRV;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">friend</span> <span class="keyword">class </span>RenderDeviceD3D12Impl;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> };</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div><div class="ttc" id="class_diligent_1_1_texture_d3_d12_impl_html_a5e580b4a669a3d3aac44256dee9ae8fa"><div class="ttname"><a href="class_diligent_1_1_texture_d3_d12_impl.html#a5e580b4a669a3d3aac44256dee9ae8fa">Diligent::TextureD3D12Impl::CopyData</a></div><div class="ttdeci">void CopyData(IDeviceContext *pContext, ITexture *pSrcTexture, Uint32 SrcMipLevel, Uint32 SrcSlice, const Box *pSrcBox, Uint32 DstMipLevel, Uint32 DstSlice, Uint32 DstX, Uint32 DstY, Uint32 DstZ)</div><div class="ttdoc">Base implementaiton of ITexture::CopyData(); validates input parameters. </div><div class="ttdef"><b>Definition:</b> TextureD3D12Impl.cpp:422</div></div> <div class="ttc" id="class_diligent_1_1_texture_d3_d12_impl_html_a54a1792a4ccf01e8cee6bb8701910419"><div class="ttname"><a href="class_diligent_1_1_texture_d3_d12_impl.html#a54a1792a4ccf01e8cee6bb8701910419">Diligent::TextureD3D12Impl::CreateViewInternal</a></div><div class="ttdeci">void CreateViewInternal(const struct TextureViewDesc &ViewDesc, ITextureView **ppView, bool bIsDefaultView) override</div><div class="ttdoc">Pure virtual function that creates texture view for the specific engine implementation. </div><div class="ttdef"><b>Definition:</b> TextureD3D12Impl.cpp:326</div></div> <div class="ttc" id="struct_diligent_1_1_texture_desc_html"><div class="ttname"><a href="struct_diligent_1_1_texture_desc.html">Diligent::TextureDesc</a></div><div class="ttdoc">Texture description. </div><div class="ttdef"><b>Definition:</b> Texture.h:82</div></div> <div class="ttc" id="class_diligent_1_1_texture_d3_d12_impl_html_a610e841d55f450885431a1b0947edaf8"><div class="ttname"><a href="class_diligent_1_1_texture_d3_d12_impl.html#a610e841d55f450885431a1b0947edaf8">Diligent::TextureD3D12Impl::GetNativeHandle</a></div><div class="ttdeci">virtual void * GetNativeHandle() override final</div><div class="ttdoc">Returns native texture handle specific to the underlying graphics API. </div><div class="ttdef"><b>Definition:</b> TextureD3D12Impl.h:71</div></div> @@ -96,7 +96,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_g_l_8h_source.html b/doc/html/_texture_g_l_8h_source.html index e35d4c36..37ebc413 100644 --- a/doc/html/_texture_g_l_8h_source.html +++ b/doc/html/_texture_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {D7BC9FF0-28F0-4636-9732-710C204D1D63}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xd7bc9ff0, 0x28f0, 0x4636, { 0x97, 0x32, 0x71, 0xc, 0x20, 0x4d, 0x1d, 0x63 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_g_l.html">ITextureGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> GLuint <a class="code" href="class_diligent_1_1_i_texture_g_l.html#a52de90ff7763df464ca38a78d4613629">GetGLTextureHandle</a>() = 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> GLenum <a class="code" href="class_diligent_1_1_i_texture_g_l.html#a5d55833355abe3fc4cc802893ab41115">GetBindTarget</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Texture.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {D7BC9FF0-28F0-4636-9732-710C204D1D63}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xd7bc9ff0, 0x28f0, 0x4636, { 0x97, 0x32, 0x71, 0xc, 0x20, 0x4d, 0x1d, 0x63 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_g_l.html">ITextureGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> GLuint <a class="code" href="class_diligent_1_1_i_texture_g_l.html#a52de90ff7763df464ca38a78d4613629">GetGLTextureHandle</a>() = 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> GLenum <a class="code" href="class_diligent_1_1_i_texture_g_l.html#a5d55833355abe3fc4cc802893ab41115">GetBindTarget</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_g_l_html_a52de90ff7763df464ca38a78d4613629"><div class="ttname"><a href="class_diligent_1_1_i_texture_g_l.html#a52de90ff7763df464ca38a78d4613629">Diligent::ITextureGL::GetGLTextureHandle</a></div><div class="ttdeci">virtual GLuint GetGLTextureHandle()=0</div><div class="ttdoc">Returns OpenGL texture handle. </div></div> <div class="ttc" id="class_diligent_1_1_i_texture_g_l_html_a5d55833355abe3fc4cc802893ab41115"><div class="ttname"><a href="class_diligent_1_1_i_texture_g_l.html#a5d55833355abe3fc4cc802893ab41115">Diligent::ITextureGL::GetBindTarget</a></div><div class="ttdeci">virtual GLenum GetBindTarget() const =0</div><div class="ttdoc">Returns bind target of the native OpenGL texture. </div></div> <div class="ttc" id="class_diligent_1_1_i_texture_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_texture_g_l.html">Diligent::ITextureGL</a></div><div class="ttdoc">Interface to the texture object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> TextureGL.h:39</div></div> @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_uploader_8h_source.html b/doc/html/_texture_uploader_8h_source.html index fee96c24..56861fee 100644 --- a/doc/html/_texture_uploader_8h_source.html +++ b/doc/html/_texture_uploader_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureUploader.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">struct </span>UploadBufferDesc</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Width = 0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Height = 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Depth = 1;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> Format = <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> UploadBufferDesc &rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> Width == rhs.Width && </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Height == rhs.Height &&</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Depth == rhs.Depth &&</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  Format == rhs.Format;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">class </span>IUploadBuffer : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> WaitForCopyScheduled() = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* GetDataPtr() = 0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetRowStride() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetDepthStride()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> UploadBufferDesc& GetDesc()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">struct </span>TextureUploaderDesc</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">class </span>ITextureUploader : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RenderThreadUpdate(IDeviceContext *pContext) = 0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AllocateUploadBuffer(<span class="keyword">const</span> UploadBufferDesc& Desc, <span class="keywordtype">bool</span> IsRenderThread, IUploadBuffer **ppBuffer) = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ScheduleGPUCopy(ITexture *pDstTexture, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ArraySlice, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> MipLevel, IUploadBuffer *pUploadBuffer) = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RecycleBuffer(IUploadBuffer *pUploadBuffer) = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  };</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> CreateTextureUploader(IRenderDevice *pDevice, <span class="keyword">const</span> TextureUploaderDesc& Desc, ITextureUploader **ppUploader);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DeviceContext.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">struct </span>UploadBufferDesc</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Width = 0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Height = 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> Depth = 1;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> Format = <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> UploadBufferDesc &rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> Width == rhs.Width && </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Height == rhs.Height &&</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  Depth == rhs.Depth &&</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  Format == rhs.Format;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">class </span>IUploadBuffer : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> WaitForCopyScheduled() = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* GetDataPtr() = 0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetRowStride() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetDepthStride()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> UploadBufferDesc& GetDesc()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">struct </span>TextureUploaderDesc</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">class </span>ITextureUploader : <span class="keyword">public</span> IObject</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RenderThreadUpdate(IDeviceContext *pContext) = 0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AllocateUploadBuffer(<span class="keyword">const</span> UploadBufferDesc& Desc, <span class="keywordtype">bool</span> IsRenderThread, IUploadBuffer **ppBuffer) = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ScheduleGPUCopy(ITexture *pDstTexture, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ArraySlice, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> MipLevel, IUploadBuffer *pUploadBuffer) = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RecycleBuffer(IUploadBuffer *pUploadBuffer) = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  };</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> CreateTextureUploader(IRenderDevice *pDevice, <span class="keyword">const</span> TextureUploaderDesc& Desc, ITextureUploader **ppUploader);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">Diligent::TEX_FORMAT_UNKNOWN</a></div><div class="ttdoc">Unknown format. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:247</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> diff --git a/doc/html/_texture_uploader_base_8h_source.html b/doc/html/_texture_uploader_base_8h_source.html index f1e2bca2..40311aaf 100644 --- a/doc/html/_texture_uploader_base_8h_source.html +++ b/doc/html/_texture_uploader_base_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureUploaderBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureUploader.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::UploadBufferDesc></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">size_t</span> operator()(<span class="keyword">const</span> Diligent::UploadBufferDesc &Desc)<span class="keyword"> const</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(Desc.Width, Desc.Height, Desc.Depth, static_cast<Diligent::Int32>(Desc.Format));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class </span>UploadBufferBase : <span class="keyword">public</span> ObjectBase<IUploadBuffer></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  UploadBufferBase(IReferenceCounters *pRefCounters, <span class="keyword">const</span> UploadBufferDesc &Desc) : </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ObjectBase<IUploadBuffer>(pRefCounters),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_Desc(Desc)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* GetDataPtr() override final { <span class="keywordflow">return</span> m_pData; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetRowStride() const override final{ <span class="keywordflow">return</span> m_RowStride; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetDepthStride()const override final{ <span class="keywordflow">return</span> m_DepthStride; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> UploadBufferDesc& GetDesc()const override final{ <span class="keywordflow">return</span> m_Desc; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">const</span> UploadBufferDesc m_Desc;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span>* m_pData = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">size_t</span> m_RowStride = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">size_t</span> m_DepthStride = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">class </span>TextureUploaderBase : <span class="keyword">public</span> ObjectBase<ITextureUploader></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  TextureUploaderBase(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, <span class="keyword">const</span> TextureUploaderDesc Desc) :</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  ObjectBase<ITextureUploader>(pRefCounters),</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_pDevice(pDevice)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  RefCntAutoPtr<IRenderDevice> m_pDevice;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  };</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureUploader.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "ObjectBase.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">template</span><></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">struct </span>hash<<a class="code" href="namespace_diligent.html">Diligent</a>::UploadBufferDesc></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">size_t</span> operator()(<span class="keyword">const</span> Diligent::UploadBufferDesc &Desc)<span class="keyword"> const</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> Diligent::ComputeHash(Desc.Width, Desc.Height, Desc.Depth, static_cast<Diligent::Int32>(Desc.Format));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class </span>UploadBufferBase : <span class="keyword">public</span> ObjectBase<IUploadBuffer></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  UploadBufferBase(IReferenceCounters *pRefCounters, <span class="keyword">const</span> UploadBufferDesc &Desc) : </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ObjectBase<IUploadBuffer>(pRefCounters),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_Desc(Desc)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span>* GetDataPtr() override final { <span class="keywordflow">return</span> m_pData; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetRowStride() const override final{ <span class="keywordflow">return</span> m_RowStride; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> GetDepthStride()const override final{ <span class="keywordflow">return</span> m_DepthStride; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> UploadBufferDesc& GetDesc()const override final{ <span class="keywordflow">return</span> m_Desc; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">const</span> UploadBufferDesc m_Desc;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span>* m_pData = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">size_t</span> m_RowStride = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">size_t</span> m_DepthStride = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">class </span>TextureUploaderBase : <span class="keyword">public</span> ObjectBase<ITextureUploader></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  TextureUploaderBase(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, <span class="keyword">const</span> TextureUploaderDesc Desc) :</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  ObjectBase<ITextureUploader>(pRefCounters),</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_pDevice(pDevice)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  RefCntAutoPtr<IRenderDevice> m_pDevice;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  };</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> diff --git a/doc/html/_texture_uploader_d3_d11_8h_source.html b/doc/html/_texture_uploader_d3_d11_8h_source.html index c0e3aee2..5bcfce6c 100644 --- a/doc/html/_texture_uploader_d3_d11_8h_source.html +++ b/doc/html/_texture_uploader_d3_d11_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureUploaderD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureUploaderBase.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">class </span>TextureUploaderD3D11 : <span class="keyword">public</span> TextureUploaderBase</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  TextureUploaderD3D11(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, <span class="keyword">const</span> TextureUploaderDesc Desc);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  ~TextureUploaderD3D11();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RenderThreadUpdate(IDeviceContext *pContext)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AllocateUploadBuffer(<span class="keyword">const</span> UploadBufferDesc& Desc, <span class="keywordtype">bool</span> IsRenderThread, IUploadBuffer **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ScheduleGPUCopy(ITexture *pDstTexture, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ArraySlice, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> MipLevel, IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RecycleBuffer(IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">struct </span>InternalData;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::unique_ptr<InternalData> m_pInternalData;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureUploaderBase.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">class </span>TextureUploaderD3D11 : <span class="keyword">public</span> TextureUploaderBase</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  TextureUploaderD3D11(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, <span class="keyword">const</span> TextureUploaderDesc Desc);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  ~TextureUploaderD3D11();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RenderThreadUpdate(IDeviceContext *pContext)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AllocateUploadBuffer(<span class="keyword">const</span> UploadBufferDesc& Desc, <span class="keywordtype">bool</span> IsRenderThread, IUploadBuffer **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ScheduleGPUCopy(ITexture *pDstTexture, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ArraySlice, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> MipLevel, IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RecycleBuffer(IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">struct </span>InternalData;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::unique_ptr<InternalData> m_pInternalData;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> diff --git a/doc/html/_texture_uploader_d3_d12_8h_source.html b/doc/html/_texture_uploader_d3_d12_8h_source.html index 37f9fdb5..b9c95ef8 100644 --- a/doc/html/_texture_uploader_d3_d12_8h_source.html +++ b/doc/html/_texture_uploader_d3_d12_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureUploaderD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureUploaderBase.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">class </span>TextureUploaderD3D12 : <span class="keyword">public</span> TextureUploaderBase</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  TextureUploaderD3D12(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, <span class="keyword">const</span> TextureUploaderDesc Desc);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  ~TextureUploaderD3D12();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RenderThreadUpdate(IDeviceContext *pContext)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AllocateUploadBuffer(<span class="keyword">const</span> UploadBufferDesc& Desc, <span class="keywordtype">bool</span> IsRenderThread, IUploadBuffer **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ScheduleGPUCopy(ITexture *pDstTexture, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ArraySlice, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> MipLevel, IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RecycleBuffer(IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">struct </span>InternalData;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::unique_ptr<InternalData> m_pInternalData;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureUploaderBase.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">class </span>TextureUploaderD3D12 : <span class="keyword">public</span> TextureUploaderBase</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  TextureUploaderD3D12(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, <span class="keyword">const</span> TextureUploaderDesc Desc);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  ~TextureUploaderD3D12();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RenderThreadUpdate(IDeviceContext *pContext)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AllocateUploadBuffer(<span class="keyword">const</span> UploadBufferDesc& Desc, <span class="keywordtype">bool</span> IsRenderThread, IUploadBuffer **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ScheduleGPUCopy(ITexture *pDstTexture, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ArraySlice, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> MipLevel, IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RecycleBuffer(IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">struct </span>InternalData;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::unique_ptr<InternalData> m_pInternalData;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> diff --git a/doc/html/_texture_uploader_g_l_8h_source.html b/doc/html/_texture_uploader_g_l_8h_source.html index 4551f979..6255e123 100644 --- a/doc/html/_texture_uploader_g_l_8h_source.html +++ b/doc/html/_texture_uploader_g_l_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureUploaderGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureUploaderBase.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">class </span>TextureUploaderGL : <span class="keyword">public</span> TextureUploaderBase</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  TextureUploaderGL(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, <span class="keyword">const</span> TextureUploaderDesc Desc);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  ~TextureUploaderGL();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RenderThreadUpdate(IDeviceContext *pContext)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AllocateUploadBuffer(<span class="keyword">const</span> UploadBufferDesc& Desc, <span class="keywordtype">bool</span> IsRenderThread, IUploadBuffer **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ScheduleGPUCopy(ITexture *pDstTexture, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ArraySlice, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> MipLevel, IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RecycleBuffer(IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">struct </span>InternalData;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::unique_ptr<InternalData> m_pInternalData;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TextureUploaderBase.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">class </span>TextureUploaderGL : <span class="keyword">public</span> TextureUploaderBase</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  TextureUploaderGL(IReferenceCounters *pRefCounters, IRenderDevice *pDevice, <span class="keyword">const</span> TextureUploaderDesc Desc);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  ~TextureUploaderGL();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RenderThreadUpdate(IDeviceContext *pContext)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AllocateUploadBuffer(<span class="keyword">const</span> UploadBufferDesc& Desc, <span class="keywordtype">bool</span> IsRenderThread, IUploadBuffer **ppBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ScheduleGPUCopy(ITexture *pDstTexture, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> ArraySlice, <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Uint32</a> MipLevel, IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RecycleBuffer(IUploadBuffer *pUploadBuffer)<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">struct </span>InternalData;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::unique_ptr<InternalData> m_pInternalData;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> diff --git a/doc/html/_texture_view_8h_source.html b/doc/html/_texture_view_8h_source.html index 833d027c..19247fe3 100644 --- a/doc/html/_texture_view_8h_source.html +++ b/doc/html/_texture_view_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureView.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {5B2EA04E-8128-45E4-AA4D-6DC7E70DC424}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureView =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x5b2ea04e, 0x8128, 0x45e4, { 0xaa, 0x4d, 0x6d, 0xc7, 0xe7, 0xd, 0xc4, 0x24 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5"> 39</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5">UAV_ACCESS_FLAG</a> : Int32</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5af428b78aff9e3214463f0b6c11c6abfe"> 42</a></span>  <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5af428b78aff9e3214463f0b6c11c6abfe">UAV_ACCESS_UNSPECIFIED</a> = 0x00,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5ad42d434e060adc1108c8ae76a01e0001"> 45</a></span>  <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5ad42d434e060adc1108c8ae76a01e0001">UAV_ACCESS_FLAG_READ</a> = 0x01,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5afd106074c09decf99fde5a22568c0f96"> 48</a></span>  <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5afd106074c09decf99fde5a22568c0f96">UAV_ACCESS_FLAG_WRITE</a> = 0x02,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5a25a679f6814bcfb15998ba9e33077160"> 51</a></span>  <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5a25a679f6814bcfb15998ba9e33077160">UAV_ACCESS_FLAG_READ_WRITE</a> = <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5ad42d434e060adc1108c8ae76a01e0001">UAV_ACCESS_FLAG_READ</a> | <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5afd106074c09decf99fde5a22568c0f96">UAV_ACCESS_FLAG_WRITE</a></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html"> 55</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301"> 58</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae"> 65</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">RESOURCE_DIMENSION</a> <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">TextureDim</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31"> 69</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31">Format</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f"> 72</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f">MostDetailedMip</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74"> 79</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74">NumMipLevels</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">union</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf"> 84</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf">FirstArraySlice</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#ae9d517f33ca0e9d8218d9e5ed201c76a"> 87</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae9d517f33ca0e9d8218d9e5ed201c76a">FirstDepthSlice</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  };</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">union</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739"> 94</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739">NumArraySlices</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#ae06333b962447fde60b73ab36e5d4821"> 98</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae06333b962447fde60b73ab36e5d4821">NumDepthSlices</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  };</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7"> 103</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#ae636c6540cdc1772f68af208174b8bed"> 119</a></span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae636c6540cdc1772f68af208174b8bed">TextureViewDesc</a>() : </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a>( <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf08182e262af9a13ffed563d3ae6a791">TEXTURE_VIEW_UNDEFINED</a> ),</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">TextureDim</a>( <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67af059ddcde8b1a3bf1c6f32f3b4865cfe">RESOURCE_DIM_UNDEFINED</a> ),</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31">Format</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>),</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f">MostDetailedMip</a>(0),</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74">NumMipLevels</a>(0),</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf">FirstArraySlice</a>(0),</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739">NumArraySlices</a>(0),</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a>(0)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#afed385710847ac44fd0ec08d1334bc08"> 137</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html#afed385710847ac44fd0ec08d1334bc08">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// Name is primarily used for debug purposes and does not affect the view.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// It is ignored in comparison operation.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <span class="comment">//strcmp(Name, RHS.Name) == 0 &&</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> &&</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">TextureDim</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">TextureDim</a> &&</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31">Format</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31">Format</a> &&</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f">MostDetailedMip</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f">MostDetailedMip</a> &&</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74">NumMipLevels</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74">NumMipLevels</a> &&</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf">FirstArraySlice</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf">FirstArraySlice</a> &&</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae9d517f33ca0e9d8218d9e5ed201c76a">FirstDepthSlice</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae9d517f33ca0e9d8218d9e5ed201c76a">FirstDepthSlice</a> &&</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739">NumArraySlices</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739">NumArraySlices</a> &&</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae06333b962447fde60b73ab36e5d4821">NumDepthSlices</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae06333b962447fde60b73ab36e5d4821">NumDepthSlices</a> &&</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> };</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_view.html"> 163</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture_view.html#ac0ecf25c6a2c256d041941c101f7865a">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& <a class="code" href="class_diligent_1_1_i_texture_view.html#adf0698c6f29b61d6bcaffb5537e08bee">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture_view.html#af8a11a7ad59eb094ec13eb3c80110a90">SetSampler</a>( <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> *pSampler ) = 0;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a>* <a class="code" href="class_diligent_1_1_i_texture_view.html#a33e3d0194be2cb2ac7a100d24ddafd35">GetSampler</a>() = 0;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">virtual</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a>* <a class="code" href="class_diligent_1_1_i_texture_view.html#a5af346f3e31c7371060926e8d678fa47">GetTexture</a>() = 0;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture_view.html#a9a54c5ad28e3ee53f923ee81c3e984a0">GenerateMips</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext ) = 0;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> };</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "DeviceObject.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {5B2EA04E-8128-45E4-AA4D-6DC7E70DC424}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureView =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x5b2ea04e, 0x8128, 0x45e4, { 0xaa, 0x4d, 0x6d, 0xc7, 0xe7, 0xd, 0xc4, 0x24 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5"> 39</a></span> <span class="keyword">enum</span> <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5">UAV_ACCESS_FLAG</a> : Int32</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5af428b78aff9e3214463f0b6c11c6abfe"> 42</a></span>  <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5af428b78aff9e3214463f0b6c11c6abfe">UAV_ACCESS_UNSPECIFIED</a> = 0x00,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5ad42d434e060adc1108c8ae76a01e0001"> 45</a></span>  <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5ad42d434e060adc1108c8ae76a01e0001">UAV_ACCESS_FLAG_READ</a> = 0x01,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5afd106074c09decf99fde5a22568c0f96"> 48</a></span>  <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5afd106074c09decf99fde5a22568c0f96">UAV_ACCESS_FLAG_WRITE</a> = 0x02,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5a25a679f6814bcfb15998ba9e33077160"> 51</a></span>  <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5a25a679f6814bcfb15998ba9e33077160">UAV_ACCESS_FLAG_READ_WRITE</a> = <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5ad42d434e060adc1108c8ae76a01e0001">UAV_ACCESS_FLAG_READ</a> | <a class="code" href="namespace_diligent.html#a21f4e67e54527088e9ece576bf9c57b5afd106074c09decf99fde5a22568c0f96">UAV_ACCESS_FLAG_WRITE</a></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html"> 55</a></span> <span class="keyword">struct </span><a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a> : <a class="code" href="struct_diligent_1_1_device_object_attribs.html">DeviceObjectAttribs</a></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301"> 58</a></span>  <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">TEXTURE_VIEW_TYPE</a> <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae"> 65</a></span>  <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67">RESOURCE_DIMENSION</a> <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">TextureDim</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31"> 69</a></span>  <a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">TEXTURE_FORMAT</a> <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31">Format</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f"> 72</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f">MostDetailedMip</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74"> 79</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74">NumMipLevels</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">union</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf"> 84</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf">FirstArraySlice</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#ae9d517f33ca0e9d8218d9e5ed201c76a"> 87</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae9d517f33ca0e9d8218d9e5ed201c76a">FirstDepthSlice</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  };</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">union</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739"> 94</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739">NumArraySlices</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#ae06333b962447fde60b73ab36e5d4821"> 98</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae06333b962447fde60b73ab36e5d4821">NumDepthSlices</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  };</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7"> 103</a></span>  Uint32 <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#ae636c6540cdc1772f68af208174b8bed"> 119</a></span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae636c6540cdc1772f68af208174b8bed">TextureViewDesc</a>() : </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a>( <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdaf08182e262af9a13ffed563d3ae6a791">TEXTURE_VIEW_UNDEFINED</a> ),</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">TextureDim</a>( <a class="code" href="namespace_diligent.html#aa01f48fca1ad92ac9a1eca28e2d51c67af059ddcde8b1a3bf1c6f32f3b4865cfe">RESOURCE_DIM_UNDEFINED</a> ),</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31">Format</a>(<a class="code" href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465abbb06fb704822d0fd64d9e1e9e07eb7d">TEX_FORMAT_UNKNOWN</a>),</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f">MostDetailedMip</a>(0),</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74">NumMipLevels</a>(0),</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf">FirstArraySlice</a>(0),</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739">NumArraySlices</a>(0),</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a>(0)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="struct_diligent_1_1_texture_view_desc.html#afed385710847ac44fd0ec08d1334bc08"> 137</a></span>  <span class="keywordtype">bool</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html#afed385710847ac44fd0ec08d1334bc08">operator == </a>(<span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& RHS)<span class="keyword">const</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// Name is primarily used for debug purposes and does not affect the view.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// It is ignored in comparison operation.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <span class="comment">//strcmp(Name, RHS.Name) == 0 &&</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> &&</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">TextureDim</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">TextureDim</a> &&</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31">Format</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7b78522241d5b185643ef3cba53a31">Format</a> &&</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f">MostDetailedMip</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a4dab3e4cc5720c1cb5eb5cc6e12c834f">MostDetailedMip</a> &&</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74">NumMipLevels</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a579d6744e8fd271701401e1c9a903c74">NumMipLevels</a> &&</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf">FirstArraySlice</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#af5acffe353e11f9eb4e30911d3a86fbf">FirstArraySlice</a> &&</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae9d517f33ca0e9d8218d9e5ed201c76a">FirstDepthSlice</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae9d517f33ca0e9d8218d9e5ed201c76a">FirstDepthSlice</a> &&</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739">NumArraySlices</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a73d11640604c30831529fa0ed4bff739">NumArraySlices</a> &&</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae06333b962447fde60b73ab36e5d4821">NumDepthSlices</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#ae06333b962447fde60b73ab36e5d4821">NumDepthSlices</a> &&</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a> == RHS.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#a126d7ad8dceaa57150ed6f1cb3e1b7e7">AccessFlags</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> };</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_view.html"> 163</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_device_object.html">IDeviceObject</a></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture_view.html#ac0ecf25c6a2c256d041941c101f7865a">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface ) = 0;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& <a class="code" href="class_diligent_1_1_i_texture_view.html#adf0698c6f29b61d6bcaffb5537e08bee">GetDesc</a>()<span class="keyword">const</span> = 0;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture_view.html#af8a11a7ad59eb094ec13eb3c80110a90">SetSampler</a>( <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> *pSampler ) = 0;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a>* <a class="code" href="class_diligent_1_1_i_texture_view.html#a33e3d0194be2cb2ac7a100d24ddafd35">GetSampler</a>() = 0;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">virtual</span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a>* <a class="code" href="class_diligent_1_1_i_texture_view.html#a5af346f3e31c7371060926e8d678fa47">GetTexture</a>() = 0;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_i_texture_view.html#a9a54c5ad28e3ee53f923ee81c3e984a0">GenerateMips</a>(<a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext ) = 0;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> };</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="ttc" id="namespace_diligent_html_ad7f1ec9812f01bc86834b408c5857465"><div class="ttname"><a href="namespace_diligent.html#ad7f1ec9812f01bc86834b408c5857465">Diligent::TEXTURE_FORMAT</a></div><div class="ttdeci">TEXTURE_FORMAT</div><div class="ttdoc">Texture formats. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:244</div></div> <div class="ttc" id="struct_diligent_1_1_texture_view_desc_html_ada0c9b06dd0b57096f8de1ed39e762ae"><div class="ttname"><a href="struct_diligent_1_1_texture_view_desc.html#ada0c9b06dd0b57096f8de1ed39e762ae">Diligent::TextureViewDesc::TextureDim</a></div><div class="ttdeci">RESOURCE_DIMENSION TextureDim</div><div class="ttdoc">View interpretation of the original texture. For instance, one slice of a 2D texture array can be vie...</div><div class="ttdef"><b>Definition:</b> TextureView.h:65</div></div> <div class="ttc" id="namespace_diligent_html_a4f10ca1e5c5034aa6dcc86224d1189bd"><div class="ttname"><a href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bd">Diligent::TEXTURE_VIEW_TYPE</a></div><div class="ttdeci">TEXTURE_VIEW_TYPE</div><div class="ttdoc">Texture view type. </div><div class="ttdef"><b>Definition:</b> GraphicsTypes.h:190</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_view_html_a9a54c5ad28e3ee53f923ee81c3e984a0"><div class="ttname"><a href="class_diligent_1_1_i_texture_view.html#a9a54c5ad28e3ee53f923ee81c3e984a0">Diligent::ITextureView::GenerateMips</a></div><div class="ttdeci">virtual void GenerateMips(IDeviceContext *pContext)=0</div><div class="ttdoc">Generates a mipmap chain. </div></div> @@ -111,7 +111,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_view_base_8h_source.html b/doc/html/_texture_view_base_8h_source.html index 514c287f..82edf774 100644 --- a/doc/html/_texture_view_base_8h_source.html +++ b/doc/html/_texture_view_base_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureViewBase.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, TextureViewDesc></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, TextureViewDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#af39c54431780ae60fd925d898050e651"> 55</a></span>  <a class="code" href="class_diligent_1_1_texture_view_base.html#af39c54431780ae60fd925d898050e651">TextureViewBase</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">bool</span> bIsDefaultView ) :</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Default views are created as part of the texture, so we cannot not keep strong </span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// reference to the texture to avoid cyclic links. Instead, we will attach to the </span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// reference counters of the texture.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, ViewDesc ),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_diligent_1_1_texture_view_base.html#aacd89c0d9f3151feee504630a3f2c5a1">m_pTexture</a>( pTexture ),</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// For non-default view, we will keep strong reference to texture</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_texture_view_base.html#a78cc90a178c7720f8a563e540e174691">m_spTexture</a>(bIsDefaultView ? nullptr : pTexture)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_TextureView, TDeviceObjectBase )</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#a19a845d21c78bec13d2f605b62df1944"> 72</a></span>  virtual <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_base.html#a19a845d21c78bec13d2f605b62df1944">SetSampler</a>( class <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> *pSampler )override final</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  VERIFY( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Texture view \""</span>, this->m_Desc.Name, <span class="stringliteral">"\": A sampler can be attached to a shader resource view only. The view type is "</span>, GetTexViewTypeLiteralName(this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a>) );</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_texture_view_base.html#a0c4b1d7ff93072f2bcc7c9843503c3b8">m_pSampler</a> = pSampler;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#a3cfb65a9bfbccb84a3005aaa1edcf50f"> 79</a></span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a>* <a class="code" href="class_diligent_1_1_texture_view_base.html#a3cfb65a9bfbccb84a3005aaa1edcf50f">GetSampler</a>()override final</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  { </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_view_base.html#a0c4b1d7ff93072f2bcc7c9843503c3b8">m_pSampler</a>; </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#a61cc6594bfa7e4481ca159501f38bbca"> 85</a></span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a>* <a class="code" href="class_diligent_1_1_texture_view_base.html#a61cc6594bfa7e4481ca159501f38bbca">GetTexture</a>()override final</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_view_base.html#aacd89c0d9f3151feee504630a3f2c5a1">m_pTexture</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#a0c4b1d7ff93072f2bcc7c9843503c3b8"> 92</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<ISampler></a> <a class="code" href="class_diligent_1_1_texture_view_base.html#a0c4b1d7ff93072f2bcc7c9843503c3b8">m_pSampler</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#aacd89c0d9f3151feee504630a3f2c5a1"> 95</a></span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *<a class="code" href="class_diligent_1_1_texture_view_base.html#aacd89c0d9f3151feee504630a3f2c5a1">m_pTexture</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#a78cc90a178c7720f8a563e540e174691"> 99</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<ITexture></a> <a class="code" href="class_diligent_1_1_texture_view_base.html#a78cc90a178c7720f8a563e540e174691">m_spTexture</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> };</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="ttc" id="class_diligent_1_1_texture_view_base_html_aacd89c0d9f3151feee504630a3f2c5a1"><div class="ttname"><a href="class_diligent_1_1_texture_view_base.html#aacd89c0d9f3151feee504630a3f2c5a1">Diligent::TextureViewBase::m_pTexture</a></div><div class="ttdeci">ITexture * m_pTexture</div><div class="ttdoc">Raw pointer to the texture. </div><div class="ttdef"><b>Definition:</b> TextureViewBase.h:95</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "DeviceObjectBase.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "RefCntAutoPtr.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "GraphicsAccessories.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">template</span><<span class="keyword">class</span> BaseInterface></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase</a><BaseInterface, TextureViewDesc></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_device_object_base.html">DeviceObjectBase<BaseInterface, TextureViewDesc></a> <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#af39c54431780ae60fd925d898050e651"> 55</a></span>  <a class="code" href="class_diligent_1_1_texture_view_base.html#af39c54431780ae60fd925d898050e651">TextureViewBase</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">bool</span> bIsDefaultView ) :</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Default views are created as part of the texture, so we cannot not keep strong </span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// reference to the texture to avoid cyclic links. Instead, we will attach to the </span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// reference counters of the texture.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_diligent_1_1_device_object_base.html">TDeviceObjectBase</a>( pRefCounters, pDevice, ViewDesc ),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_diligent_1_1_texture_view_base.html#aacd89c0d9f3151feee504630a3f2c5a1">m_pTexture</a>( pTexture ),</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// For non-default view, we will keep strong reference to texture</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_diligent_1_1_texture_view_base.html#a78cc90a178c7720f8a563e540e174691">m_spTexture</a>(bIsDefaultView ? nullptr : pTexture)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  IMPLEMENT_QUERY_INTERFACE_IN_PLACE( IID_TextureView, TDeviceObjectBase )</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#a19a845d21c78bec13d2f605b62df1944"> 72</a></span>  virtual <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_base.html#a19a845d21c78bec13d2f605b62df1944">SetSampler</a>( class <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a> *pSampler )override final</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  VERIFY( this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a> == <a class="code" href="namespace_diligent.html#a4f10ca1e5c5034aa6dcc86224d1189bdacd9fed7b22b88f0a8b40d0d98d3c1243">TEXTURE_VIEW_SHADER_RESOURCE</a>, <span class="stringliteral">"Texture view \""</span>, this->m_Desc.Name, <span class="stringliteral">"\": A sampler can be attached to a shader resource view only. The view type is "</span>, GetTexViewTypeLiteralName(this-><a class="code" href="class_diligent_1_1_device_object_base.html#a4ad4da7984cbf82505d362f0fc197bae">m_Desc</a>.<a class="code" href="struct_diligent_1_1_texture_view_desc.html#aff7202999e6f78d0f51e58ceb2e9e301">ViewType</a>) );</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_diligent_1_1_texture_view_base.html#a0c4b1d7ff93072f2bcc7c9843503c3b8">m_pSampler</a> = pSampler;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#a3cfb65a9bfbccb84a3005aaa1edcf50f"> 79</a></span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_sampler.html">ISampler</a>* <a class="code" href="class_diligent_1_1_texture_view_base.html#a3cfb65a9bfbccb84a3005aaa1edcf50f">GetSampler</a>()override final</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  { </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_view_base.html#a0c4b1d7ff93072f2bcc7c9843503c3b8">m_pSampler</a>; </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#a61cc6594bfa7e4481ca159501f38bbca"> 85</a></span>  <span class="keyword">virtual</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a>* <a class="code" href="class_diligent_1_1_texture_view_base.html#a61cc6594bfa7e4481ca159501f38bbca">GetTexture</a>()override final</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_view_base.html#aacd89c0d9f3151feee504630a3f2c5a1">m_pTexture</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#a0c4b1d7ff93072f2bcc7c9843503c3b8"> 92</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<ISampler></a> <a class="code" href="class_diligent_1_1_texture_view_base.html#a0c4b1d7ff93072f2bcc7c9843503c3b8">m_pSampler</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#aacd89c0d9f3151feee504630a3f2c5a1"> 95</a></span>  <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *<a class="code" href="class_diligent_1_1_texture_view_base.html#aacd89c0d9f3151feee504630a3f2c5a1">m_pTexture</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_base.html#a78cc90a178c7720f8a563e540e174691"> 99</a></span>  <a class="code" href="class_diligent_1_1_ref_cnt_auto_ptr.html">Diligent::RefCntAutoPtr<ITexture></a> <a class="code" href="class_diligent_1_1_texture_view_base.html#a78cc90a178c7720f8a563e540e174691">m_spTexture</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> };</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="ttc" id="class_diligent_1_1_texture_view_base_html_aacd89c0d9f3151feee504630a3f2c5a1"><div class="ttname"><a href="class_diligent_1_1_texture_view_base.html#aacd89c0d9f3151feee504630a3f2c5a1">Diligent::TextureViewBase::m_pTexture</a></div><div class="ttdeci">ITexture * m_pTexture</div><div class="ttdoc">Raw pointer to the texture. </div><div class="ttdef"><b>Definition:</b> TextureViewBase.h:95</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_texture_view_base_html_a61cc6594bfa7e4481ca159501f38bbca"><div class="ttname"><a href="class_diligent_1_1_texture_view_base.html#a61cc6594bfa7e4481ca159501f38bbca">Diligent::TextureViewBase::GetTexture</a></div><div class="ttdeci">virtual ITexture * GetTexture() override final</div><div class="ttdoc">Implementation of ITextureView::GetTexture() </div><div class="ttdef"><b>Definition:</b> TextureViewBase.h:85</div></div> @@ -92,7 +92,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_view_d3_d11_8h_source.html b/doc/html/_texture_view_d3_d11_8h_source.html index 876d24b5..09a3ee3f 100644 --- a/doc/html/_texture_view_d3_d11_8h_source.html +++ b/doc/html/_texture_view_d3_d11_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureViewD3D11.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {0767EBE4-AD47-4E70-9B65-38C6B9CAC37D}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureViewD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x767ebe4, 0xad47, 0x4e70, { 0x9b, 0x65, 0x38, 0xc6, 0xb9, 0xca, 0xc3, 0x7d } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_view_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_view_d3_d11.html">ITextureViewD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11View* <a class="code" href="class_diligent_1_1_i_texture_view_d3_d11.html#ae89ec2fb81d4c75139fccb0efd9b930a">GetD3D11View</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {0767EBE4-AD47-4E70-9B65-38C6B9CAC37D}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureViewD3D11 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x767ebe4, 0xad47, 0x4e70, { 0x9b, 0x65, 0x38, 0xc6, 0xb9, 0xca, 0xc3, 0x7d } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_view_d3_d11.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_view_d3_d11.html">ITextureViewD3D11</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> ID3D11View* <a class="code" href="class_diligent_1_1_i_texture_view_d3_d11.html#ae89ec2fb81d4c75139fccb0efd9b930a">GetD3D11View</a>() = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_view_d3_d11_html_ae89ec2fb81d4c75139fccb0efd9b930a"><div class="ttname"><a href="class_diligent_1_1_i_texture_view_d3_d11.html#ae89ec2fb81d4c75139fccb0efd9b930a">Diligent::ITextureViewD3D11::GetD3D11View</a></div><div class="ttdeci">virtual ID3D11View * GetD3D11View()=0</div><div class="ttdoc">Returns a pointer to the ID3D11View interface of the internal Direct3D11 object. </div></div> <div class="ttc" id="class_diligent_1_1_i_texture_view_d3_d11_html"><div class="ttname"><a href="class_diligent_1_1_i_texture_view_d3_d11.html">Diligent::ITextureViewD3D11</a></div><div class="ttdoc">Interface to the texture view object implemented in D3D11. </div><div class="ttdef"><b>Definition:</b> TextureViewD3D11.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_view_html"><div class="ttname"><a href="class_diligent_1_1_i_texture_view.html">Diligent::ITextureView</a></div><div class="ttdoc">Texture view interface. </div><div class="ttdef"><b>Definition:</b> TextureView.h:163</div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_view_d3_d11_impl_8h_source.html b/doc/html/_texture_view_d3_d11_impl_8h_source.html index 676798ad..2c7acfb5 100644 --- a/doc/html/_texture_view_d3_d11_impl_8h_source.html +++ b/doc/html/_texture_view_d3_d11_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureViewD3D11Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureViewD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureViewBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d11_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html">TextureViewD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase</a><ITextureViewD3D11></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase<ITextureViewD3D11></a> <a class="code" href="class_diligent_1_1_texture_view_base.html">TTextureViewBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html">TextureViewD3D11Impl</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ID3D11View* pD3D11View,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> bIsDefaultView);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html#aef81bf0b6edd41ebbd98b382f5c80360">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d11_impl.html#aa970773cab28d03b5cf15209b3eb140e"> 53</a></span>  <span class="keyword">virtual</span> ID3D11View* <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html#aa970773cab28d03b5cf15209b3eb140e">GetD3D11View</a>()override final</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html#a2852fe19f64e1315f348a4ad3849dcda">m_pD3D11View</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html#a7f4cb4bdb363ec7ba45d436955b502b5">GenerateMips</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d11_impl.html#a2852fe19f64e1315f348a4ad3849dcda"> 62</a></span>  CComPtr<ID3D11View> <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html#a2852fe19f64e1315f348a4ad3849dcda">m_pD3D11View</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureViewD3D11.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D11.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureViewBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d11_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html">TextureViewD3D11Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase</a><ITextureViewD3D11></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase<ITextureViewD3D11></a> <a class="code" href="class_diligent_1_1_texture_view_base.html">TTextureViewBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html">TextureViewD3D11Impl</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ID3D11View* pD3D11View,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> bIsDefaultView);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html#aef81bf0b6edd41ebbd98b382f5c80360">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d11_impl.html#aa970773cab28d03b5cf15209b3eb140e"> 53</a></span>  <span class="keyword">virtual</span> ID3D11View* <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html#aa970773cab28d03b5cf15209b3eb140e">GetD3D11View</a>()override final</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html#a2852fe19f64e1315f348a4ad3849dcda">m_pD3D11View</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html#a7f4cb4bdb363ec7ba45d436955b502b5">GenerateMips</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext )<span class="keyword">override</span> <span class="keyword">final</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d11_impl.html#a2852fe19f64e1315f348a4ad3849dcda"> 62</a></span>  CComPtr<ID3D11View> <a class="code" href="class_diligent_1_1_texture_view_d3_d11_impl.html#a2852fe19f64e1315f348a4ad3849dcda">m_pD3D11View</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_texture_view_d3_d11_impl_html_aef81bf0b6edd41ebbd98b382f5c80360"><div class="ttname"><a href="class_diligent_1_1_texture_view_d3_d11_impl.html#aef81bf0b6edd41ebbd98b382f5c80360">Diligent::TextureViewD3D11Impl::QueryInterface</a></div><div class="ttdeci">virtual void QueryInterface(const Diligent::INTERFACE_ID &IID, IObject **ppInterface) override final</div><div class="ttdoc">Queries the specific interface, see IObject::QueryInterface() for details. </div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_texture_view_d3_d11_impl_html_aa970773cab28d03b5cf15209b3eb140e"><div class="ttname"><a href="class_diligent_1_1_texture_view_d3_d11_impl.html#aa970773cab28d03b5cf15209b3eb140e">Diligent::TextureViewD3D11Impl::GetD3D11View</a></div><div class="ttdeci">virtual ID3D11View * GetD3D11View() override final</div><div class="ttdoc">Returns a pointer to the ID3D11View interface of the internal Direct3D11 object. </div><div class="ttdef"><b>Definition:</b> TextureViewD3D11Impl.h:53</div></div> @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_view_d3_d12_8h_source.html b/doc/html/_texture_view_d3_d12_8h_source.html index f1b5833a..d2c7ef80 100644 --- a/doc/html/_texture_view_d3_d12_8h_source.html +++ b/doc/html/_texture_view_d3_d12_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureViewD3D12.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {BDFBD325-0699-4720-BC0E-BF84086EC033}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureViewD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xbdfbd325, 0x699, 0x4720, { 0xbc, 0xe, 0xbf, 0x84, 0x8, 0x6e, 0xc0, 0x33 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_view_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html#a4ea879ed8f5ec9ad92cd5a0fcc0f62d7">GetCPUDescriptorHandle</a>() = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {BDFBD325-0699-4720-BC0E-BF84086EC033}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureViewD3D12 =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0xbdfbd325, 0x699, 0x4720, { 0xbc, 0xe, 0xbf, 0x84, 0x8, 0x6e, 0xc0, 0x33 } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_view_d3_d12.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html">ITextureViewD3D12</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_i_texture_view_d3_d12.html#a4ea879ed8f5ec9ad92cd5a0fcc0f62d7">GetCPUDescriptorHandle</a>() = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_view_d3_d12_html"><div class="ttname"><a href="class_diligent_1_1_i_texture_view_d3_d12.html">Diligent::ITextureViewD3D12</a></div><div class="ttdoc">Interface to the texture view object implemented in D3D11. </div><div class="ttdef"><b>Definition:</b> TextureViewD3D12.h:39</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_view_html"><div class="ttname"><a href="class_diligent_1_1_i_texture_view.html">Diligent::ITextureView</a></div><div class="ttdoc">Texture view interface. </div><div class="ttdef"><b>Definition:</b> TextureView.h:163</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_view_d3_d12_html_a4ea879ed8f5ec9ad92cd5a0fcc0f62d7"><div class="ttname"><a href="class_diligent_1_1_i_texture_view_d3_d12.html#a4ea879ed8f5ec9ad92cd5a0fcc0f62d7">Diligent::ITextureViewD3D12::GetCPUDescriptorHandle</a></div><div class="ttdeci">virtual D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandle()=0</div><div class="ttdoc">Returns CPU descriptor handle of the texture view. </div></div> @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_view_d3_d12_impl_8h_source.html b/doc/html/_texture_view_d3_d12_impl_8h_source.html index 6e936b1d..4b287bc4 100644 --- a/doc/html/_texture_view_d3_d12_impl_8h_source.html +++ b/doc/html/_texture_view_d3_d12_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureViewD3D12Impl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureViewD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureViewBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d12_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html">TextureViewD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase</a><ITextureViewD3D12></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase<ITextureViewD3D12></a> <a class="code" href="class_diligent_1_1_texture_view_base.html">TTextureViewBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html">TextureViewD3D12Impl</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  DescriptorHeapAllocation &&HandleAlloc,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> bIsDefaultView);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html#af775420c4f093ff5d478403912eb9b93">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html#a621b502c83253d842918f5723854be78">GenerateMips</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext )<span class="keyword">override</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d12_impl.html#ae3b7acd8ba5c2cd59b1b3433989a952c"> 55</a></span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html#ae3b7acd8ba5c2cd59b1b3433989a952c">GetCPUDescriptorHandle</a>()<span class="keyword">override</span>{<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html#a929c92afae9a78068418964cc5b43331">m_Descriptor</a>.GetCpuHandle();}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d12_impl.html#a929c92afae9a78068418964cc5b43331"> 59</a></span>  DescriptorHeapAllocation <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html#a929c92afae9a78068418964cc5b43331">m_Descriptor</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureViewD3D12.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "RenderDeviceD3D12.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TextureViewBase.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DescriptorHeap.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d12_impl.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html">TextureViewD3D12Impl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase</a><ITextureViewD3D12></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase<ITextureViewD3D12></a> <a class="code" href="class_diligent_1_1_texture_view_base.html">TTextureViewBase</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html">TextureViewD3D12Impl</a>( IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_texture.html">ITexture</a> *pTexture,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  DescriptorHeapAllocation &&HandleAlloc,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> bIsDefaultView);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html#af775420c4f093ff5d478403912eb9b93">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html#a621b502c83253d842918f5723854be78">GenerateMips</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext )<span class="keyword">override</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d12_impl.html#ae3b7acd8ba5c2cd59b1b3433989a952c"> 55</a></span>  <span class="keyword">virtual</span> D3D12_CPU_DESCRIPTOR_HANDLE <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html#ae3b7acd8ba5c2cd59b1b3433989a952c">GetCPUDescriptorHandle</a>()<span class="keyword">override</span>{<span class="keywordflow">return</span> <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html#a929c92afae9a78068418964cc5b43331">m_Descriptor</a>.GetCpuHandle();}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_d3_d12_impl.html#a929c92afae9a78068418964cc5b43331"> 59</a></span>  DescriptorHeapAllocation <a class="code" href="class_diligent_1_1_texture_view_d3_d12_impl.html#a929c92afae9a78068418964cc5b43331">m_Descriptor</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_texture_view_d3_d12_impl_html_ae3b7acd8ba5c2cd59b1b3433989a952c"><div class="ttname"><a href="class_diligent_1_1_texture_view_d3_d12_impl.html#ae3b7acd8ba5c2cd59b1b3433989a952c">Diligent::TextureViewD3D12Impl::GetCPUDescriptorHandle</a></div><div class="ttdeci">virtual D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandle() override</div><div class="ttdoc">Returns CPU descriptor handle of the texture view. </div><div class="ttdef"><b>Definition:</b> TextureViewD3D12Impl.h:55</div></div> <div class="ttc" id="class_diligent_1_1_texture_view_d3_d12_impl_html_a621b502c83253d842918f5723854be78"><div class="ttname"><a href="class_diligent_1_1_texture_view_d3_d12_impl.html#a621b502c83253d842918f5723854be78">Diligent::TextureViewD3D12Impl::GenerateMips</a></div><div class="ttdeci">void GenerateMips(IDeviceContext *pContext) override</div><div class="ttdoc">Generates a mipmap chain. </div><div class="ttdef"><b>Definition:</b> TextureViewD3D12Impl.cpp:49</div></div> @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_view_g_l_8h_source.html b/doc/html/_texture_view_g_l_8h_source.html index c0252eee..bac95575 100644 --- a/doc/html/_texture_view_g_l_8h_source.html +++ b/doc/html/_texture_view_g_l_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureViewGL.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {15F93272-6135-414F-AB10-53FF9A5004AD}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureViewGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x15f93272, 0x6135, 0x414f, { 0xab, 0x10, 0x53, 0xff, 0x9a, 0x50, 0x4, 0xad } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_view_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_view_g_l.html">ITextureViewGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">//const GLObjectWrappers::GLTextureObj& GetHandle();</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">//GLenum GetBindTarget();</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "TextureView.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// {15F93272-6135-414F-AB10-53FF9A5004AD}</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> constexpr INTERFACE_ID IID_TextureViewGL =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> { 0x15f93272, 0x6135, 0x414f, { 0xab, 0x10, 0x53, 0xff, 0x9a, 0x50, 0x4, 0xad } };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_diligent_1_1_i_texture_view_g_l.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_i_texture_view_g_l.html">ITextureViewGL</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_i_texture_view.html">ITextureView</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">//const GLObjectWrappers::GLTextureObj& GetHandle();</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">//GLenum GetBindTarget();</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_view_html"><div class="ttname"><a href="class_diligent_1_1_i_texture_view.html">Diligent::ITextureView</a></div><div class="ttdoc">Texture view interface. </div><div class="ttdef"><b>Definition:</b> TextureView.h:163</div></div> <div class="ttc" id="class_diligent_1_1_i_texture_view_g_l_html"><div class="ttname"><a href="class_diligent_1_1_i_texture_view_g_l.html">Diligent::ITextureViewGL</a></div><div class="ttdoc">Interface to the texture view object implemented in OpenGL. </div><div class="ttdef"><b>Definition:</b> TextureViewGL.h:39</div></div> </div><!-- fragment --></div><!-- contents --> @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_texture_view_g_l_impl_8h_source.html b/doc/html/_texture_view_g_l_impl_8h_source.html index ae7a44f6..02ba6d8e 100644 --- a/doc/html/_texture_view_g_l_impl_8h_source.html +++ b/doc/html/_texture_view_g_l_impl_8h_source.html @@ -69,7 +69,7 @@ $(function() { <div class="title">TextureViewGLImpl.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "TextureViewGL.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "TextureViewBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_g_l_impl.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html">TextureViewGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase</a><ITextureViewGL></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase<ITextureViewGL></a> <a class="code" href="class_diligent_1_1_texture_view_base.html">TTextureViewBase</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html">TextureViewGLImpl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a> *pTexture,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">bool</span> bCreateGLViewTex,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">bool</span> bIsDefaultView );</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ~<a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html">TextureViewGLImpl</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html#a6f548d5aaea8818aca2907b91921aee4">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">const</span> GLObjectWrappers::GLTextureObj& GetHandle();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GLenum GetBindTarget();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> SetBindTarget(GLenum ViewTexBindTarget) { m_ViewTexBindTarget = ViewTexBindTarget; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html#ae07084e8ea01dc8d49dd79738fc79e36">GenerateMips</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext )<span class="keyword">override</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GLObjectWrappers::GLTextureObj m_ViewTexGLHandle;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLenum m_ViewTexBindTarget;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="ttc" id="class_diligent_1_1_texture_base_g_l_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_g_l.html">Diligent::TextureBaseGL</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureGL interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseGL.h:41</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "TextureViewGL.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "TextureViewBase.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "RenderDevice.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "GLObjectWrapper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span>FixedBlockMemoryAllocator;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_diligent_1_1_texture_view_g_l_impl.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html">TextureViewGLImpl</a> : <span class="keyword">public</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase</a><ITextureViewGL></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typedef</span> <a class="code" href="class_diligent_1_1_texture_view_base.html">TextureViewBase<ITextureViewGL></a> <a class="code" href="class_diligent_1_1_texture_view_base.html">TTextureViewBase</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html">TextureViewGLImpl</a>(IReferenceCounters *pRefCounters,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_i_render_device.html">IRenderDevice</a> *pDevice, </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_diligent_1_1_texture_view_desc.html">TextureViewDesc</a>& ViewDesc, </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">class</span> <a class="code" href="class_diligent_1_1_texture_base_g_l.html">TextureBaseGL</a> *pTexture,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">bool</span> bCreateGLViewTex,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">bool</span> bIsDefaultView );</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ~<a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html">TextureViewGLImpl</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html#a6f548d5aaea8818aca2907b91921aee4">QueryInterface</a>( <span class="keyword">const</span> Diligent::INTERFACE_ID &IID, IObject **ppInterface )<span class="keyword">override</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">const</span> GLObjectWrappers::GLTextureObj& GetHandle();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GLenum GetBindTarget();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> SetBindTarget(GLenum ViewTexBindTarget) { m_ViewTexBindTarget = ViewTexBindTarget; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">void</span> <a class="code" href="class_diligent_1_1_texture_view_g_l_impl.html#ae07084e8ea01dc8d49dd79738fc79e36">GenerateMips</a>( <a class="code" href="class_diligent_1_1_i_device_context.html">IDeviceContext</a> *pContext )<span class="keyword">override</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GLObjectWrappers::GLTextureObj m_ViewTexGLHandle;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLenum m_ViewTexBindTarget;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="ttc" id="class_diligent_1_1_texture_base_g_l_html"><div class="ttname"><a href="class_diligent_1_1_texture_base_g_l.html">Diligent::TextureBaseGL</a></div><div class="ttdoc">Base implementation of the Diligent::ITextureGL interface. </div><div class="ttdef"><b>Definition:</b> TextureBaseGL.h:41</div></div> <div class="ttc" id="class_diligent_1_1_i_render_device_html"><div class="ttname"><a href="class_diligent_1_1_i_render_device.html">Diligent::IRenderDevice</a></div><div class="ttdoc">Render device interface. </div><div class="ttdef"><b>Definition:</b> RenderDevice.h:55</div></div> <div class="ttc" id="class_diligent_1_1_texture_view_g_l_impl_html_ae07084e8ea01dc8d49dd79738fc79e36"><div class="ttname"><a href="class_diligent_1_1_texture_view_g_l_impl.html#ae07084e8ea01dc8d49dd79738fc79e36">Diligent::TextureViewGLImpl::GenerateMips</a></div><div class="ttdeci">void GenerateMips(IDeviceContext *pContext) override</div><div class="ttdoc">Generates a mipmap chain. </div><div class="ttdef"><b>Definition:</b> TextureViewGLImpl.cpp:75</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_timer_8h_source.html b/doc/html/_timer_8h_source.html index 7434e72b..43b03fda 100644 --- a/doc/html/_timer_8h_source.html +++ b/doc/html/_timer_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">Timer.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <chrono></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">class </span>Timer</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>: </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  Timer();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">void</span> Restart();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> GetElapsedTime()<span class="keyword">const</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">float</span> GetElapsedTimef()<span class="keyword">const</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  std::chrono::high_resolution_clock::time_point m_StartTime;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <chrono></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">class </span>Timer</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>: </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  Timer();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">void</span> Restart();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> GetElapsedTime()<span class="keyword">const</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">float</span> GetElapsedTimef()<span class="keyword">const</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  std::chrono::high_resolution_clock::time_point m_StartTime;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  };</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_unique_identifier_8h_source.html b/doc/html/_unique_identifier_8h_source.html index 1b6dc631..5ea73c48 100644 --- a/doc/html/_unique_identifier_8h_source.html +++ b/doc/html/_unique_identifier_8h_source.html @@ -69,13 +69,13 @@ $(function() { <div class="title">UniqueIdentifier.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "Atomics.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">typedef</span> Atomics::Long UniqueIdentifier;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// Template switch is used to have distinct counters </span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// for unrelated groups of objects</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ObjectsClass> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">class </span>UniqueIdHelper</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  UniqueIdHelper() :</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_ID(0),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_bIsInitialized( false )</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {}</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  UniqueIdHelper( UniqueIdHelper&& RHS) : </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_ID( RHS.m_ID ),</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_bIsInitialized( RHS.m_bIsInitialized )</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  RHS.m_ID = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  RHS.m_bIsInitialized = <span class="keyword">false</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> UniqueIdHelper& operator = (UniqueIdHelper&& RHS)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_ID = RHS.m_ID;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_bIsInitialized = RHS.m_bIsInitialized;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  RHS.m_ID = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  RHS.m_bIsInitialized = <span class="keyword">false</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  UniqueIdentifier GetID()<span class="keyword">const</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword"> </span>{ </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>( !m_bIsInitialized )</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">static</span> Atomics::AtomicLong sm_GlobalCounter;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_ID = Atomics::AtomicIncrement(sm_GlobalCounter);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_bIsInitialized = <span class="keyword">true</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> m_ID; </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  UniqueIdHelper( <span class="keyword">const</span> UniqueIdHelper& );</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">const</span> UniqueIdHelper& operator = ( <span class="keyword">const</span> UniqueIdHelper& );</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">mutable</span> UniqueIdentifier m_ID;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">mutable</span> <span class="keywordtype">bool</span> m_bIsInitialized;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "Atomics.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">typedef</span> Atomics::Long UniqueIdentifier;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// Template switch is used to have distinct counters </span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// for unrelated groups of objects</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ObjectsClass> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">class </span>UniqueIdHelper</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  UniqueIdHelper() :</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_ID(0),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_bIsInitialized( false )</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {}</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  UniqueIdHelper( UniqueIdHelper&& RHS) : </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_ID( RHS.m_ID ),</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_bIsInitialized( RHS.m_bIsInitialized )</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  RHS.m_ID = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  RHS.m_bIsInitialized = <span class="keyword">false</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> UniqueIdHelper& operator = (UniqueIdHelper&& RHS)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_ID = RHS.m_ID;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_bIsInitialized = RHS.m_bIsInitialized;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  RHS.m_ID = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  RHS.m_bIsInitialized = <span class="keyword">false</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  UniqueIdentifier GetID()<span class="keyword">const</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword"> </span>{ </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>( !m_bIsInitialized )</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">static</span> Atomics::AtomicLong sm_GlobalCounter;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_ID = Atomics::AtomicIncrement(sm_GlobalCounter);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_bIsInitialized = <span class="keyword">true</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> m_ID; </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  UniqueIdHelper( <span class="keyword">const</span> UniqueIdHelper& );</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">const</span> UniqueIdHelper& operator = ( <span class="keyword">const</span> UniqueIdHelper& );</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">mutable</span> UniqueIdentifier m_ID;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">mutable</span> <span class="keywordtype">bool</span> m_bIsInitialized;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_v_a_o_cache_8h_source.html b/doc/html/_v_a_o_cache_8h_source.html index 78186bef..17d41b3c 100644 --- a/doc/html/_v_a_o_cache_8h_source.html +++ b/doc/html/_v_a_o_cache_8h_source.html @@ -69,14 +69,14 @@ $(function() { <div class="title">VAOCache.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstring></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "InputLayout.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "LockHelper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DeviceContextBase.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>VAOCache</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  VAOCache();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ~VAOCache();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  VAOCache(<span class="keyword">const</span> VAOCache&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  VAOCache( VAOCache&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  VAOCache& operator = (<span class="keyword">const</span> VAOCache&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  VAOCache& operator = ( VAOCache&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> GLObjectWrappers::GLVertexArrayObj& GetVAO( IPipelineState *pPSO,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  IBuffer *pIndexBuffer,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  VertexStreamInfo VertexStreams[],</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  Uint32 NumVertexStreams,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">class</span> GLContextState &GLContextState);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> GLObjectWrappers::GLVertexArrayObj& GetEmptyVAO();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> OnDestroyBuffer(IBuffer *pBuffer);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span> OnDestroyPSO(IPipelineState *pPSO);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// This structure is used as the key to find VAO</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">struct </span>VAOCacheKey</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  VAOCacheKey(<span class="keyword">const</span> IPipelineState* pso, <span class="keyword">const</span> IBuffer* indBuffer) : </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  pPSO(pso),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  pIndexBuffer(indBuffer),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  NumUsedSlots(0)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {}</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Note that the the pointers are used for ordering only</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// They are not used to access the objects</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// VAO encapsulates both input layout and all bound buffers</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// PSO uniqly defines the layout (attrib pointers, divisors, etc.),</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// so we do not need to add individual layout elements to the key</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// The keey needs to contain all bound buffers</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">const</span> IPipelineState* <span class="keyword">const</span> pPSO;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">const</span> IBuffer* <span class="keyword">const</span> pIndexBuffer;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint32 NumUsedSlots;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">struct </span>StreamAttribs</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> IBuffer* pBuffer;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  Uint32 Stride;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  Uint32 Offset;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }Streams[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>];</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">mutable</span> <span class="keywordtype">size_t</span> Hash = 0;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> VAOCacheKey &Key)<span class="keyword">const</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> pPSO == Key.pPSO &&</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  pIndexBuffer == Key.pIndexBuffer &&</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  NumUsedSlots == Key.NumUsedSlots &&</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  std::memcmp(Streams, Key.Streams, <span class="keyword">sizeof</span>(StreamAttribs) * NumUsedSlots) == 0;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">struct </span>VAOCacheKeyHashFunc</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  std::size_t operator() ( <span class="keyword">const</span> VAOCacheKey& Key )<span class="keyword">const</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (Key.Hash == 0)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  std::size_t Seed = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  HashCombine(Seed, Key.pPSO, Key.NumUsedSlots);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span> (Key.pIndexBuffer)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  HashCombine(Seed, Key.pIndexBuffer);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">for</span> (Uint32 slot = 0; slot < Key.NumUsedSlots; ++slot)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">auto</span> &CurrStream = Key.Streams[slot];</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (CurrStream.pBuffer)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  HashCombine(Seed, CurrStream.pBuffer);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  HashCombine(Seed, CurrStream.Offset);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  HashCombine(Seed, CurrStream.Stride);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  Key.Hash = Seed;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> Key.Hash;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  };</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">friend</span> <span class="keyword">class </span>RenderDeviceGLImpl;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  ThreadingTools::LockFlag m_CacheLockFlag;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  std::unordered_map<VAOCacheKey, GLObjectWrappers::GLVertexArrayObj, VAOCacheKeyHashFunc> m_Cache;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  std::unordered_multimap<const IPipelineState*, VAOCacheKey> m_PSOToKey;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  std::unordered_multimap<const IBuffer*, VAOCacheKey> m_BuffToKey;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// Any draw command fails if no VAO is bound. We will use this empty</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// VAO for draw commands with null input layout, such as these that</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// only use VertexID as input.</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  GLObjectWrappers::GLVertexArrayObj m_EmptyVAO;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> };</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="ttc" id="namespace_diligent_html_a9d3d207f6d44cb2988a2748e4dc97722"><div class="ttname"><a href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">Diligent::MaxBufferSlots</a></div><div class="ttdeci">static constexpr Uint32 MaxBufferSlots</div><div class="ttdoc">Maximum number of input buffer slots. D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT == 32...</div><div class="ttdef"><b>Definition:</b> Constants.h:33</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstring></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "GraphicsTypes.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Buffer.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "InputLayout.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "LockHelper.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "HashUtils.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DeviceContextBase.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "BaseInterfacesGL.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>VAOCache</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  VAOCache();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ~VAOCache();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  VAOCache(<span class="keyword">const</span> VAOCache&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  VAOCache( VAOCache&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  VAOCache& operator = (<span class="keyword">const</span> VAOCache&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  VAOCache& operator = ( VAOCache&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> GLObjectWrappers::GLVertexArrayObj& GetVAO( IPipelineState *pPSO,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  IBuffer *pIndexBuffer,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  VertexStreamInfo VertexStreams[],</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  Uint32 NumVertexStreams,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">class</span> GLContextState &GLContextState);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> GLObjectWrappers::GLVertexArrayObj& GetEmptyVAO();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> OnDestroyBuffer(IBuffer *pBuffer);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span> OnDestroyPSO(IPipelineState *pPSO);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// This structure is used as the key to find VAO</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">struct </span>VAOCacheKey</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  VAOCacheKey(<span class="keyword">const</span> IPipelineState* pso, <span class="keyword">const</span> IBuffer* indBuffer) : </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  pPSO(pso),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  pIndexBuffer(indBuffer),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  NumUsedSlots(0)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {}</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Note that the the pointers are used for ordering only</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// They are not used to access the objects</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// VAO encapsulates both input layout and all bound buffers</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// PSO uniqly defines the layout (attrib pointers, divisors, etc.),</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// so we do not need to add individual layout elements to the key</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// The keey needs to contain all bound buffers</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">const</span> IPipelineState* <span class="keyword">const</span> pPSO;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">const</span> IBuffer* <span class="keyword">const</span> pIndexBuffer;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  Uint32 NumUsedSlots;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">struct </span>StreamAttribs</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> IBuffer* pBuffer;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  Uint32 Stride;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  Uint32 Offset;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }Streams[<a class="code" href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">MaxBufferSlots</a>];</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">mutable</span> <span class="keywordtype">size_t</span> Hash = 0;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">bool</span> operator == (<span class="keyword">const</span> VAOCacheKey &Key)<span class="keyword">const</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> pPSO == Key.pPSO &&</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  pIndexBuffer == Key.pIndexBuffer &&</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  NumUsedSlots == Key.NumUsedSlots &&</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  std::memcmp(Streams, Key.Streams, <span class="keyword">sizeof</span>(StreamAttribs) * NumUsedSlots) == 0;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">struct </span>VAOCacheKeyHashFunc</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  std::size_t operator() ( <span class="keyword">const</span> VAOCacheKey& Key )<span class="keyword">const</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (Key.Hash == 0)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  std::size_t Seed = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  HashCombine(Seed, Key.pPSO, Key.NumUsedSlots);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span> (Key.pIndexBuffer)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  HashCombine(Seed, Key.pIndexBuffer);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">for</span> (Uint32 slot = 0; slot < Key.NumUsedSlots; ++slot)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">auto</span> &CurrStream = Key.Streams[slot];</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (CurrStream.pBuffer)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  HashCombine(Seed, CurrStream.pBuffer);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  HashCombine(Seed, CurrStream.Offset);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  HashCombine(Seed, CurrStream.Stride);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  Key.Hash = Seed;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> Key.Hash;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  };</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">friend</span> <span class="keyword">class </span>RenderDeviceGLImpl;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  ThreadingTools::LockFlag m_CacheLockFlag;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  std::unordered_map<VAOCacheKey, GLObjectWrappers::GLVertexArrayObj, VAOCacheKeyHashFunc> m_Cache;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  std::unordered_multimap<const IPipelineState*, VAOCacheKey> m_PSOToKey;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  std::unordered_multimap<const IBuffer*, VAOCacheKey> m_BuffToKey;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// Any draw command fails if no VAO is bound. We will use this empty</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// VAO for draw commands with null input layout, such as these that</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// only use VertexID as input.</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  GLObjectWrappers::GLVertexArrayObj m_EmptyVAO;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> };</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="ttc" id="namespace_diligent_html_a9d3d207f6d44cb2988a2748e4dc97722"><div class="ttname"><a href="namespace_diligent.html#a9d3d207f6d44cb2988a2748e4dc97722">Diligent::MaxBufferSlots</a></div><div class="ttdeci">static constexpr Uint32 MaxBufferSlots</div><div class="ttdoc">Maximum number of input buffer slots. D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT == 32...</div><div class="ttdef"><b>Definition:</b> Constants.h:33</div></div> <div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Namespace for the OpenGL implementation of the graphics engine. </div><div class="ttdef"><b>Definition:</b> BufferD3D11Impl.h:34</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_validated_cast_8h_source.html b/doc/html/_validated_cast_8h_source.html index 0ca88439..53d4111e 100644 --- a/doc/html/_validated_cast_8h_source.html +++ b/doc/html/_validated_cast_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">ValidatedCast.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">template</span><<span class="keyword">typename</span> DstType, <span class="keyword">typename</span> SrcType></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> DstType* ValidatedCast( SrcType *Ptr )</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">if</span>(Ptr != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  CHECK_DYNAMIC_TYPE( DstType, Ptr );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> Ptr != <span class="keyword">nullptr</span> ? <span class="keyword">static_cast<</span>DstType*<span class="keyword">></span>( Ptr ) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> }</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">template</span><<span class="keyword">typename</span> DstType, <span class="keyword">typename</span> SrcType></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> DstType* ValidatedCast( SrcType *Ptr )</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">if</span>(Ptr != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  CHECK_DYNAMIC_TYPE( DstType, Ptr );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> Ptr != <span class="keyword">nullptr</span> ? <span class="keyword">static_cast<</span>DstType*<span class="keyword">></span>( Ptr ) : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> }</div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:00 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:25 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/_variable_size_allocations_manager_8h_source.html b/doc/html/_variable_size_allocations_manager_8h_source.html index 7e519369..4b41b00a 100644 --- a/doc/html/_variable_size_allocations_manager_8h_source.html +++ b/doc/html/_variable_size_allocations_manager_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">VariableSizeAllocationsManager.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// Helper class that handles free memory block management to accommodate variable-size allocation requests</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/variable-size-memory-allocations-manager/</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// The class handles free memory block management to accommodate variable-size allocation requests. </span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// It keeps track of free blocks only and does not record allocation sizes. The class uses two ordered maps </span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="comment">// to facilitate operations. The first map keeps blocks sorted by their offsets. The second multimap keeps blocks </span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">// sorted by their sizes. The elements of the two maps reference each other, which enables efficient block </span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// insertion, removal and merging.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">//</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// 8 32 64 104</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// |<---16--->| |<-----24------>| |<---16--->| |<-----32----->|</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">//</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// m_FreeBlocksBySize m_FreeBlocksByOffset </span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// size->offset offset->size</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// </span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// 16 ------------------> 8 ----------> {size = 16, &m_FreeBlocksBySize[0]}</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">//</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// 16 ------. .-------> 32 ----------> {size = 24, &m_FreeBlocksBySize[2]}</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// '.'</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// 24 -------' '--------> 64 ----------> {size = 16, &m_FreeBlocksBySize[1]}</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// </span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// 32 ------------------> 104 ----------> {size = 32, &m_FreeBlocksBySize[3]}</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">//</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">class </span>VariableSizeAllocationsManager</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> OffsetType;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">static</span> constexpr OffsetType InvalidOffset = <span class="keyword">static_cast<</span>OffsetType<span class="keyword">></span>(-1);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">struct </span>FreeBlockInfo;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Type of the map that keeps memory blocks sorted by their offsets</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">using</span> TFreeBlocksByOffsetMap = </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::map<OffsetType, </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  FreeBlockInfo, </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  std::less<OffsetType>, <span class="comment">// Standard ordering</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  STDAllocatorRawMem<std::pair<const OffsetType, FreeBlockInfo>> <span class="comment">// Raw memory allocator</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  >;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Type of the map that keeps memory blocks sorted by their sizes</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">using</span> TFreeBlocksBySizeMap = </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  std::multimap<OffsetType, </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  TFreeBlocksByOffsetMap::iterator, </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  std::less<OffsetType>, <span class="comment">// Standard ordering</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  STDAllocatorRawMem<std::pair<const OffsetType, TFreeBlocksByOffsetMap::iterator>> <span class="comment">// Raw memory allocator</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  >;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">struct </span>FreeBlockInfo</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Block size (no reserved space for the size of the allocation)</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  OffsetType Size;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// Iterator referencing this block in the multimap sorted by the block size</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  TFreeBlocksBySizeMap::iterator OrderBySizeIt;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  FreeBlockInfo(OffsetType _Size) : Size(_Size){}</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  };</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  VariableSizeAllocationsManager(OffsetType MaxSize, IMemoryAllocator &Allocator) : </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_MaxSize(MaxSize),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_FreeSize(MaxSize),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_FreeBlocksByOffset( STD_ALLOCATOR_RAW_MEM(TFreeBlocksByOffsetMap::value_type, Allocator, <span class="stringliteral">"Allocator for map<OffsetType, FreeBlockInfo>"</span>) ),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_FreeBlocksBySize( STD_ALLOCATOR_RAW_MEM(TFreeBlocksBySizeMap::value_type, Allocator, <span class="stringliteral">"Allocator for multimap<OffsetType, TFreeBlocksByOffsetMap::iterator>"</span>) )</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// Insert single maximum-size block</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  AddNewBlock(0, m_MaxSize);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  DbgVerifyList();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  ~VariableSizeAllocationsManager()</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span>( !m_FreeBlocksByOffset.empty() || !m_FreeBlocksBySize.empty() )</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  VERIFY(m_FreeBlocksByOffset.size() == 1, <span class="stringliteral">"Single free block is expected"</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  VERIFY(m_FreeBlocksByOffset.begin()->first == 0, <span class="stringliteral">"Head chunk offset is expected to be 0"</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  VERIFY(m_FreeBlocksByOffset.begin()->second.Size == m_MaxSize, <span class="stringliteral">"Head chunk size is expected to be "</span>, m_MaxSize);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  VERIFY_EXPR(m_FreeBlocksByOffset.begin()->second.OrderBySizeIt == m_FreeBlocksBySize.begin());</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  VERIFY(m_FreeBlocksBySize.size() == m_FreeBlocksByOffset.size(), <span class="stringliteral">"Sizes of the two maps must be equal"</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  VERIFY(m_FreeBlocksBySize.size() == 1, <span class="stringliteral">"Single free block is expected"</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  VERIFY(m_FreeBlocksBySize.begin()->first == m_MaxSize, <span class="stringliteral">"Head chunk size is expected to be "</span>, m_MaxSize);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  VERIFY(m_FreeBlocksBySize.begin()->second == m_FreeBlocksByOffset.begin(), <span class="stringliteral">"Incorrect first block"</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  VariableSizeAllocationsManager(VariableSizeAllocationsManager&& rhs) : </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_FreeBlocksByOffset(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_FreeBlocksByOffset)),</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_FreeBlocksBySize(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_FreeBlocksBySize)),</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_MaxSize(rhs.m_MaxSize),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_FreeSize(rhs.m_FreeSize)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">//rhs.m_MaxSize = 0; - const</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  rhs.m_FreeSize = 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  VariableSizeAllocationsManager& operator = (VariableSizeAllocationsManager&& rhs) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  VariableSizeAllocationsManager(<span class="keyword">const</span> VariableSizeAllocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  VariableSizeAllocationsManager& operator = (<span class="keyword">const</span> VariableSizeAllocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  OffsetType Allocate(OffsetType Size)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  VERIFY_EXPR(Size != 0);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(m_FreeSize < Size)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> InvalidOffset;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// Get the first block that is large enough to encompass Size bytes</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// lower_bound() returns an iterator pointing to the first element that </span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// is not less (i.e. >= ) than key</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">auto</span> SmallestBlockItIt = m_FreeBlocksBySize.lower_bound(Size);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span>(SmallestBlockItIt == m_FreeBlocksBySize.end())</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> InvalidOffset;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">auto</span> SmallestBlockIt = SmallestBlockItIt->second;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  VERIFY_EXPR(Size <= SmallestBlockIt->second.Size);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  VERIFY_EXPR(SmallestBlockIt->second.Size == SmallestBlockItIt->first);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// SmallestBlockIt.Offset </span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// |<------SmallestBlockIt.Size------>|</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// |<------Size------>|<---NewSize--->|</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// Offset NewOffset</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">//</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">auto</span> Offset = SmallestBlockIt->first;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">auto</span> NewOffset = Offset + Size;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">auto</span> NewSize = SmallestBlockIt->second.Size - Size;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  VERIFY_EXPR(SmallestBlockItIt == SmallestBlockIt->second.OrderBySizeIt);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_FreeBlocksBySize.erase(SmallestBlockItIt);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_FreeBlocksByOffset.erase(SmallestBlockIt);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span> (NewSize > 0)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  AddNewBlock(NewOffset, NewSize);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_FreeSize -= Size;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  DbgVerifyList();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> Offset;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordtype">void</span> Free(OffsetType Offset, OffsetType Size)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  VERIFY_EXPR(Offset+Size <= m_MaxSize);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// Find the first element whose offset is greater than the specified offset.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// upper_bound() returns an iterator pointing to the first element in the </span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">// container whose key is considered to go after k.</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">auto</span> NextBlockIt = m_FreeBlocksByOffset.upper_bound(Offset); </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">auto</span> LowBnd = m_FreeBlocksByOffset.lower_bound(Offset); <span class="comment">// First element whose offset is >=</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Since zero-size allocations are not allowed, lower bound must always be equal to the upper bound</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  VERIFY_EXPR(LowBnd == NextBlockIt);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Block being deallocated must not overlap with the next block</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  VERIFY_EXPR(NextBlockIt == m_FreeBlocksByOffset.end() || Offset+Size <= NextBlockIt->first);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">auto</span> PrevBlockIt = NextBlockIt;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span>(PrevBlockIt != m_FreeBlocksByOffset.begin())</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  --PrevBlockIt;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Block being deallocated must not overlap with the previous block</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  VERIFY_EXPR(Offset >= PrevBlockIt->first + PrevBlockIt->second.Size);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  PrevBlockIt = m_FreeBlocksByOffset.end();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  OffsetType NewSize, NewOffset;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(PrevBlockIt != m_FreeBlocksByOffset.end() && Offset == PrevBlockIt->first + PrevBlockIt->second.Size)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// PrevBlock.Offset Offset</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// |<-----PrevBlock.Size----->|<------Size-------->|</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">//</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  NewSize = PrevBlockIt->second.Size + Size;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  NewOffset = PrevBlockIt->first;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span> (NextBlockIt != m_FreeBlocksByOffset.end() && Offset + Size == NextBlockIt->first)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">// PrevBlock.Offset Offset NextBlock.Offset </span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// |<-----PrevBlock.Size----->|<------Size-------->|<-----NextBlock.Size----->|</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">//</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  NewSize += NextBlockIt->second.Size;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_FreeBlocksBySize.erase(PrevBlockIt->second.OrderBySizeIt);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_FreeBlocksBySize.erase(NextBlockIt->second.OrderBySizeIt);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// Delete the range of two blocks</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  ++NextBlockIt;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_FreeBlocksByOffset.erase(PrevBlockIt, NextBlockIt);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">// PrevBlock.Offset Offset NextBlock.Offset </span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// |<-----PrevBlock.Size----->|<------Size-------->| ~ ~ ~ |<-----NextBlock.Size----->|</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">//</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_FreeBlocksBySize.erase(PrevBlockIt->second.OrderBySizeIt);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  m_FreeBlocksByOffset.erase(PrevBlockIt);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (NextBlockIt != m_FreeBlocksByOffset.end() && Offset + Size == NextBlockIt->first)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// PrevBlock.Offset Offset NextBlock.Offset </span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="comment">// |<-----PrevBlock.Size----->| ~ ~ ~ |<------Size-------->|<-----NextBlock.Size----->|</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="comment">//</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  NewSize = Size + NextBlockIt->second.Size;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  NewOffset = Offset;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_FreeBlocksBySize.erase(NextBlockIt->second.OrderBySizeIt);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_FreeBlocksByOffset.erase(NextBlockIt);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// PrevBlock.Offset Offset NextBlock.Offset </span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// |<-----PrevBlock.Size----->| ~ ~ ~ |<------Size-------->| ~ ~ ~ |<-----NextBlock.Size----->|</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">//</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  NewSize = Size;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  NewOffset = Offset;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  AddNewBlock(NewOffset, NewSize);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_FreeSize += Size;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  DbgVerifyList();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  OffsetType GetMaxSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_MaxSize;}</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">bool</span> IsFull()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_FreeSize==0; };</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">bool</span> IsEmpty()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_FreeSize==m_MaxSize; };</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  OffsetType GetFreeSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_FreeSize;}</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">size_t</span> DbgGetNumFreeBlocks()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_FreeBlocksByOffset.size();}</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordtype">void</span> AddNewBlock(OffsetType Offset, OffsetType Size)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">auto</span> NewBlockIt = m_FreeBlocksByOffset.emplace(Offset, Size);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  VERIFY_EXPR(NewBlockIt.second);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">auto</span> OrderIt = m_FreeBlocksBySize.emplace(Size, NewBlockIt.first);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  NewBlockIt.first->second.OrderBySizeIt = OrderIt;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordtype">void</span> DbgVerifyList()</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  OffsetType TotalFreeSize = 0;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">auto</span> BlockIt = m_FreeBlocksByOffset.begin();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keyword">auto</span> PrevBlockIt = m_FreeBlocksByOffset.end();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  VERIFY_EXPR(m_FreeBlocksByOffset.size() == m_FreeBlocksBySize.size());</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">while</span> (BlockIt != m_FreeBlocksByOffset.end())</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  VERIFY_EXPR(BlockIt->first >= 0 && BlockIt->first + BlockIt->second.Size <= m_MaxSize);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  VERIFY_EXPR(BlockIt == BlockIt->second.OrderBySizeIt->second);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  VERIFY_EXPR(BlockIt->second.Size == BlockIt->second.OrderBySizeIt->first);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// PrevBlock.Offset BlockIt.first </span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// | | </span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="comment">// ~ ~ |<-----PrevBlock.Size----->| ~ ~ ~ |<------Size-------->| ~ ~ ~</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">//</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  VERIFY(PrevBlockIt == m_FreeBlocksByOffset.end() || BlockIt->first > PrevBlockIt->first + PrevBlockIt->second.Size, <span class="stringliteral">"Unmerged adjacent or overlapping blocks detected"</span> );</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  TotalFreeSize += BlockIt->second.Size;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  PrevBlockIt = BlockIt;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  ++BlockIt;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">auto</span> OrderIt = m_FreeBlocksBySize.begin();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">while</span> (OrderIt != m_FreeBlocksBySize.end())</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  VERIFY_EXPR(OrderIt->first == OrderIt->second->second.Size);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  ++OrderIt;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  VERIFY_EXPR(TotalFreeSize == m_FreeSize);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  TFreeBlocksByOffsetMap m_FreeBlocksByOffset;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  TFreeBlocksBySizeMap m_FreeBlocksBySize;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keyword">const</span> OffsetType m_MaxSize = 0;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  OffsetType m_FreeSize = 0;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  };</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// Helper class that handles free memory block management to accommodate variable-size allocation requests</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/variable-size-memory-allocations-manager/</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "MemoryAllocator.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// The class handles free memory block management to accommodate variable-size allocation requests. </span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// It keeps track of free blocks only and does not record allocation sizes. The class uses two ordered maps </span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="comment">// to facilitate operations. The first map keeps blocks sorted by their offsets. The second multimap keeps blocks </span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">// sorted by their sizes. The elements of the two maps reference each other, which enables efficient block </span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// insertion, removal and merging.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">//</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// 8 32 64 104</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// |<---16--->| |<-----24------>| |<---16--->| |<-----32----->|</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">//</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// m_FreeBlocksBySize m_FreeBlocksByOffset </span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// size->offset offset->size</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// </span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// 16 ------------------> 8 ----------> {size = 16, &m_FreeBlocksBySize[0]}</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">//</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// 16 ------. .-------> 32 ----------> {size = 24, &m_FreeBlocksBySize[2]}</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// '.'</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// 24 -------' '--------> 64 ----------> {size = 16, &m_FreeBlocksBySize[1]}</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// </span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// 32 ------------------> 104 ----------> {size = 32, &m_FreeBlocksBySize[3]}</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">//</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">class </span>VariableSizeAllocationsManager</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> OffsetType;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">static</span> constexpr OffsetType InvalidOffset = <span class="keyword">static_cast<</span>OffsetType<span class="keyword">></span>(-1);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">struct </span>FreeBlockInfo;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Type of the map that keeps memory blocks sorted by their offsets</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">using</span> TFreeBlocksByOffsetMap = </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::map<OffsetType, </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  FreeBlockInfo, </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  std::less<OffsetType>, <span class="comment">// Standard ordering</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  STDAllocatorRawMem<std::pair<const OffsetType, FreeBlockInfo>> <span class="comment">// Raw memory allocator</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  >;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Type of the map that keeps memory blocks sorted by their sizes</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">using</span> TFreeBlocksBySizeMap = </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  std::multimap<OffsetType, </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  TFreeBlocksByOffsetMap::iterator, </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  std::less<OffsetType>, <span class="comment">// Standard ordering</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  STDAllocatorRawMem<std::pair<const OffsetType, TFreeBlocksByOffsetMap::iterator>> <span class="comment">// Raw memory allocator</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  >;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">struct </span>FreeBlockInfo</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Block size (no reserved space for the size of the allocation)</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  OffsetType Size;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// Iterator referencing this block in the multimap sorted by the block size</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  TFreeBlocksBySizeMap::iterator OrderBySizeIt;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  FreeBlockInfo(OffsetType _Size) : Size(_Size){}</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  };</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  VariableSizeAllocationsManager(OffsetType MaxSize, IMemoryAllocator &Allocator) : </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_MaxSize(MaxSize),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_FreeSize(MaxSize),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_FreeBlocksByOffset( STD_ALLOCATOR_RAW_MEM(TFreeBlocksByOffsetMap::value_type, Allocator, <span class="stringliteral">"Allocator for map<OffsetType, FreeBlockInfo>"</span>) ),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_FreeBlocksBySize( STD_ALLOCATOR_RAW_MEM(TFreeBlocksBySizeMap::value_type, Allocator, <span class="stringliteral">"Allocator for multimap<OffsetType, TFreeBlocksByOffsetMap::iterator>"</span>) )</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// Insert single maximum-size block</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  AddNewBlock(0, m_MaxSize);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  DbgVerifyList();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  ~VariableSizeAllocationsManager()</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span>( !m_FreeBlocksByOffset.empty() || !m_FreeBlocksBySize.empty() )</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  VERIFY(m_FreeBlocksByOffset.size() == 1, <span class="stringliteral">"Single free block is expected"</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  VERIFY(m_FreeBlocksByOffset.begin()->first == 0, <span class="stringliteral">"Head chunk offset is expected to be 0"</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  VERIFY(m_FreeBlocksByOffset.begin()->second.Size == m_MaxSize, <span class="stringliteral">"Head chunk size is expected to be "</span>, m_MaxSize);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  VERIFY_EXPR(m_FreeBlocksByOffset.begin()->second.OrderBySizeIt == m_FreeBlocksBySize.begin());</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  VERIFY(m_FreeBlocksBySize.size() == m_FreeBlocksByOffset.size(), <span class="stringliteral">"Sizes of the two maps must be equal"</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  VERIFY(m_FreeBlocksBySize.size() == 1, <span class="stringliteral">"Single free block is expected"</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  VERIFY(m_FreeBlocksBySize.begin()->first == m_MaxSize, <span class="stringliteral">"Head chunk size is expected to be "</span>, m_MaxSize);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  VERIFY(m_FreeBlocksBySize.begin()->second == m_FreeBlocksByOffset.begin(), <span class="stringliteral">"Incorrect first block"</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  VariableSizeAllocationsManager(VariableSizeAllocationsManager&& rhs) : </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_FreeBlocksByOffset(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_FreeBlocksByOffset)),</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_FreeBlocksBySize(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_FreeBlocksBySize)),</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_MaxSize(rhs.m_MaxSize),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_FreeSize(rhs.m_FreeSize)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">//rhs.m_MaxSize = 0; - const</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  rhs.m_FreeSize = 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  VariableSizeAllocationsManager& operator = (VariableSizeAllocationsManager&& rhs) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  VariableSizeAllocationsManager(<span class="keyword">const</span> VariableSizeAllocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  VariableSizeAllocationsManager& operator = (<span class="keyword">const</span> VariableSizeAllocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  OffsetType Allocate(OffsetType Size)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  VERIFY_EXPR(Size != 0);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(m_FreeSize < Size)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> InvalidOffset;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// Get the first block that is large enough to encompass Size bytes</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// lower_bound() returns an iterator pointing to the first element that </span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// is not less (i.e. >= ) than key</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">auto</span> SmallestBlockItIt = m_FreeBlocksBySize.lower_bound(Size);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span>(SmallestBlockItIt == m_FreeBlocksBySize.end())</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> InvalidOffset;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">auto</span> SmallestBlockIt = SmallestBlockItIt->second;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  VERIFY_EXPR(Size <= SmallestBlockIt->second.Size);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  VERIFY_EXPR(SmallestBlockIt->second.Size == SmallestBlockItIt->first);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// SmallestBlockIt.Offset </span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// |<------SmallestBlockIt.Size------>|</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// |<------Size------>|<---NewSize--->|</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// Offset NewOffset</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">//</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">auto</span> Offset = SmallestBlockIt->first;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">auto</span> NewOffset = Offset + Size;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">auto</span> NewSize = SmallestBlockIt->second.Size - Size;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  VERIFY_EXPR(SmallestBlockItIt == SmallestBlockIt->second.OrderBySizeIt);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_FreeBlocksBySize.erase(SmallestBlockItIt);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_FreeBlocksByOffset.erase(SmallestBlockIt);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span> (NewSize > 0)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  AddNewBlock(NewOffset, NewSize);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_FreeSize -= Size;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  DbgVerifyList();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> Offset;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordtype">void</span> Free(OffsetType Offset, OffsetType Size)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  VERIFY_EXPR(Offset+Size <= m_MaxSize);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// Find the first element whose offset is greater than the specified offset.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// upper_bound() returns an iterator pointing to the first element in the </span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">// container whose key is considered to go after k.</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">auto</span> NextBlockIt = m_FreeBlocksByOffset.upper_bound(Offset); </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">auto</span> LowBnd = m_FreeBlocksByOffset.lower_bound(Offset); <span class="comment">// First element whose offset is >=</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Since zero-size allocations are not allowed, lower bound must always be equal to the upper bound</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  VERIFY_EXPR(LowBnd == NextBlockIt);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Block being deallocated must not overlap with the next block</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  VERIFY_EXPR(NextBlockIt == m_FreeBlocksByOffset.end() || Offset+Size <= NextBlockIt->first);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">auto</span> PrevBlockIt = NextBlockIt;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span>(PrevBlockIt != m_FreeBlocksByOffset.begin())</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  --PrevBlockIt;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Block being deallocated must not overlap with the previous block</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  VERIFY_EXPR(Offset >= PrevBlockIt->first + PrevBlockIt->second.Size);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  PrevBlockIt = m_FreeBlocksByOffset.end();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  OffsetType NewSize, NewOffset;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(PrevBlockIt != m_FreeBlocksByOffset.end() && Offset == PrevBlockIt->first + PrevBlockIt->second.Size)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// PrevBlock.Offset Offset</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// | |</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// |<-----PrevBlock.Size----->|<------Size-------->|</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">//</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  NewSize = PrevBlockIt->second.Size + Size;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  NewOffset = PrevBlockIt->first;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span> (NextBlockIt != m_FreeBlocksByOffset.end() && Offset + Size == NextBlockIt->first)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">// PrevBlock.Offset Offset NextBlock.Offset </span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// |<-----PrevBlock.Size----->|<------Size-------->|<-----NextBlock.Size----->|</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">//</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  NewSize += NextBlockIt->second.Size;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_FreeBlocksBySize.erase(PrevBlockIt->second.OrderBySizeIt);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_FreeBlocksBySize.erase(NextBlockIt->second.OrderBySizeIt);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// Delete the range of two blocks</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  ++NextBlockIt;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_FreeBlocksByOffset.erase(PrevBlockIt, NextBlockIt);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">// PrevBlock.Offset Offset NextBlock.Offset </span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// |<-----PrevBlock.Size----->|<------Size-------->| ~ ~ ~ |<-----NextBlock.Size----->|</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">//</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_FreeBlocksBySize.erase(PrevBlockIt->second.OrderBySizeIt);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  m_FreeBlocksByOffset.erase(PrevBlockIt);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (NextBlockIt != m_FreeBlocksByOffset.end() && Offset + Size == NextBlockIt->first)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// PrevBlock.Offset Offset NextBlock.Offset </span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="comment">// |<-----PrevBlock.Size----->| ~ ~ ~ |<------Size-------->|<-----NextBlock.Size----->|</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="comment">//</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  NewSize = Size + NextBlockIt->second.Size;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  NewOffset = Offset;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_FreeBlocksBySize.erase(NextBlockIt->second.OrderBySizeIt);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_FreeBlocksByOffset.erase(NextBlockIt);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// PrevBlock.Offset Offset NextBlock.Offset </span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="comment">// | | |</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// |<-----PrevBlock.Size----->| ~ ~ ~ |<------Size-------->| ~ ~ ~ |<-----NextBlock.Size----->|</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">//</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  NewSize = Size;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  NewOffset = Offset;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  AddNewBlock(NewOffset, NewSize);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_FreeSize += Size;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  DbgVerifyList();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  OffsetType GetMaxSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_MaxSize;}</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">bool</span> IsFull()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_FreeSize==0; };</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">bool</span> IsEmpty()<span class="keyword">const</span>{ <span class="keywordflow">return</span> m_FreeSize==m_MaxSize; };</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  OffsetType GetFreeSize()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_FreeSize;}</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">size_t</span> DbgGetNumFreeBlocks()<span class="keyword">const</span>{<span class="keywordflow">return</span> m_FreeBlocksByOffset.size();}</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordtype">void</span> AddNewBlock(OffsetType Offset, OffsetType Size)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">auto</span> NewBlockIt = m_FreeBlocksByOffset.emplace(Offset, Size);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  VERIFY_EXPR(NewBlockIt.second);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">auto</span> OrderIt = m_FreeBlocksBySize.emplace(Size, NewBlockIt.first);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  NewBlockIt.first->second.OrderBySizeIt = OrderIt;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor">#ifdef _DEBUG</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordtype">void</span> DbgVerifyList()</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  OffsetType TotalFreeSize = 0;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">auto</span> BlockIt = m_FreeBlocksByOffset.begin();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keyword">auto</span> PrevBlockIt = m_FreeBlocksByOffset.end();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  VERIFY_EXPR(m_FreeBlocksByOffset.size() == m_FreeBlocksBySize.size());</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">while</span> (BlockIt != m_FreeBlocksByOffset.end())</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  VERIFY_EXPR(BlockIt->first >= 0 && BlockIt->first + BlockIt->second.Size <= m_MaxSize);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  VERIFY_EXPR(BlockIt == BlockIt->second.OrderBySizeIt->second);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  VERIFY_EXPR(BlockIt->second.Size == BlockIt->second.OrderBySizeIt->first);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// PrevBlock.Offset BlockIt.first </span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="comment">// | | </span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="comment">// ~ ~ |<-----PrevBlock.Size----->| ~ ~ ~ |<------Size-------->| ~ ~ ~</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">//</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  VERIFY(PrevBlockIt == m_FreeBlocksByOffset.end() || BlockIt->first > PrevBlockIt->first + PrevBlockIt->second.Size, <span class="stringliteral">"Unmerged adjacent or overlapping blocks detected"</span> );</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  TotalFreeSize += BlockIt->second.Size;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  PrevBlockIt = BlockIt;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  ++BlockIt;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">auto</span> OrderIt = m_FreeBlocksBySize.begin();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">while</span> (OrderIt != m_FreeBlocksBySize.end())</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  VERIFY_EXPR(OrderIt->first == OrderIt->second->second.Size);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  ++OrderIt;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  VERIFY_EXPR(TotalFreeSize == m_FreeSize);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  TFreeBlocksByOffsetMap m_FreeBlocksByOffset;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  TFreeBlocksBySizeMap m_FreeBlocksBySize;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keyword">const</span> OffsetType m_MaxSize = 0;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  OffsetType m_FreeSize = 0;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  };</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> diff --git a/doc/html/_variable_size_g_p_u_allocations_manager_8h_source.html b/doc/html/_variable_size_g_p_u_allocations_manager_8h_source.html index 26ae004b..c53c387b 100644 --- a/doc/html/_variable_size_g_p_u_allocations_manager_8h_source.html +++ b/doc/html/_variable_size_g_p_u_allocations_manager_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">VariableSizeGPUAllocationsManager.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// An GPU-tailored extension of the basic variable-size allocations manager</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/variable-size-memory-allocations-manager/</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <deque></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "VariableSizeAllocationsManager.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// Class extends basic variable-size memory block allocator by deferring deallocation</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// of freed blocks untill the corresponding frame is completed</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">class </span>VariableSizeGPUAllocationsManager : <span class="keyword">public</span> VariableSizeAllocationsManager</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">struct </span>StaleAllocationAttribs</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  OffsetType Offset;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  OffsetType Size;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> FenceValue;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  StaleAllocationAttribs(OffsetType _Offset, OffsetType _Size, <a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> _FenceValue) :</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  Offset(_Offset), Size(_Size), FenceValue(_FenceValue)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  VariableSizeGPUAllocationsManager(OffsetType MaxSize, IMemoryAllocator &Allocator) : </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  VariableSizeAllocationsManager(MaxSize, Allocator),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_StaleAllocations(0, StaleAllocationAttribs(0,0,0), STD_ALLOCATOR_RAW_MEM(StaleAllocationAttribs, Allocator, <span class="stringliteral">"Allocator for deque<StaleAllocationAttribs>"</span> ))</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  ~VariableSizeGPUAllocationsManager()</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  VERIFY(m_StaleAllocations.empty(), <span class="stringliteral">"Not all stale allocations released"</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  VERIFY(m_StaleAllocationsSize == 0, <span class="stringliteral">"Not all stale allocations released"</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// = default causes compiler error when instantiating std::vector::emplace_back() in Visual Studio 2015 (Version 14.0.23107.0 D14REL)</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  VariableSizeGPUAllocationsManager(VariableSizeGPUAllocationsManager&& rhs) : </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  VariableSizeAllocationsManager(<a class="code" href="namespacestd.html">std</a>::move(rhs)),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_StaleAllocations(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_StaleAllocations)),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_StaleAllocationsSize(rhs.m_StaleAllocationsSize)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  rhs.m_StaleAllocationsSize = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  VariableSizeGPUAllocationsManager& operator = (VariableSizeGPUAllocationsManager&& rhs) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  VariableSizeGPUAllocationsManager(<span class="keyword">const</span> VariableSizeGPUAllocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  VariableSizeGPUAllocationsManager& operator = (<span class="keyword">const</span> VariableSizeGPUAllocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">void</span> Free(OffsetType Offset, OffsetType Size, <a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> FenceValue)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Do not release the block immediately, but add</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// it to the queue instead</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_StaleAllocations.emplace_back(Offset, Size, FenceValue);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_StaleAllocationsSize += Size;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Releases stale allocation from completed command lists</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// The method takes the last known completed fence value N</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// and releases all allocations whose associated fence value </span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// is at most N (n <= N)</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span> ReleaseStaleAllocations(<a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> LastCompletedFenceValue)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Free all allocations from the beginning of the queue that belong to completed command lists</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">while</span>(!m_StaleAllocations.empty() && m_StaleAllocations.front().FenceValue <= LastCompletedFenceValue)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">auto</span> &OldestAllocation = m_StaleAllocations.front();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  VariableSizeAllocationsManager::Free(OldestAllocation.Offset, OldestAllocation.Size);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_StaleAllocationsSize -= OldestAllocation.Size;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_StaleAllocations.pop_front();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">size_t</span> GetStaleAllocationsSize()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_StaleAllocationsSize; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  std::deque< StaleAllocationAttribs, STDAllocatorRawMem<StaleAllocationAttribs> > m_StaleAllocations;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">size_t</span> m_StaleAllocationsSize = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// An GPU-tailored extension of the basic variable-size allocations manager</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// See http://diligentgraphics.com/diligent-engine/architecture/d3d12/variable-size-memory-allocations-manager/</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <deque></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "VariableSizeAllocationsManager.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "STDAllocator.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespace_diligent.html">Diligent</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// Class extends basic variable-size memory block allocator by deferring deallocation</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// of freed blocks untill the corresponding frame is completed</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">class </span>VariableSizeGPUAllocationsManager : <span class="keyword">public</span> VariableSizeAllocationsManager</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">struct </span>StaleAllocationAttribs</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  OffsetType Offset;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  OffsetType Size;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> FenceValue;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  StaleAllocationAttribs(OffsetType _Offset, OffsetType _Size, <a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> _FenceValue) :</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  Offset(_Offset), Size(_Size), FenceValue(_FenceValue)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  VariableSizeGPUAllocationsManager(OffsetType MaxSize, IMemoryAllocator &Allocator) : </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  VariableSizeAllocationsManager(MaxSize, Allocator),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_StaleAllocations(0, StaleAllocationAttribs(0,0,0), STD_ALLOCATOR_RAW_MEM(StaleAllocationAttribs, Allocator, <span class="stringliteral">"Allocator for deque<StaleAllocationAttribs>"</span> ))</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  ~VariableSizeGPUAllocationsManager()</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  VERIFY(m_StaleAllocations.empty(), <span class="stringliteral">"Not all stale allocations released"</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  VERIFY(m_StaleAllocationsSize == 0, <span class="stringliteral">"Not all stale allocations released"</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// = default causes compiler error when instantiating std::vector::emplace_back() in Visual Studio 2015 (Version 14.0.23107.0 D14REL)</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  VariableSizeGPUAllocationsManager(VariableSizeGPUAllocationsManager&& rhs) : </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  VariableSizeAllocationsManager(<a class="code" href="namespacestd.html">std</a>::move(rhs)),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_StaleAllocations(<a class="code" href="namespacestd.html">std</a>::move(rhs.m_StaleAllocations)),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_StaleAllocationsSize(rhs.m_StaleAllocationsSize)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  rhs.m_StaleAllocationsSize = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  VariableSizeGPUAllocationsManager& operator = (VariableSizeGPUAllocationsManager&& rhs) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  VariableSizeGPUAllocationsManager(<span class="keyword">const</span> VariableSizeGPUAllocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  VariableSizeGPUAllocationsManager& operator = (<span class="keyword">const</span> VariableSizeGPUAllocationsManager&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">void</span> Free(OffsetType Offset, OffsetType Size, <a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> FenceValue)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Do not release the block immediately, but add</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// it to the queue instead</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_StaleAllocations.emplace_back(Offset, Size, FenceValue);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_StaleAllocationsSize += Size;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Releases stale allocation from completed command lists</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// The method takes the last known completed fence value N</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// and releases all allocations whose associated fence value </span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// is at most N (n <= N)</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span> ReleaseStaleAllocations(<a class="code" href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Uint64</a> LastCompletedFenceValue)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Free all allocations from the beginning of the queue that belong to completed command lists</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">while</span>(!m_StaleAllocations.empty() && m_StaleAllocations.front().FenceValue <= LastCompletedFenceValue)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">auto</span> &OldestAllocation = m_StaleAllocations.front();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  VariableSizeAllocationsManager::Free(OldestAllocation.Offset, OldestAllocation.Size);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_StaleAllocationsSize -= OldestAllocation.Size;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_StaleAllocations.pop_front();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">size_t</span> GetStaleAllocationsSize()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_StaleAllocationsSize; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  std::deque< StaleAllocationAttribs, STDAllocatorRawMem<StaleAllocationAttribs> > m_StaleAllocations;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">size_t</span> m_StaleAllocationsSize = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> }</div><div class="ttc" id="namespace_diligent_html"><div class="ttname"><a href="namespace_diligent.html">Diligent</a></div><div class="ttdoc">Graphics engine namespace. </div><div class="ttdef"><b>Definition:</b> AdaptiveFixedBlockAllocator.h:30</div></div> <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> AdvancedMath.h:316</div></div> <div class="ttc" id="namespace_diligent_html_a217aba875c8d4bd7843939762d6ff492"><div class="ttname"><a href="namespace_diligent.html#a217aba875c8d4bd7843939762d6ff492">Diligent::Uint64</a></div><div class="ttdeci">uint64_t Uint64</div><div class="ttdoc">64-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:38</div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/doc/html/_win32_atomics_8h_source.html b/doc/html/_win32_atomics_8h_source.html index 07e34033..3ea18867 100644 --- a/doc/html/_win32_atomics_8h_source.html +++ b/doc/html/_win32_atomics_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">Win32Atomics.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">struct </span>WindowsAtomics</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="comment">// Use windows-specific atomics. Standard atomic eventually call</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// the same functions, but introduce significant overhead</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">typedef</span> <span class="keywordtype">long</span> Long;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">typedef</span> <span class="keyword">volatile</span> <span class="keywordtype">long</span> AtomicLong;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Int64</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">typedef</span> <span class="keyword">volatile</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> AtomicInt64;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// The function returns the resulting INCREMENTED value.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">static</span> Long AtomicIncrement(AtomicLong &Val);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Int64</a> AtomicIncrement(AtomicInt64 &Val);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// The function returns the resulting DECREMENTED value.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">static</span> Long AtomicDecrement(AtomicLong &Val);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Int64</a> AtomicDecrement(AtomicInt64 &Val);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// The function compares the Destination value with the Comparand value. If the Destination value is equal </span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// to the Comparand value, the Exchange value is stored in the address specified by Destination. </span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Otherwise, no operation is performed.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// The function returns the initial value of the Destination parameter</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">static</span> Long AtomicCompareExchange( AtomicLong &Destination, Long Exchange, Long Comparand);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">static</span> Long AtomicAdd( AtomicLong &Destination, Long Val);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Int64</a> AtomicAdd( AtomicInt64 &Destination, Int64 Val);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="ttc" id="namespace_diligent_html_a2d2b3a7301fd8731c6b997df30b6446e"><div class="ttname"><a href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Diligent::Int64</a></div><div class="ttdeci">int64_t Int64</div><div class="ttdoc">64-bit signed integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:33</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">struct </span>WindowsAtomics</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="comment">// Use windows-specific atomics. Standard atomic eventually call</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// the same functions, but introduce significant overhead</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">typedef</span> <span class="keywordtype">long</span> Long;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">typedef</span> <span class="keyword">volatile</span> <span class="keywordtype">long</span> AtomicLong;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Int64</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">typedef</span> <span class="keyword">volatile</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> AtomicInt64;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// The function returns the resulting INCREMENTED value.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">static</span> Long AtomicIncrement(AtomicLong &Val);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Int64</a> AtomicIncrement(AtomicInt64 &Val);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// The function returns the resulting DECREMENTED value.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">static</span> Long AtomicDecrement(AtomicLong &Val);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Int64</a> AtomicDecrement(AtomicInt64 &Val);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// The function compares the Destination value with the Comparand value. If the Destination value is equal </span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// to the Comparand value, the Exchange value is stored in the address specified by Destination. </span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Otherwise, no operation is performed.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// The function returns the initial value of the Destination parameter</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">static</span> Long AtomicCompareExchange( AtomicLong &Destination, Long Exchange, Long Comparand);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">static</span> Long AtomicAdd( AtomicLong &Destination, Long Val);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Int64</a> AtomicAdd( AtomicInt64 &Destination, Int64 Val);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="ttc" id="namespace_diligent_html_a2d2b3a7301fd8731c6b997df30b6446e"><div class="ttname"><a href="namespace_diligent.html#a2d2b3a7301fd8731c6b997df30b6446e">Diligent::Int64</a></div><div class="ttdeci">int64_t Int64</div><div class="ttdoc">64-bit signed integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:33</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/_win32_debug_8h_source.html b/doc/html/_win32_debug_8h_source.html index de0aba93..3d3fea51 100644 --- a/doc/html/_win32_debug_8h_source.html +++ b/doc/html/_win32_debug_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">Win32Debug.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformDebug.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>WindowsDebug : <span class="keyword">public</span> BasicPlatformDebug</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> AssertionFailed( <span class="keyword">const</span> Diligent::Char *Message, <span class="keyword">const</span> <span class="keywordtype">char</span> *Function, <span class="keyword">const</span> <span class="keywordtype">char</span> *File, <span class="keywordtype">int</span> Line );</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> OutputDebugMessage( DebugMessageSeverity Severity, <span class="keyword">const</span> Diligent::Char *Message );</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> };</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformDebug.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">struct </span>WindowsDebug : <span class="keyword">public</span> BasicPlatformDebug</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> AssertionFailed( <span class="keyword">const</span> Diligent::Char *Message, <span class="keyword">const</span> <span class="keywordtype">char</span> *Function, <span class="keyword">const</span> <span class="keywordtype">char</span> *File, <span class="keywordtype">int</span> Line );</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> OutputDebugMessage( DebugMessageSeverity Severity, <span class="keyword">const</span> Diligent::Char *Message );</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> };</div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_win32_file_system_8h_source.html b/doc/html/_win32_file_system_8h_source.html index 8c9ead1a..a6913f7b 100644 --- a/doc/html/_win32_file_system_8h_source.html +++ b/doc/html/_win32_file_system_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">Win32FileSystem.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BasicFileSystem.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "StandardFile.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>WindowsFile : <span class="keyword">public</span> StandardFile</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  WindowsFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">struct </span>WindowsFileSystem : <span class="keyword">public</span> BasicFileSystem</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">static</span> WindowsFile* OpenFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Diligent::Char GetSlashSymbol(){ <span class="keywordflow">return</span> <span class="charliteral">'\\'</span>; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> FileExists( <span class="keyword">const</span> Diligent::Char *strFilePath );</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> PathExists( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> CreateDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ClearDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> DeleteFile( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">static</span> std::vector<std::unique_ptr<FindFileData>> Search(<span class="keyword">const</span> Diligent::Char *SearchPattern);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "BasicFileSystem.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "StandardFile.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>WindowsFile : <span class="keyword">public</span> StandardFile</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  WindowsFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">struct </span>WindowsFileSystem : <span class="keyword">public</span> BasicFileSystem</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">static</span> WindowsFile* OpenFile( <span class="keyword">const</span> FileOpenAttribs &OpenAttribs );</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">static</span> <span class="keyword">inline</span> Diligent::Char GetSlashSymbol(){ <span class="keywordflow">return</span> <span class="charliteral">'\\'</span>; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> FileExists( <span class="keyword">const</span> Diligent::Char *strFilePath );</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> PathExists( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> CreateDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ClearDirectory( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> DeleteFile( <span class="keyword">const</span> Diligent::Char *strPath );</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">static</span> std::vector<std::unique_ptr<FindFileData>> Search(<span class="keyword">const</span> Diligent::Char *SearchPattern);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_win32_platform_definitions_8h_source.html b/doc/html/_win32_platform_definitions_8h_source.html index 1aa76228..25c4f0a2 100644 --- a/doc/html/_win32_platform_definitions_8h_source.html +++ b/doc/html/_win32_platform_definitions_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">Win32PlatformDefinitions.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- diff --git a/doc/html/_win32_platform_misc_8h_source.html b/doc/html/_win32_platform_misc_8h_source.html index fa399602..31e515bd 100644 --- a/doc/html/_win32_platform_misc_8h_source.html +++ b/doc/html/_win32_platform_misc_8h_source.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -69,7 +69,7 @@ $(function() { <div class="title">Win32PlatformMisc.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformMisc.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <intrin.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">struct </span>WindowsMisc : <span class="keyword">public</span> BasicPlatformMisc</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetMSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> MSB = 32;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  _BitScanReverse(&MSB, Val);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  VERIFY_EXPR(MSB == BasicPlatformMisc::GetMSB(Val));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> MSB;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetLSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> LSB = 32;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  _BitScanForward(&LSB, Val);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  VERIFY_EXPR(LSB == BasicPlatformMisc::GetLSB(Val));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> LSB;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "BasicPlatformMisc.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "DebugUtilities.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <intrin.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">struct </span>WindowsMisc : <span class="keyword">public</span> BasicPlatformMisc</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetMSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> MSB = 32;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  _BitScanReverse(&MSB, Val);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  VERIFY_EXPR(MSB == BasicPlatformMisc::GetMSB(Val));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> MSB;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">static</span> <a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> GetLSB(<a class="code" href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a> Val)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>( Val == 0 )<span class="keywordflow">return</span> 32;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> LSB = 32;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  _BitScanForward(&LSB, Val);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  VERIFY_EXPR(LSB == BasicPlatformMisc::GetLSB(Val));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> LSB;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="ttc" id="namespace_diligent_html_a9e27ac38f8dccaa4b4f8e967cd1e868e"><div class="ttname"><a href="namespace_diligent.html#a9e27ac38f8dccaa4b4f8e967cd1e868e">Diligent::Uint32</a></div><div class="ttdeci">uint32_t Uint32</div><div class="ttdoc">32-bit unsigned integer </div><div class="ttdef"><b>Definition:</b> BasicTypes.h:39</div></div> </div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> diff --git a/doc/html/annotated.html b/doc/html/annotated.html index 380d733b..f0ec90eb 100644 --- a/doc/html/annotated.html +++ b/doc/html/annotated.html @@ -256,7 +256,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_basic_file_stream-members.html b/doc/html/class_diligent_1_1_basic_file_stream-members.html index 016258fc..a277e98d 100644 --- a/doc/html/class_diligent_1_1_basic_file_stream-members.html +++ b/doc/html/class_diligent_1_1_basic_file_stream-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_basic_file_stream.html b/doc/html/class_diligent_1_1_basic_file_stream.html index 463f43b9..830305bb 100644 --- a/doc/html/class_diligent_1_1_basic_file_stream.html +++ b/doc/html/class_diligent_1_1_basic_file_stream.html @@ -108,7 +108,7 @@ virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_base-members.html b/doc/html/class_diligent_1_1_buffer_base-members.html index e8bba492..fd02689f 100644 --- a/doc/html/class_diligent_1_1_buffer_base-members.html +++ b/doc/html/class_diligent_1_1_buffer_base-members.html @@ -93,7 +93,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_base.html b/doc/html/class_diligent_1_1_buffer_base.html index d2598d47..94df8f3c 100644 --- a/doc/html/class_diligent_1_1_buffer_base.html +++ b/doc/html/class_diligent_1_1_buffer_base.html @@ -269,7 +269,7 @@ template<class BaseInterface , class BufferViewImplType , class TBuffViewObjA <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_buffer_d3_d11_impl-members.html index 63590268..7bc8bf1e 100644 --- a/doc/html/class_diligent_1_1_buffer_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_buffer_d3_d11_impl-members.html @@ -96,7 +96,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_d3_d11_impl.html b/doc/html/class_diligent_1_1_buffer_d3_d11_impl.html index 74bcb8d2..36ebf620 100644 --- a/doc/html/class_diligent_1_1_buffer_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_buffer_d3_d11_impl.html @@ -243,7 +243,7 @@ std::unique_ptr< <a class="el" href="class_diligent_1_1_buffer_view_d3_d11_im <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_buffer_d3_d12_impl-members.html index 19044531..8e329c2c 100644 --- a/doc/html/class_diligent_1_1_buffer_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_buffer_d3_d12_impl-members.html @@ -98,7 +98,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_d3_d12_impl.html b/doc/html/class_diligent_1_1_buffer_d3_d12_impl.html index a7431978..10557e9c 100644 --- a/doc/html/class_diligent_1_1_buffer_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_buffer_d3_d12_impl.html @@ -305,7 +305,7 @@ CComPtr< ID3D12Resource > </td><td class="memItemRight" valign="botto <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_g_l_impl-members.html b/doc/html/class_diligent_1_1_buffer_g_l_impl-members.html index 28de6acb..25ad0a76 100644 --- a/doc/html/class_diligent_1_1_buffer_g_l_impl-members.html +++ b/doc/html/class_diligent_1_1_buffer_g_l_impl-members.html @@ -96,7 +96,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_g_l_impl.html b/doc/html/class_diligent_1_1_buffer_g_l_impl.html index 54e65a0d..364b7cde 100644 --- a/doc/html/class_diligent_1_1_buffer_g_l_impl.html +++ b/doc/html/class_diligent_1_1_buffer_g_l_impl.html @@ -214,7 +214,7 @@ std::unique_ptr< <a class="el" href="class_diligent_1_1_buffer_view_g_l_impl. <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_view_base-members.html b/doc/html/class_diligent_1_1_buffer_view_base-members.html index 8bb3435b..d142c8ce 100644 --- a/doc/html/class_diligent_1_1_buffer_view_base-members.html +++ b/doc/html/class_diligent_1_1_buffer_view_base-members.html @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_view_base.html b/doc/html/class_diligent_1_1_buffer_view_base.html index 1f25fb07..a289595f 100644 --- a/doc/html/class_diligent_1_1_buffer_view_base.html +++ b/doc/html/class_diligent_1_1_buffer_view_base.html @@ -206,7 +206,7 @@ template<class BaseInterface> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_view_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_buffer_view_d3_d11_impl-members.html index a5a7c3a9..9ad1304e 100644 --- a/doc/html/class_diligent_1_1_buffer_view_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_buffer_view_d3_d11_impl-members.html @@ -89,7 +89,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_view_d3_d11_impl.html b/doc/html/class_diligent_1_1_buffer_view_d3_d11_impl.html index f5434c2f..75bfd970 100644 --- a/doc/html/class_diligent_1_1_buffer_view_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_buffer_view_d3_d11_impl.html @@ -185,7 +185,7 @@ CComPtr< ID3D11View > </td><td class="memItemRight" valign="bottom">< <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_view_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_buffer_view_d3_d12_impl-members.html index a1082596..c7283107 100644 --- a/doc/html/class_diligent_1_1_buffer_view_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_buffer_view_d3_d12_impl-members.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_view_d3_d12_impl.html b/doc/html/class_diligent_1_1_buffer_view_d3_d12_impl.html index e6c4597b..1a24a9b2 100644 --- a/doc/html/class_diligent_1_1_buffer_view_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_buffer_view_d3_d12_impl.html @@ -150,7 +150,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_view_g_l_impl-members.html b/doc/html/class_diligent_1_1_buffer_view_g_l_impl-members.html index 24a2dfd2..5dc8b640 100644 --- a/doc/html/class_diligent_1_1_buffer_view_g_l_impl-members.html +++ b/doc/html/class_diligent_1_1_buffer_view_g_l_impl-members.html @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_buffer_view_g_l_impl.html b/doc/html/class_diligent_1_1_buffer_view_g_l_impl.html index 14910c21..d2185724 100644 --- a/doc/html/class_diligent_1_1_buffer_view_g_l_impl.html +++ b/doc/html/class_diligent_1_1_buffer_view_g_l_impl.html @@ -146,7 +146,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_command_list_base-members.html b/doc/html/class_diligent_1_1_command_list_base-members.html index 1db31c49..005c338a 100644 --- a/doc/html/class_diligent_1_1_command_list_base-members.html +++ b/doc/html/class_diligent_1_1_command_list_base-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_command_list_base.html b/doc/html/class_diligent_1_1_command_list_base.html index 5e0f891e..882ab817 100644 --- a/doc/html/class_diligent_1_1_command_list_base.html +++ b/doc/html/class_diligent_1_1_command_list_base.html @@ -178,7 +178,7 @@ template<class BaseInterface> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_command_list_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_command_list_d3_d11_impl-members.html index 16590ed9..c6dd5456 100644 --- a/doc/html/class_diligent_1_1_command_list_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_command_list_d3_d11_impl-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_command_list_d3_d11_impl.html b/doc/html/class_diligent_1_1_command_list_d3_d11_impl.html index c6caf59b..b699e93c 100644 --- a/doc/html/class_diligent_1_1_command_list_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_command_list_d3_d11_impl.html @@ -124,7 +124,7 @@ CommandListDesc </td><td class="memItemRight" valign="bottom"><a class="el" <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_command_list_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_command_list_d3_d12_impl-members.html index 33d8c68a..9656eab8 100644 --- a/doc/html/class_diligent_1_1_command_list_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_command_list_d3_d12_impl-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_command_list_d3_d12_impl.html b/doc/html/class_diligent_1_1_command_list_d3_d12_impl.html index 915b5670..65ebc6ff 100644 --- a/doc/html/class_diligent_1_1_command_list_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_command_list_d3_d12_impl.html @@ -124,7 +124,7 @@ CommandListDesc </td><td class="memItemRight" valign="bottom"><a class="el" <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_command_queue_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_command_queue_d3_d12_impl-members.html index 139071c4..0755f401 100644 --- a/doc/html/class_diligent_1_1_command_queue_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_command_queue_d3_d12_impl-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_command_queue_d3_d12_impl.html b/doc/html/class_diligent_1_1_command_queue_d3_d12_impl.html index c633965b..f639dd00 100644 --- a/doc/html/class_diligent_1_1_command_queue_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_command_queue_d3_d12_impl.html @@ -148,7 +148,7 @@ virtual Uint64 </td><td class="memItemRight" valign="bottom"><a class="el" <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_d3_d12_resource_base-members.html b/doc/html/class_diligent_1_1_d3_d12_resource_base-members.html index faa0d97f..38dfc105 100644 --- a/doc/html/class_diligent_1_1_d3_d12_resource_base-members.html +++ b/doc/html/class_diligent_1_1_d3_d12_resource_base-members.html @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_d3_d12_resource_base.html b/doc/html/class_diligent_1_1_d3_d12_resource_base.html index 3edc3648..7493cfac 100644 --- a/doc/html/class_diligent_1_1_d3_d12_resource_base.html +++ b/doc/html/class_diligent_1_1_d3_d12_resource_base.html @@ -100,7 +100,7 @@ CComPtr< ID3D12Resource > </td><td class="memItemRight" valign="botto <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_data_blob_impl-members.html b/doc/html/class_diligent_1_1_data_blob_impl-members.html index b79d4ff3..fd7c6272 100644 --- a/doc/html/class_diligent_1_1_data_blob_impl-members.html +++ b/doc/html/class_diligent_1_1_data_blob_impl-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_data_blob_impl.html b/doc/html/class_diligent_1_1_data_blob_impl.html index 2961bafa..421b815a 100644 --- a/doc/html/class_diligent_1_1_data_blob_impl.html +++ b/doc/html/class_diligent_1_1_data_blob_impl.html @@ -108,7 +108,7 @@ virtual void * </td><td class="memItemRight" valign="bottom"><a class="el" <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_device_context_base-members.html b/doc/html/class_diligent_1_1_device_context_base-members.html index 61c4d856..e36fd6e1 100644 --- a/doc/html/class_diligent_1_1_device_context_base-members.html +++ b/doc/html/class_diligent_1_1_device_context_base-members.html @@ -111,7 +111,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_device_context_base.html b/doc/html/class_diligent_1_1_device_context_base.html index 4fb9099f..6ce27cbd 100644 --- a/doc/html/class_diligent_1_1_device_context_base.html +++ b/doc/html/class_diligent_1_1_device_context_base.html @@ -301,7 +301,7 @@ template<typename BaseInterface> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_device_context_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_device_context_d3_d11_impl-members.html index 6071f619..3d2b6bac 100644 --- a/doc/html/class_diligent_1_1_device_context_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_device_context_d3_d11_impl-members.html @@ -129,7 +129,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_device_context_d3_d11_impl.html b/doc/html/class_diligent_1_1_device_context_d3_d11_impl.html index 159f3e1d..36aa7bbf 100644 --- a/doc/html/class_diligent_1_1_device_context_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_device_context_d3_d11_impl.html @@ -977,7 +977,7 @@ You can set the viewport size to match the currently bound render target using t <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_device_context_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_device_context_d3_d12_impl-members.html index 34540499..acaabb89 100644 --- a/doc/html/class_diligent_1_1_device_context_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_device_context_d3_d12_impl-members.html @@ -129,7 +129,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_device_context_d3_d12_impl.html b/doc/html/class_diligent_1_1_device_context_d3_d12_impl.html index 73e6462e..06cc932a 100644 --- a/doc/html/class_diligent_1_1_device_context_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_device_context_d3_d12_impl.html @@ -1032,7 +1032,7 @@ You can set the viewport size to match the currently bound render target using t <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_device_context_g_l_impl-members.html b/doc/html/class_diligent_1_1_device_context_g_l_impl-members.html index 5be0a042..c50ae983 100644 --- a/doc/html/class_diligent_1_1_device_context_g_l_impl-members.html +++ b/doc/html/class_diligent_1_1_device_context_g_l_impl-members.html @@ -128,7 +128,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_device_context_g_l_impl.html b/doc/html/class_diligent_1_1_device_context_g_l_impl.html index a4b465ea..5a7ec8b2 100644 --- a/doc/html/class_diligent_1_1_device_context_g_l_impl.html +++ b/doc/html/class_diligent_1_1_device_context_g_l_impl.html @@ -966,7 +966,7 @@ You can set the viewport size to match the currently bound render target using t <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_device_object_base-members.html b/doc/html/class_diligent_1_1_device_object_base-members.html index 0b1597eb..6385104a 100644 --- a/doc/html/class_diligent_1_1_device_object_base-members.html +++ b/doc/html/class_diligent_1_1_device_object_base-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_device_object_base.html b/doc/html/class_diligent_1_1_device_object_base.html index 55de1159..0f9aa6a0 100644 --- a/doc/html/class_diligent_1_1_device_object_base.html +++ b/doc/html/class_diligent_1_1_device_object_base.html @@ -234,7 +234,7 @@ template<class BaseInterface, typename ObjectDescType> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_fixed_block_memory_allocator-members.html b/doc/html/class_diligent_1_1_fixed_block_memory_allocator-members.html index 5cf6f6d2..ba97e551 100644 --- a/doc/html/class_diligent_1_1_fixed_block_memory_allocator-members.html +++ b/doc/html/class_diligent_1_1_fixed_block_memory_allocator-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_fixed_block_memory_allocator.html b/doc/html/class_diligent_1_1_fixed_block_memory_allocator.html index 86081982..f295f1cf 100644 --- a/doc/html/class_diligent_1_1_fixed_block_memory_allocator.html +++ b/doc/html/class_diligent_1_1_fixed_block_memory_allocator.html @@ -96,7 +96,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object-members.html b/doc/html/class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object-members.html index 04e93dd6..e8280fc4 100644 --- a/doc/html/class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object-members.html +++ b/doc/html/class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html b/doc/html/class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html index 21fe04d9..36f85b3c 100644 --- a/doc/html/class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html +++ b/doc/html/class_diligent_1_1_h_l_s_l2_g_l_s_l_converter_object.html @@ -92,7 +92,7 @@ Inheritance diagram for Diligent::HLSL2GLSLConverterObject:</div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer-members.html b/doc/html/class_diligent_1_1_i_buffer-members.html index f69d27d2..d20a74d3 100644 --- a/doc/html/class_diligent_1_1_i_buffer-members.html +++ b/doc/html/class_diligent_1_1_i_buffer-members.html @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer.html b/doc/html/class_diligent_1_1_i_buffer.html index b94204bf..4b2e8618 100644 --- a/doc/html/class_diligent_1_1_i_buffer.html +++ b/doc/html/class_diligent_1_1_i_buffer.html @@ -513,7 +513,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_d3_d11-members.html b/doc/html/class_diligent_1_1_i_buffer_d3_d11-members.html index 1cf15b31..12fe41d3 100644 --- a/doc/html/class_diligent_1_1_i_buffer_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_buffer_d3_d11-members.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_d3_d11.html b/doc/html/class_diligent_1_1_i_buffer_d3_d11.html index 4a4552f8..42e0c06d 100644 --- a/doc/html/class_diligent_1_1_i_buffer_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_buffer_d3_d11.html @@ -170,7 +170,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_d3_d12-members.html b/doc/html/class_diligent_1_1_i_buffer_d3_d12-members.html index 9e4d08bd..4128b2d2 100644 --- a/doc/html/class_diligent_1_1_i_buffer_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_buffer_d3_d12-members.html @@ -89,7 +89,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_d3_d12.html b/doc/html/class_diligent_1_1_i_buffer_d3_d12.html index 0df57d0b..9c90e0bf 100644 --- a/doc/html/class_diligent_1_1_i_buffer_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_buffer_d3_d12.html @@ -226,7 +226,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_g_l-members.html b/doc/html/class_diligent_1_1_i_buffer_g_l-members.html index 58d0072c..392ac828 100644 --- a/doc/html/class_diligent_1_1_i_buffer_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_buffer_g_l-members.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_g_l.html b/doc/html/class_diligent_1_1_i_buffer_g_l.html index 0f10715c..dff9edff 100644 --- a/doc/html/class_diligent_1_1_i_buffer_g_l.html +++ b/doc/html/class_diligent_1_1_i_buffer_g_l.html @@ -140,7 +140,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_view-members.html b/doc/html/class_diligent_1_1_i_buffer_view-members.html index 36beb959..c991d682 100644 --- a/doc/html/class_diligent_1_1_i_buffer_view-members.html +++ b/doc/html/class_diligent_1_1_i_buffer_view-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_view.html b/doc/html/class_diligent_1_1_i_buffer_view.html index 03eb6476..15069abc 100644 --- a/doc/html/class_diligent_1_1_i_buffer_view.html +++ b/doc/html/class_diligent_1_1_i_buffer_view.html @@ -161,7 +161,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_view_d3_d11-members.html b/doc/html/class_diligent_1_1_i_buffer_view_d3_d11-members.html index ce4a7b01..a1104a26 100644 --- a/doc/html/class_diligent_1_1_i_buffer_view_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_buffer_view_d3_d11-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_view_d3_d11.html b/doc/html/class_diligent_1_1_i_buffer_view_d3_d11.html index bb56f4be..63061f2c 100644 --- a/doc/html/class_diligent_1_1_i_buffer_view_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_buffer_view_d3_d11.html @@ -152,7 +152,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_view_d3_d12-members.html b/doc/html/class_diligent_1_1_i_buffer_view_d3_d12-members.html index d9647a21..75a7030b 100644 --- a/doc/html/class_diligent_1_1_i_buffer_view_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_buffer_view_d3_d12-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_view_d3_d12.html b/doc/html/class_diligent_1_1_i_buffer_view_d3_d12.html index e28fa096..ce1c06b8 100644 --- a/doc/html/class_diligent_1_1_i_buffer_view_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_buffer_view_d3_d12.html @@ -122,7 +122,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_view_g_l-members.html b/doc/html/class_diligent_1_1_i_buffer_view_g_l-members.html index 5a06919a..e6398862 100644 --- a/doc/html/class_diligent_1_1_i_buffer_view_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_buffer_view_g_l-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_buffer_view_g_l.html b/doc/html/class_diligent_1_1_i_buffer_view_g_l.html index 4a0a337c..9de63618 100644 --- a/doc/html/class_diligent_1_1_i_buffer_view_g_l.html +++ b/doc/html/class_diligent_1_1_i_buffer_view_g_l.html @@ -117,7 +117,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_command_list-members.html b/doc/html/class_diligent_1_1_i_command_list-members.html index 1e0ce29d..b9926cfa 100644 --- a/doc/html/class_diligent_1_1_i_command_list-members.html +++ b/doc/html/class_diligent_1_1_i_command_list-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_command_list.html b/doc/html/class_diligent_1_1_i_command_list.html index 818e1f20..016c42c4 100644 --- a/doc/html/class_diligent_1_1_i_command_list.html +++ b/doc/html/class_diligent_1_1_i_command_list.html @@ -110,7 +110,7 @@ virtual const <a class="el" href="struct_diligent_1_1_device_object_attribs.html <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_command_queue_d3_d12-members.html b/doc/html/class_diligent_1_1_i_command_queue_d3_d12-members.html index 3ce1a3a7..dec39cbb 100644 --- a/doc/html/class_diligent_1_1_i_command_queue_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_command_queue_d3_d12-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_command_queue_d3_d12.html b/doc/html/class_diligent_1_1_i_command_queue_d3_d12.html index f4a56542..56d38b30 100644 --- a/doc/html/class_diligent_1_1_i_command_queue_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_command_queue_d3_d12.html @@ -148,7 +148,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_device_context-members.html b/doc/html/class_diligent_1_1_i_device_context-members.html index 666db4f3..e21da0c6 100644 --- a/doc/html/class_diligent_1_1_i_device_context-members.html +++ b/doc/html/class_diligent_1_1_i_device_context-members.html @@ -97,7 +97,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_device_context.html b/doc/html/class_diligent_1_1_i_device_context.html index 1449aa6f..d1a04111 100644 --- a/doc/html/class_diligent_1_1_i_device_context.html +++ b/doc/html/class_diligent_1_1_i_device_context.html @@ -1014,7 +1014,7 @@ You can set the viewport size to match the currently bound render target using t <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_device_context_d3_d11-members.html b/doc/html/class_diligent_1_1_i_device_context_d3_d11-members.html index 0f9b3eb6..5e129d10 100644 --- a/doc/html/class_diligent_1_1_i_device_context_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_device_context_d3_d11-members.html @@ -98,7 +98,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_device_context_d3_d11.html b/doc/html/class_diligent_1_1_i_device_context_d3_d11.html index 2ffe7546..ef80ccfb 100644 --- a/doc/html/class_diligent_1_1_i_device_context_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_device_context_d3_d11.html @@ -195,7 +195,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_device_context_d3_d12-members.html b/doc/html/class_diligent_1_1_i_device_context_d3_d12-members.html index 9fa7675f..055d3f65 100644 --- a/doc/html/class_diligent_1_1_i_device_context_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_device_context_d3_d12-members.html @@ -99,7 +99,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_device_context_d3_d12.html b/doc/html/class_diligent_1_1_i_device_context_d3_d12.html index 1093e8eb..de782a8e 100644 --- a/doc/html/class_diligent_1_1_i_device_context_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_device_context_d3_d12.html @@ -262,7 +262,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_device_context_g_l-members.html b/doc/html/class_diligent_1_1_i_device_context_g_l-members.html index a447fc8d..7620c6ec 100644 --- a/doc/html/class_diligent_1_1_i_device_context_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_device_context_g_l-members.html @@ -98,7 +98,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_device_context_g_l.html b/doc/html/class_diligent_1_1_i_device_context_g_l.html index b2313d88..00f9eed5 100644 --- a/doc/html/class_diligent_1_1_i_device_context_g_l.html +++ b/doc/html/class_diligent_1_1_i_device_context_g_l.html @@ -196,7 +196,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_device_object-members.html b/doc/html/class_diligent_1_1_i_device_object-members.html index 35e15977..353695fd 100644 --- a/doc/html/class_diligent_1_1_i_device_object-members.html +++ b/doc/html/class_diligent_1_1_i_device_object-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_device_object.html b/doc/html/class_diligent_1_1_i_device_object.html index 28170abd..ee04f936 100644 --- a/doc/html/class_diligent_1_1_i_device_object.html +++ b/doc/html/class_diligent_1_1_i_device_object.html @@ -110,7 +110,7 @@ virtual const <a class="el" href="struct_diligent_1_1_device_object_attribs.html <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter-members.html b/doc/html/class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter-members.html index 26fa76b4..1b51aa81 100644 --- a/doc/html/class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter-members.html +++ b/doc/html/class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter.html b/doc/html/class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter.html index 8cd8fb35..14eceb60 100644 --- a/doc/html/class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter.html +++ b/doc/html/class_diligent_1_1_i_h_l_s_l2_g_l_s_l_converter.html @@ -92,7 +92,7 @@ Inheritance diagram for Diligent::IHLSL2GLSLConverter:</div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_pipeline_state-members.html b/doc/html/class_diligent_1_1_i_pipeline_state-members.html index e14fa19f..12ffbb5b 100644 --- a/doc/html/class_diligent_1_1_i_pipeline_state-members.html +++ b/doc/html/class_diligent_1_1_i_pipeline_state-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_pipeline_state.html b/doc/html/class_diligent_1_1_i_pipeline_state.html index 51c969bf..37ffa628 100644 --- a/doc/html/class_diligent_1_1_i_pipeline_state.html +++ b/doc/html/class_diligent_1_1_i_pipeline_state.html @@ -209,7 +209,7 @@ virtual const <a class="el" href="struct_diligent_1_1_pipeline_state_desc.html"> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_pipeline_state_d3_d11-members.html b/doc/html/class_diligent_1_1_i_pipeline_state_d3_d11-members.html index f701c584..b9683082 100644 --- a/doc/html/class_diligent_1_1_i_pipeline_state_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_pipeline_state_d3_d11-members.html @@ -91,7 +91,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_pipeline_state_d3_d11.html b/doc/html/class_diligent_1_1_i_pipeline_state_d3_d11.html index 1377114b..eb7e07a7 100644 --- a/doc/html/class_diligent_1_1_i_pipeline_state_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_pipeline_state_d3_d11.html @@ -447,7 +447,7 @@ virtual const <a class="el" href="struct_diligent_1_1_pipeline_state_desc.html"> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_pipeline_state_d3_d12-members.html b/doc/html/class_diligent_1_1_i_pipeline_state_d3_d12-members.html index 09d01cbb..ee341656 100644 --- a/doc/html/class_diligent_1_1_i_pipeline_state_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_pipeline_state_d3_d12-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_pipeline_state_d3_d12.html b/doc/html/class_diligent_1_1_i_pipeline_state_d3_d12.html index 4a736ea3..3c078586 100644 --- a/doc/html/class_diligent_1_1_i_pipeline_state_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_pipeline_state_d3_d12.html @@ -183,7 +183,7 @@ virtual const <a class="el" href="struct_diligent_1_1_pipeline_state_desc.html"> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_pipeline_state_g_l-members.html b/doc/html/class_diligent_1_1_i_pipeline_state_g_l-members.html index b103329c..ec60a7cb 100644 --- a/doc/html/class_diligent_1_1_i_pipeline_state_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_pipeline_state_g_l-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_pipeline_state_g_l.html b/doc/html/class_diligent_1_1_i_pipeline_state_g_l.html index 922088b1..903e28f0 100644 --- a/doc/html/class_diligent_1_1_i_pipeline_state_g_l.html +++ b/doc/html/class_diligent_1_1_i_pipeline_state_g_l.html @@ -115,7 +115,7 @@ virtual const <a class="el" href="struct_diligent_1_1_pipeline_state_desc.html"> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_render_device-members.html b/doc/html/class_diligent_1_1_i_render_device-members.html index ea660043..f4f96ed9 100644 --- a/doc/html/class_diligent_1_1_i_render_device-members.html +++ b/doc/html/class_diligent_1_1_i_render_device-members.html @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_render_device.html b/doc/html/class_diligent_1_1_i_render_device.html index e584e4ef..df260ed1 100644 --- a/doc/html/class_diligent_1_1_i_render_device.html +++ b/doc/html/class_diligent_1_1_i_render_device.html @@ -496,7 +496,7 @@ For a 15 x 6 x 4 3D texture, the following array of subresources should be provi <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_render_device_d3_d11-members.html b/doc/html/class_diligent_1_1_i_render_device_d3_d11-members.html index 5cdff115..d368d379 100644 --- a/doc/html/class_diligent_1_1_i_render_device_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_render_device_d3_d11-members.html @@ -92,7 +92,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_render_device_d3_d11.html b/doc/html/class_diligent_1_1_i_render_device_d3_d11.html index bda232f4..852f35a4 100644 --- a/doc/html/class_diligent_1_1_i_render_device_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_render_device_d3_d11.html @@ -359,7 +359,7 @@ virtual const <a class="el" href="struct_diligent_1_1_device_caps.html">DeviceCa <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_render_device_d3_d12-members.html b/doc/html/class_diligent_1_1_i_render_device_d3_d12-members.html index da0e4d89..4601d295 100644 --- a/doc/html/class_diligent_1_1_i_render_device_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_render_device_d3_d12-members.html @@ -93,7 +93,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_render_device_d3_d12.html b/doc/html/class_diligent_1_1_i_render_device_d3_d12.html index e446c17e..dac9241e 100644 --- a/doc/html/class_diligent_1_1_i_render_device_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_render_device_d3_d12.html @@ -275,7 +275,7 @@ virtual const <a class="el" href="struct_diligent_1_1_device_caps.html">DeviceCa <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_render_device_g_l-members.html b/doc/html/class_diligent_1_1_i_render_device_g_l-members.html index 6b5d396c..7b9637dd 100644 --- a/doc/html/class_diligent_1_1_i_render_device_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_render_device_g_l-members.html @@ -89,7 +89,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_render_device_g_l.html b/doc/html/class_diligent_1_1_i_render_device_g_l.html index 5b3cdea6..e0a8f9ee 100644 --- a/doc/html/class_diligent_1_1_i_render_device_g_l.html +++ b/doc/html/class_diligent_1_1_i_render_device_g_l.html @@ -242,7 +242,7 @@ virtual const <a class="el" href="struct_diligent_1_1_device_caps.html">DeviceCa <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_render_device_g_l_e_s-members.html b/doc/html/class_diligent_1_1_i_render_device_g_l_e_s-members.html index a7476c24..5522b2de 100644 --- a/doc/html/class_diligent_1_1_i_render_device_g_l_e_s-members.html +++ b/doc/html/class_diligent_1_1_i_render_device_g_l_e_s-members.html @@ -89,7 +89,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_render_device_g_l_e_s.html b/doc/html/class_diligent_1_1_i_render_device_g_l_e_s.html index bed544eb..7470753c 100644 --- a/doc/html/class_diligent_1_1_i_render_device_g_l_e_s.html +++ b/doc/html/class_diligent_1_1_i_render_device_g_l_e_s.html @@ -135,7 +135,7 @@ virtual const <a class="el" href="struct_diligent_1_1_device_caps.html">DeviceCa <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_resource_mapping-members.html b/doc/html/class_diligent_1_1_i_resource_mapping-members.html index 7b09315e..284d2fb6 100644 --- a/doc/html/class_diligent_1_1_i_resource_mapping-members.html +++ b/doc/html/class_diligent_1_1_i_resource_mapping-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_resource_mapping.html b/doc/html/class_diligent_1_1_i_resource_mapping.html index 0daa8685..4febf948 100644 --- a/doc/html/class_diligent_1_1_i_resource_mapping.html +++ b/doc/html/class_diligent_1_1_i_resource_mapping.html @@ -345,7 +345,7 @@ virtual size_t </td><td class="memItemRight" valign="bottom"><a class="el" <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_sampler-members.html b/doc/html/class_diligent_1_1_i_sampler-members.html index aab08d25..1bdc6637 100644 --- a/doc/html/class_diligent_1_1_i_sampler-members.html +++ b/doc/html/class_diligent_1_1_i_sampler-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_sampler.html b/doc/html/class_diligent_1_1_i_sampler.html index 31386e0b..2ee1943f 100644 --- a/doc/html/class_diligent_1_1_i_sampler.html +++ b/doc/html/class_diligent_1_1_i_sampler.html @@ -127,7 +127,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_sampler_d3_d11-members.html b/doc/html/class_diligent_1_1_i_sampler_d3_d11-members.html index ccb3b8a5..5c1c1ecf 100644 --- a/doc/html/class_diligent_1_1_i_sampler_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_sampler_d3_d11-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_sampler_d3_d11.html b/doc/html/class_diligent_1_1_i_sampler_d3_d11.html index 7f10efaa..f7c98ca6 100644 --- a/doc/html/class_diligent_1_1_i_sampler_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_sampler_d3_d11.html @@ -149,7 +149,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_sampler_d3_d12-members.html b/doc/html/class_diligent_1_1_i_sampler_d3_d12-members.html index 67c50b56..5ae0530f 100644 --- a/doc/html/class_diligent_1_1_i_sampler_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_sampler_d3_d12-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_sampler_d3_d12.html b/doc/html/class_diligent_1_1_i_sampler_d3_d12.html index 3f738a61..03895f86 100644 --- a/doc/html/class_diligent_1_1_i_sampler_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_sampler_d3_d12.html @@ -149,7 +149,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_sampler_g_l-members.html b/doc/html/class_diligent_1_1_i_sampler_g_l-members.html index 6aeb14d7..e6139413 100644 --- a/doc/html/class_diligent_1_1_i_sampler_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_sampler_g_l-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_sampler_g_l.html b/doc/html/class_diligent_1_1_i_sampler_g_l.html index 4e4fba1e..72e204e5 100644 --- a/doc/html/class_diligent_1_1_i_sampler_g_l.html +++ b/doc/html/class_diligent_1_1_i_sampler_g_l.html @@ -114,7 +114,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader-members.html b/doc/html/class_diligent_1_1_i_shader-members.html index 654ad862..0a58daf9 100644 --- a/doc/html/class_diligent_1_1_i_shader-members.html +++ b/doc/html/class_diligent_1_1_i_shader-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader.html b/doc/html/class_diligent_1_1_i_shader.html index 56be2ecb..1da5ac84 100644 --- a/doc/html/class_diligent_1_1_i_shader.html +++ b/doc/html/class_diligent_1_1_i_shader.html @@ -218,7 +218,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_d3_d11-members.html b/doc/html/class_diligent_1_1_i_shader_d3_d11-members.html index 19ea3784..ea94dec4 100644 --- a/doc/html/class_diligent_1_1_i_shader_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_shader_d3_d11-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_d3_d11.html b/doc/html/class_diligent_1_1_i_shader_d3_d11.html index b9e310d7..5ef3fc85 100644 --- a/doc/html/class_diligent_1_1_i_shader_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_shader_d3_d11.html @@ -155,7 +155,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_d3_d12-members.html b/doc/html/class_diligent_1_1_i_shader_d3_d12-members.html index 232781fa..394943df 100644 --- a/doc/html/class_diligent_1_1_i_shader_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_shader_d3_d12-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_d3_d12.html b/doc/html/class_diligent_1_1_i_shader_d3_d12.html index 5f2815a2..5024cbfb 100644 --- a/doc/html/class_diligent_1_1_i_shader_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_shader_d3_d12.html @@ -120,7 +120,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_g_l-members.html b/doc/html/class_diligent_1_1_i_shader_g_l-members.html index 13d37960..4c5dc0b9 100644 --- a/doc/html/class_diligent_1_1_i_shader_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_shader_g_l-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_g_l.html b/doc/html/class_diligent_1_1_i_shader_g_l.html index 62c28f77..f7cacddd 100644 --- a/doc/html/class_diligent_1_1_i_shader_g_l.html +++ b/doc/html/class_diligent_1_1_i_shader_g_l.html @@ -120,7 +120,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_resource_binding-members.html b/doc/html/class_diligent_1_1_i_shader_resource_binding-members.html index 146aeaec..1c5f0561 100644 --- a/doc/html/class_diligent_1_1_i_shader_resource_binding-members.html +++ b/doc/html/class_diligent_1_1_i_shader_resource_binding-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_resource_binding.html b/doc/html/class_diligent_1_1_i_shader_resource_binding.html index 5f5af1a7..0a3412c4 100644 --- a/doc/html/class_diligent_1_1_i_shader_resource_binding.html +++ b/doc/html/class_diligent_1_1_i_shader_resource_binding.html @@ -254,7 +254,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d11-members.html b/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d11-members.html index c75813d2..fc96ff64 100644 --- a/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d11-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d11.html b/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d11.html index 0bd2a9ae..e8f63646 100644 --- a/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d11.html @@ -112,7 +112,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d12-members.html b/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d12-members.html index 6a24122a..347fd5c0 100644 --- a/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d12-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d12.html b/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d12.html index 2918383e..c5b49e7c 100644 --- a/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_shader_resource_binding_d3_d12.html @@ -112,7 +112,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_resource_binding_g_l-members.html b/doc/html/class_diligent_1_1_i_shader_resource_binding_g_l-members.html index 16f32686..f810056e 100644 --- a/doc/html/class_diligent_1_1_i_shader_resource_binding_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_shader_resource_binding_g_l-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_resource_binding_g_l.html b/doc/html/class_diligent_1_1_i_shader_resource_binding_g_l.html index 489b93bc..777c1d20 100644 --- a/doc/html/class_diligent_1_1_i_shader_resource_binding_g_l.html +++ b/doc/html/class_diligent_1_1_i_shader_resource_binding_g_l.html @@ -112,7 +112,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_source_input_stream_factory-members.html b/doc/html/class_diligent_1_1_i_shader_source_input_stream_factory-members.html index 34d984a4..7fa6081a 100644 --- a/doc/html/class_diligent_1_1_i_shader_source_input_stream_factory-members.html +++ b/doc/html/class_diligent_1_1_i_shader_source_input_stream_factory-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_source_input_stream_factory.html b/doc/html/class_diligent_1_1_i_shader_source_input_stream_factory.html index 9aef37c2..5bbc828b 100644 --- a/doc/html/class_diligent_1_1_i_shader_source_input_stream_factory.html +++ b/doc/html/class_diligent_1_1_i_shader_source_input_stream_factory.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_variable-members.html b/doc/html/class_diligent_1_1_i_shader_variable-members.html index fb5f98e2..610abc71 100644 --- a/doc/html/class_diligent_1_1_i_shader_variable-members.html +++ b/doc/html/class_diligent_1_1_i_shader_variable-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_shader_variable.html b/doc/html/class_diligent_1_1_i_shader_variable.html index 1eebd7ba..b2fc81d2 100644 --- a/doc/html/class_diligent_1_1_i_shader_variable.html +++ b/doc/html/class_diligent_1_1_i_shader_variable.html @@ -189,7 +189,7 @@ Public Member Functions</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_swap_chain-members.html b/doc/html/class_diligent_1_1_i_swap_chain-members.html index 951ad4bb..25e33e19 100644 --- a/doc/html/class_diligent_1_1_i_swap_chain-members.html +++ b/doc/html/class_diligent_1_1_i_swap_chain-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_swap_chain.html b/doc/html/class_diligent_1_1_i_swap_chain.html index 388a890a..8e30bb48 100644 --- a/doc/html/class_diligent_1_1_i_swap_chain.html +++ b/doc/html/class_diligent_1_1_i_swap_chain.html @@ -169,7 +169,7 @@ virtual const <a class="el" href="struct_diligent_1_1_swap_chain_desc.html">Swap <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_swap_chain_d3_d11-members.html b/doc/html/class_diligent_1_1_i_swap_chain_d3_d11-members.html index 5ef548bd..a8654569 100644 --- a/doc/html/class_diligent_1_1_i_swap_chain_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_swap_chain_d3_d11-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_swap_chain_d3_d11.html b/doc/html/class_diligent_1_1_i_swap_chain_d3_d11.html index 1eb604f8..47118ed4 100644 --- a/doc/html/class_diligent_1_1_i_swap_chain_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_swap_chain_d3_d11.html @@ -211,7 +211,7 @@ virtual const <a class="el" href="struct_diligent_1_1_swap_chain_desc.html">Swap <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_swap_chain_d3_d12-members.html b/doc/html/class_diligent_1_1_i_swap_chain_d3_d12-members.html index ffbc04a6..3fd9f598 100644 --- a/doc/html/class_diligent_1_1_i_swap_chain_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_swap_chain_d3_d12-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_swap_chain_d3_d12.html b/doc/html/class_diligent_1_1_i_swap_chain_d3_d12.html index 95dfb9bf..37bb646f 100644 --- a/doc/html/class_diligent_1_1_i_swap_chain_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_swap_chain_d3_d12.html @@ -211,7 +211,7 @@ virtual const <a class="el" href="struct_diligent_1_1_swap_chain_desc.html">Swap <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_swap_chain_g_l-members.html b/doc/html/class_diligent_1_1_i_swap_chain_g_l-members.html index 41ed718b..d5e74175 100644 --- a/doc/html/class_diligent_1_1_i_swap_chain_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_swap_chain_g_l-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_swap_chain_g_l.html b/doc/html/class_diligent_1_1_i_swap_chain_g_l.html index fa5c98f7..1951a512 100644 --- a/doc/html/class_diligent_1_1_i_swap_chain_g_l.html +++ b/doc/html/class_diligent_1_1_i_swap_chain_g_l.html @@ -110,7 +110,7 @@ virtual const <a class="el" href="struct_diligent_1_1_swap_chain_desc.html">Swap <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture-members.html b/doc/html/class_diligent_1_1_i_texture-members.html index f499793f..3a4380de 100644 --- a/doc/html/class_diligent_1_1_i_texture-members.html +++ b/doc/html/class_diligent_1_1_i_texture-members.html @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture.html b/doc/html/class_diligent_1_1_i_texture.html index 930acb90..1ac9eff1 100644 --- a/doc/html/class_diligent_1_1_i_texture.html +++ b/doc/html/class_diligent_1_1_i_texture.html @@ -448,7 +448,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_d3_d11-members.html b/doc/html/class_diligent_1_1_i_texture_d3_d11-members.html index 4c1f1ce5..98624315 100644 --- a/doc/html/class_diligent_1_1_i_texture_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_texture_d3_d11-members.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_d3_d11.html b/doc/html/class_diligent_1_1_i_texture_d3_d11.html index 1b2b03f5..606aeca1 100644 --- a/doc/html/class_diligent_1_1_i_texture_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_texture_d3_d11.html @@ -175,7 +175,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_d3_d12-members.html b/doc/html/class_diligent_1_1_i_texture_d3_d12-members.html index ad73edb8..c6a78408 100644 --- a/doc/html/class_diligent_1_1_i_texture_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_texture_d3_d12-members.html @@ -89,7 +89,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_d3_d12.html b/doc/html/class_diligent_1_1_i_texture_d3_d12.html index 714f57f1..ef954cff 100644 --- a/doc/html/class_diligent_1_1_i_texture_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_texture_d3_d12.html @@ -211,7 +211,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_g_l-members.html b/doc/html/class_diligent_1_1_i_texture_g_l-members.html index 66ab41e2..65936e9b 100644 --- a/doc/html/class_diligent_1_1_i_texture_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_texture_g_l-members.html @@ -89,7 +89,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_g_l.html b/doc/html/class_diligent_1_1_i_texture_g_l.html index 357677b3..8f3ca878 100644 --- a/doc/html/class_diligent_1_1_i_texture_g_l.html +++ b/doc/html/class_diligent_1_1_i_texture_g_l.html @@ -146,7 +146,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_view-members.html b/doc/html/class_diligent_1_1_i_texture_view-members.html index cbd3ea09..c70c4fe1 100644 --- a/doc/html/class_diligent_1_1_i_texture_view-members.html +++ b/doc/html/class_diligent_1_1_i_texture_view-members.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_view.html b/doc/html/class_diligent_1_1_i_texture_view.html index 6a857822..e6db386f 100644 --- a/doc/html/class_diligent_1_1_i_texture_view.html +++ b/doc/html/class_diligent_1_1_i_texture_view.html @@ -232,7 +232,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_view_d3_d11-members.html b/doc/html/class_diligent_1_1_i_texture_view_d3_d11-members.html index 8140d86d..85d2b3e2 100644 --- a/doc/html/class_diligent_1_1_i_texture_view_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_i_texture_view_d3_d11-members.html @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_view_d3_d11.html b/doc/html/class_diligent_1_1_i_texture_view_d3_d11.html index c968d432..6a8320c0 100644 --- a/doc/html/class_diligent_1_1_i_texture_view_d3_d11.html +++ b/doc/html/class_diligent_1_1_i_texture_view_d3_d11.html @@ -162,7 +162,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_view_d3_d12-members.html b/doc/html/class_diligent_1_1_i_texture_view_d3_d12-members.html index 11a515cf..dbbc2b9b 100644 --- a/doc/html/class_diligent_1_1_i_texture_view_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_i_texture_view_d3_d12-members.html @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_view_d3_d12.html b/doc/html/class_diligent_1_1_i_texture_view_d3_d12.html index a8183377..a98a3826 100644 --- a/doc/html/class_diligent_1_1_i_texture_view_d3_d12.html +++ b/doc/html/class_diligent_1_1_i_texture_view_d3_d12.html @@ -132,7 +132,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_view_g_l-members.html b/doc/html/class_diligent_1_1_i_texture_view_g_l-members.html index 34787fa8..3e79404e 100644 --- a/doc/html/class_diligent_1_1_i_texture_view_g_l-members.html +++ b/doc/html/class_diligent_1_1_i_texture_view_g_l-members.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_i_texture_view_g_l.html b/doc/html/class_diligent_1_1_i_texture_view_g_l.html index 58255786..e3e10747 100644 --- a/doc/html/class_diligent_1_1_i_texture_view_g_l.html +++ b/doc/html/class_diligent_1_1_i_texture_view_g_l.html @@ -127,7 +127,7 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_map_helper-members.html b/doc/html/class_diligent_1_1_map_helper-members.html index c6c66a08..cf8f9be5 100644 --- a/doc/html/class_diligent_1_1_map_helper-members.html +++ b/doc/html/class_diligent_1_1_map_helper-members.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_map_helper.html b/doc/html/class_diligent_1_1_map_helper.html index 4a9d907e..8c1f9c3d 100644 --- a/doc/html/class_diligent_1_1_map_helper.html +++ b/doc/html/class_diligent_1_1_map_helper.html @@ -204,7 +204,7 @@ template<typename DataType , bool KeepStrongReferences = false> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_object_base-members.html b/doc/html/class_diligent_1_1_object_base-members.html index f4bd4256..1ce7cf09 100644 --- a/doc/html/class_diligent_1_1_object_base-members.html +++ b/doc/html/class_diligent_1_1_object_base-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_object_base.html b/doc/html/class_diligent_1_1_object_base.html index f6e1ea1a..4cc25bc3 100644 --- a/doc/html/class_diligent_1_1_object_base.html +++ b/doc/html/class_diligent_1_1_object_base.html @@ -106,7 +106,7 @@ class Diligent::ObjectBase< BaseInterface ></h3> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_pipeline_state_base-members.html b/doc/html/class_diligent_1_1_pipeline_state_base-members.html index 57d3de5f..ea63eda3 100644 --- a/doc/html/class_diligent_1_1_pipeline_state_base-members.html +++ b/doc/html/class_diligent_1_1_pipeline_state_base-members.html @@ -90,7 +90,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_pipeline_state_base.html b/doc/html/class_diligent_1_1_pipeline_state_base.html index f1a93f22..6f3cc7f1 100644 --- a/doc/html/class_diligent_1_1_pipeline_state_base.html +++ b/doc/html/class_diligent_1_1_pipeline_state_base.html @@ -219,7 +219,7 @@ template<class BaseInterface, class RenderDeviceBaseInterface> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_pipeline_state_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_pipeline_state_d3_d11_impl-members.html index 50d336ee..aca0e5a3 100644 --- a/doc/html/class_diligent_1_1_pipeline_state_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_pipeline_state_d3_d11_impl-members.html @@ -103,7 +103,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_pipeline_state_d3_d11_impl.html b/doc/html/class_diligent_1_1_pipeline_state_d3_d11_impl.html index d3d02435..48417c88 100644 --- a/doc/html/class_diligent_1_1_pipeline_state_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_pipeline_state_d3_d11_impl.html @@ -496,7 +496,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="cl <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_pipeline_state_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_pipeline_state_d3_d12_impl-members.html index fe380084..5ac692c1 100644 --- a/doc/html/class_diligent_1_1_pipeline_state_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_pipeline_state_d3_d12_impl-members.html @@ -95,7 +95,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_pipeline_state_d3_d12_impl.html b/doc/html/class_diligent_1_1_pipeline_state_d3_d12_impl.html index 29d1b07d..c2d3edc8 100644 --- a/doc/html/class_diligent_1_1_pipeline_state_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_pipeline_state_d3_d12_impl.html @@ -319,7 +319,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="cl <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_pipeline_state_g_l_impl-members.html b/doc/html/class_diligent_1_1_pipeline_state_g_l_impl-members.html index e6b678aa..098b45b3 100644 --- a/doc/html/class_diligent_1_1_pipeline_state_g_l_impl-members.html +++ b/doc/html/class_diligent_1_1_pipeline_state_g_l_impl-members.html @@ -94,7 +94,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_pipeline_state_g_l_impl.html b/doc/html/class_diligent_1_1_pipeline_state_g_l_impl.html index 7d6d533b..26fd09c1 100644 --- a/doc/html/class_diligent_1_1_pipeline_state_g_l_impl.html +++ b/doc/html/class_diligent_1_1_pipeline_state_g_l_impl.html @@ -257,7 +257,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="cl <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_ref_cnt_auto_ptr-members.html b/doc/html/class_diligent_1_1_ref_cnt_auto_ptr-members.html index f3338147..7e475033 100644 --- a/doc/html/class_diligent_1_1_ref_cnt_auto_ptr-members.html +++ b/doc/html/class_diligent_1_1_ref_cnt_auto_ptr-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_ref_cnt_auto_ptr.html b/doc/html/class_diligent_1_1_ref_cnt_auto_ptr.html index 265b9682..58ff74f9 100644 --- a/doc/html/class_diligent_1_1_ref_cnt_auto_ptr.html +++ b/doc/html/class_diligent_1_1_ref_cnt_auto_ptr.html @@ -84,7 +84,7 @@ class Diligent::RefCntAutoPtr< T ></h3> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_ref_cnt_weak_ptr-members.html b/doc/html/class_diligent_1_1_ref_cnt_weak_ptr-members.html index c7f1c2c0..271f84f6 100644 --- a/doc/html/class_diligent_1_1_ref_cnt_weak_ptr-members.html +++ b/doc/html/class_diligent_1_1_ref_cnt_weak_ptr-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_ref_cnt_weak_ptr.html b/doc/html/class_diligent_1_1_ref_cnt_weak_ptr.html index b3e71031..aafa2a69 100644 --- a/doc/html/class_diligent_1_1_ref_cnt_weak_ptr.html +++ b/doc/html/class_diligent_1_1_ref_cnt_weak_ptr.html @@ -124,7 +124,7 @@ template<typename T> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_ref_counted_object-members.html b/doc/html/class_diligent_1_1_ref_counted_object-members.html index bd86963c..ede2dcd5 100644 --- a/doc/html/class_diligent_1_1_ref_counted_object-members.html +++ b/doc/html/class_diligent_1_1_ref_counted_object-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_ref_counted_object.html b/doc/html/class_diligent_1_1_ref_counted_object.html index 01d08189..d86136e7 100644 --- a/doc/html/class_diligent_1_1_ref_counted_object.html +++ b/doc/html/class_diligent_1_1_ref_counted_object.html @@ -86,7 +86,7 @@ class Diligent::RefCountedObject< Base ></h3> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_render_device_base-members.html b/doc/html/class_diligent_1_1_render_device_base-members.html index f9e9404e..8ed46131 100644 --- a/doc/html/class_diligent_1_1_render_device_base-members.html +++ b/doc/html/class_diligent_1_1_render_device_base-members.html @@ -98,7 +98,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_render_device_base.html b/doc/html/class_diligent_1_1_render_device_base.html index a1987e12..574944c6 100644 --- a/doc/html/class_diligent_1_1_render_device_base.html +++ b/doc/html/class_diligent_1_1_render_device_base.html @@ -378,7 +378,7 @@ template<typename TObjectType , typename TObjectDescType , typename TObjectCo <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_render_device_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_render_device_d3_d11_impl-members.html index af2a65b4..07a048b2 100644 --- a/doc/html/class_diligent_1_1_render_device_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_render_device_d3_d11_impl-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_render_device_d3_d11_impl.html b/doc/html/class_diligent_1_1_render_device_d3_d11_impl.html index 41dbb004..ef057c00 100644 --- a/doc/html/class_diligent_1_1_render_device_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_render_device_d3_d11_impl.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_render_device_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_render_device_d3_d12_impl-members.html index daaccfb9..4175b6e8 100644 --- a/doc/html/class_diligent_1_1_render_device_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_render_device_d3_d12_impl-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_render_device_d3_d12_impl.html b/doc/html/class_diligent_1_1_render_device_d3_d12_impl.html index 7b3862d1..4e2dd5ed 100644 --- a/doc/html/class_diligent_1_1_render_device_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_render_device_d3_d12_impl.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_render_device_g_l_impl-members.html b/doc/html/class_diligent_1_1_render_device_g_l_impl-members.html index 47e2b56b..571a0da8 100644 --- a/doc/html/class_diligent_1_1_render_device_g_l_impl-members.html +++ b/doc/html/class_diligent_1_1_render_device_g_l_impl-members.html @@ -98,7 +98,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_render_device_g_l_impl.html b/doc/html/class_diligent_1_1_render_device_g_l_impl.html index 499b78f9..ed09f782 100644 --- a/doc/html/class_diligent_1_1_render_device_g_l_impl.html +++ b/doc/html/class_diligent_1_1_render_device_g_l_impl.html @@ -180,7 +180,7 @@ std::vector< <a class="el" href="class_diligent_1_1_ref_cnt_weak_ptr.html">Re <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_resource_mapping_impl-members.html b/doc/html/class_diligent_1_1_resource_mapping_impl-members.html index 87d24f53..af0b16d7 100644 --- a/doc/html/class_diligent_1_1_resource_mapping_impl-members.html +++ b/doc/html/class_diligent_1_1_resource_mapping_impl-members.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_resource_mapping_impl.html b/doc/html/class_diligent_1_1_resource_mapping_impl.html index 129057ce..7900852c 100644 --- a/doc/html/class_diligent_1_1_resource_mapping_impl.html +++ b/doc/html/class_diligent_1_1_resource_mapping_impl.html @@ -167,7 +167,7 @@ virtual size_t </td><td class="memItemRight" valign="bottom"><a class="el" <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_root_signature-members.html b/doc/html/class_diligent_1_1_root_signature-members.html index 7d1556c3..7cfa2d9c 100644 --- a/doc/html/class_diligent_1_1_root_signature-members.html +++ b/doc/html/class_diligent_1_1_root_signature-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_root_signature.html b/doc/html/class_diligent_1_1_root_signature.html index 3122676d..4f1e9fec 100644 --- a/doc/html/class_diligent_1_1_root_signature.html +++ b/doc/html/class_diligent_1_1_root_signature.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_sampler_base-members.html b/doc/html/class_diligent_1_1_sampler_base-members.html index 5a64b24d..30bef4fd 100644 --- a/doc/html/class_diligent_1_1_sampler_base-members.html +++ b/doc/html/class_diligent_1_1_sampler_base-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_sampler_base.html b/doc/html/class_diligent_1_1_sampler_base.html index 67ca66d3..5eb32ae7 100644 --- a/doc/html/class_diligent_1_1_sampler_base.html +++ b/doc/html/class_diligent_1_1_sampler_base.html @@ -216,7 +216,7 @@ template<class BaseInterface, class RenderDeviceBaseInterface> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_sampler_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_sampler_d3_d11_impl-members.html index 8373e00a..1de6a768 100644 --- a/doc/html/class_diligent_1_1_sampler_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_sampler_d3_d11_impl-members.html @@ -86,7 +86,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_sampler_d3_d11_impl.html b/doc/html/class_diligent_1_1_sampler_d3_d11_impl.html index 57387928..1e9197d3 100644 --- a/doc/html/class_diligent_1_1_sampler_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_sampler_d3_d11_impl.html @@ -169,7 +169,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_sampler_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_sampler_d3_d12_impl-members.html index 80d69ab2..7ffcaf25 100644 --- a/doc/html/class_diligent_1_1_sampler_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_sampler_d3_d12_impl-members.html @@ -86,7 +86,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_sampler_d3_d12_impl.html b/doc/html/class_diligent_1_1_sampler_d3_d12_impl.html index fe52aab3..b04b37c4 100644 --- a/doc/html/class_diligent_1_1_sampler_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_sampler_d3_d12_impl.html @@ -169,7 +169,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_sampler_g_l_impl-members.html b/doc/html/class_diligent_1_1_sampler_g_l_impl-members.html index e9c6249b..a87beaae 100644 --- a/doc/html/class_diligent_1_1_sampler_g_l_impl-members.html +++ b/doc/html/class_diligent_1_1_sampler_g_l_impl-members.html @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_sampler_g_l_impl.html b/doc/html/class_diligent_1_1_sampler_g_l_impl.html index ebfcd2b1..3a2e8c04 100644 --- a/doc/html/class_diligent_1_1_sampler_g_l_impl.html +++ b/doc/html/class_diligent_1_1_sampler_g_l_impl.html @@ -135,7 +135,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_base-members.html b/doc/html/class_diligent_1_1_shader_base-members.html index d51a444d..5e484677 100644 --- a/doc/html/class_diligent_1_1_shader_base-members.html +++ b/doc/html/class_diligent_1_1_shader_base-members.html @@ -86,7 +86,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_base.html b/doc/html/class_diligent_1_1_shader_base.html index c69d9a60..d0006174 100644 --- a/doc/html/class_diligent_1_1_shader_base.html +++ b/doc/html/class_diligent_1_1_shader_base.html @@ -203,7 +203,7 @@ template<class BaseInterface, class RenderDeviceBaseInterface> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_shader_d3_d11_impl-members.html index 739c153d..0de02d8b 100644 --- a/doc/html/class_diligent_1_1_shader_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_shader_d3_d11_impl-members.html @@ -90,7 +90,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_d3_d11_impl.html b/doc/html/class_diligent_1_1_shader_d3_d11_impl.html index 5e97c079..7b984481 100644 --- a/doc/html/class_diligent_1_1_shader_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_shader_d3_d11_impl.html @@ -275,7 +275,7 @@ std::vector< <a class="el" href="struct_diligent_1_1_static_sampler_desc.html <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_shader_d3_d12_impl-members.html index b3f4a0d6..2dfeb279 100644 --- a/doc/html/class_diligent_1_1_shader_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_shader_d3_d12_impl-members.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_d3_d12_impl.html b/doc/html/class_diligent_1_1_shader_d3_d12_impl.html index 7820a494..2cebf186 100644 --- a/doc/html/class_diligent_1_1_shader_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_shader_d3_d12_impl.html @@ -242,7 +242,7 @@ std::vector< <a class="el" href="struct_diligent_1_1_static_sampler_desc.html <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_g_l_impl-members.html b/doc/html/class_diligent_1_1_shader_g_l_impl-members.html index 1c017ee5..04056736 100644 --- a/doc/html/class_diligent_1_1_shader_g_l_impl-members.html +++ b/doc/html/class_diligent_1_1_shader_g_l_impl-members.html @@ -90,7 +90,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_g_l_impl.html b/doc/html/class_diligent_1_1_shader_g_l_impl.html index 4d89f277..59383341 100644 --- a/doc/html/class_diligent_1_1_shader_g_l_impl.html +++ b/doc/html/class_diligent_1_1_shader_g_l_impl.html @@ -242,7 +242,7 @@ std::vector< <a class="el" href="struct_diligent_1_1_static_sampler_desc.html <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_binding_base-members.html b/doc/html/class_diligent_1_1_shader_resource_binding_base-members.html index c09c37bb..8f000bb1 100644 --- a/doc/html/class_diligent_1_1_shader_resource_binding_base-members.html +++ b/doc/html/class_diligent_1_1_shader_resource_binding_base-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_binding_base.html b/doc/html/class_diligent_1_1_shader_resource_binding_base.html index f050fb14..9ad75f1f 100644 --- a/doc/html/class_diligent_1_1_shader_resource_binding_base.html +++ b/doc/html/class_diligent_1_1_shader_resource_binding_base.html @@ -172,7 +172,7 @@ template<class BaseInterface> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_binding_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_shader_resource_binding_d3_d11_impl-members.html index 429d00c2..1b5f866d 100644 --- a/doc/html/class_diligent_1_1_shader_resource_binding_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_shader_resource_binding_d3_d11_impl-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_binding_d3_d11_impl.html b/doc/html/class_diligent_1_1_shader_resource_binding_d3_d11_impl.html index f348005a..db7cd534 100644 --- a/doc/html/class_diligent_1_1_shader_resource_binding_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_shader_resource_binding_d3_d11_impl.html @@ -227,7 +227,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_binding_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_shader_resource_binding_d3_d12_impl-members.html index f36daccb..ffb7f22f 100644 --- a/doc/html/class_diligent_1_1_shader_resource_binding_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_shader_resource_binding_d3_d12_impl-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_binding_d3_d12_impl.html b/doc/html/class_diligent_1_1_shader_resource_binding_d3_d12_impl.html index e24c5488..5a3ad08e 100644 --- a/doc/html/class_diligent_1_1_shader_resource_binding_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_shader_resource_binding_d3_d12_impl.html @@ -227,7 +227,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_binding_g_l_impl-members.html b/doc/html/class_diligent_1_1_shader_resource_binding_g_l_impl-members.html index d2cf5056..e6f51049 100644 --- a/doc/html/class_diligent_1_1_shader_resource_binding_g_l_impl-members.html +++ b/doc/html/class_diligent_1_1_shader_resource_binding_g_l_impl-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_binding_g_l_impl.html b/doc/html/class_diligent_1_1_shader_resource_binding_g_l_impl.html index c0514337..fdf8a8f1 100644 --- a/doc/html/class_diligent_1_1_shader_resource_binding_g_l_impl.html +++ b/doc/html/class_diligent_1_1_shader_resource_binding_g_l_impl.html @@ -227,7 +227,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_cache_d3_d11-members.html b/doc/html/class_diligent_1_1_shader_resource_cache_d3_d11-members.html index 4c2bac8f..29190c86 100644 --- a/doc/html/class_diligent_1_1_shader_resource_cache_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_shader_resource_cache_d3_d11-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_cache_d3_d11.html b/doc/html/class_diligent_1_1_shader_resource_cache_d3_d11.html index 7b37028b..a47274c6 100644 --- a/doc/html/class_diligent_1_1_shader_resource_cache_d3_d11.html +++ b/doc/html/class_diligent_1_1_shader_resource_cache_d3_d11.html @@ -95,7 +95,7 @@ Classes</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_layout_d3_d11-members.html b/doc/html/class_diligent_1_1_shader_resource_layout_d3_d11-members.html index 10b316f9..b2ed0e49 100644 --- a/doc/html/class_diligent_1_1_shader_resource_layout_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_shader_resource_layout_d3_d11-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_layout_d3_d11.html b/doc/html/class_diligent_1_1_shader_resource_layout_d3_d11.html index 9b85b20a..0aded838 100644 --- a/doc/html/class_diligent_1_1_shader_resource_layout_d3_d11.html +++ b/doc/html/class_diligent_1_1_shader_resource_layout_d3_d11.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_layout_d3_d12-members.html b/doc/html/class_diligent_1_1_shader_resource_layout_d3_d12-members.html index 9d930b25..a308fada 100644 --- a/doc/html/class_diligent_1_1_shader_resource_layout_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_shader_resource_layout_d3_d12-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resource_layout_d3_d12.html b/doc/html/class_diligent_1_1_shader_resource_layout_d3_d12.html index 22f1693d..b4084605 100644 --- a/doc/html/class_diligent_1_1_shader_resource_layout_d3_d12.html +++ b/doc/html/class_diligent_1_1_shader_resource_layout_d3_d12.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resources_d3_d11-members.html b/doc/html/class_diligent_1_1_shader_resources_d3_d11-members.html index c3d24eca..8629c736 100644 --- a/doc/html/class_diligent_1_1_shader_resources_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_shader_resources_d3_d11-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resources_d3_d11.html b/doc/html/class_diligent_1_1_shader_resources_d3_d11.html index c6265b03..d3cf03e2 100644 --- a/doc/html/class_diligent_1_1_shader_resources_d3_d11.html +++ b/doc/html/class_diligent_1_1_shader_resources_d3_d11.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resources_d3_d12-members.html b/doc/html/class_diligent_1_1_shader_resources_d3_d12-members.html index d2b1fc69..ceed46fa 100644 --- a/doc/html/class_diligent_1_1_shader_resources_d3_d12-members.html +++ b/doc/html/class_diligent_1_1_shader_resources_d3_d12-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_shader_resources_d3_d12.html b/doc/html/class_diligent_1_1_shader_resources_d3_d12.html index da8cc5d5..61ffdd03 100644 --- a/doc/html/class_diligent_1_1_shader_resources_d3_d12.html +++ b/doc/html/class_diligent_1_1_shader_resources_d3_d12.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_state_objects_registry-members.html b/doc/html/class_diligent_1_1_state_objects_registry-members.html index 59c3950f..20990604 100644 --- a/doc/html/class_diligent_1_1_state_objects_registry-members.html +++ b/doc/html/class_diligent_1_1_state_objects_registry-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_state_objects_registry.html b/doc/html/class_diligent_1_1_state_objects_registry.html index 9d3747ca..c5ca10dd 100644 --- a/doc/html/class_diligent_1_1_state_objects_registry.html +++ b/doc/html/class_diligent_1_1_state_objects_registry.html @@ -174,7 +174,7 @@ template<typename ResourceDescType> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_string_data_blob_impl-members.html b/doc/html/class_diligent_1_1_string_data_blob_impl-members.html index 7dbbb957..8a865cce 100644 --- a/doc/html/class_diligent_1_1_string_data_blob_impl-members.html +++ b/doc/html/class_diligent_1_1_string_data_blob_impl-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_string_data_blob_impl.html b/doc/html/class_diligent_1_1_string_data_blob_impl.html index cd123d96..3852bdc0 100644 --- a/doc/html/class_diligent_1_1_string_data_blob_impl.html +++ b/doc/html/class_diligent_1_1_string_data_blob_impl.html @@ -108,7 +108,7 @@ virtual void * </td><td class="memItemRight" valign="bottom"><a class="el" <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_swap_chain_base-members.html b/doc/html/class_diligent_1_1_swap_chain_base-members.html index e5851aab..95dfc7dc 100644 --- a/doc/html/class_diligent_1_1_swap_chain_base-members.html +++ b/doc/html/class_diligent_1_1_swap_chain_base-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_swap_chain_base.html b/doc/html/class_diligent_1_1_swap_chain_base.html index 39991aae..668ea0eb 100644 --- a/doc/html/class_diligent_1_1_swap_chain_base.html +++ b/doc/html/class_diligent_1_1_swap_chain_base.html @@ -188,7 +188,7 @@ template<class BaseInterface> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_swap_chain_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_swap_chain_d3_d11_impl-members.html index 7c35c6f7..891ca30c 100644 --- a/doc/html/class_diligent_1_1_swap_chain_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_swap_chain_d3_d11_impl-members.html @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_swap_chain_d3_d11_impl.html b/doc/html/class_diligent_1_1_swap_chain_d3_d11_impl.html index a29754c6..5bca035b 100644 --- a/doc/html/class_diligent_1_1_swap_chain_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_swap_chain_d3_d11_impl.html @@ -276,7 +276,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_swap_chain_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_swap_chain_d3_d12_impl-members.html index 9521bc30..8344a969 100644 --- a/doc/html/class_diligent_1_1_swap_chain_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_swap_chain_d3_d12_impl-members.html @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_swap_chain_d3_d12_impl.html b/doc/html/class_diligent_1_1_swap_chain_d3_d12_impl.html index 1676fb30..f7887f13 100644 --- a/doc/html/class_diligent_1_1_swap_chain_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_swap_chain_d3_d12_impl.html @@ -276,7 +276,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_swap_chain_g_l_impl-members.html b/doc/html/class_diligent_1_1_swap_chain_g_l_impl-members.html index e47e4d4b..f93142e3 100644 --- a/doc/html/class_diligent_1_1_swap_chain_g_l_impl-members.html +++ b/doc/html/class_diligent_1_1_swap_chain_g_l_impl-members.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_swap_chain_g_l_impl.html b/doc/html/class_diligent_1_1_swap_chain_g_l_impl.html index 4d9535af..14869812 100644 --- a/doc/html/class_diligent_1_1_swap_chain_g_l_impl.html +++ b/doc/html/class_diligent_1_1_swap_chain_g_l_impl.html @@ -177,7 +177,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture1_d___d3_d11-members.html b/doc/html/class_diligent_1_1_texture1_d___d3_d11-members.html index ada13ecb..59b56ce2 100644 --- a/doc/html/class_diligent_1_1_texture1_d___d3_d11-members.html +++ b/doc/html/class_diligent_1_1_texture1_d___d3_d11-members.html @@ -99,7 +99,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture1_d___d3_d11.html b/doc/html/class_diligent_1_1_texture1_d___d3_d11.html index 61b9a9c7..6084af7f 100644 --- a/doc/html/class_diligent_1_1_texture1_d___d3_d11.html +++ b/doc/html/class_diligent_1_1_texture1_d___d3_d11.html @@ -192,7 +192,7 @@ std::unique_ptr< <a class="el" href="class_diligent_1_1_texture_view_d3_d11_i <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture2_d___d3_d11-members.html b/doc/html/class_diligent_1_1_texture2_d___d3_d11-members.html index a49363fc..afdc41fe 100644 --- a/doc/html/class_diligent_1_1_texture2_d___d3_d11-members.html +++ b/doc/html/class_diligent_1_1_texture2_d___d3_d11-members.html @@ -99,7 +99,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture2_d___d3_d11.html b/doc/html/class_diligent_1_1_texture2_d___d3_d11.html index f60cf8c4..49ba4664 100644 --- a/doc/html/class_diligent_1_1_texture2_d___d3_d11.html +++ b/doc/html/class_diligent_1_1_texture2_d___d3_d11.html @@ -192,7 +192,7 @@ std::unique_ptr< <a class="el" href="class_diligent_1_1_texture_view_d3_d11_i <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture3_d___d3_d11-members.html b/doc/html/class_diligent_1_1_texture3_d___d3_d11-members.html index 8179be7a..8c399a49 100644 --- a/doc/html/class_diligent_1_1_texture3_d___d3_d11-members.html +++ b/doc/html/class_diligent_1_1_texture3_d___d3_d11-members.html @@ -99,7 +99,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture3_d___d3_d11.html b/doc/html/class_diligent_1_1_texture3_d___d3_d11.html index a7bcdf9a..616aee01 100644 --- a/doc/html/class_diligent_1_1_texture3_d___d3_d11.html +++ b/doc/html/class_diligent_1_1_texture3_d___d3_d11.html @@ -192,7 +192,7 @@ std::unique_ptr< <a class="el" href="class_diligent_1_1_texture_view_d3_d11_i <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_base-members.html b/doc/html/class_diligent_1_1_texture_base-members.html index 7e40d801..693023cb 100644 --- a/doc/html/class_diligent_1_1_texture_base-members.html +++ b/doc/html/class_diligent_1_1_texture_base-members.html @@ -94,7 +94,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_base.html b/doc/html/class_diligent_1_1_texture_base.html index 8c8db711..6e3eebfb 100644 --- a/doc/html/class_diligent_1_1_texture_base.html +++ b/doc/html/class_diligent_1_1_texture_base.html @@ -275,7 +275,7 @@ template<class BaseInterface , class TTextureViewImpl , class TTexViewObjAllo <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_base_d3_d11-members.html b/doc/html/class_diligent_1_1_texture_base_d3_d11-members.html index 839ac315..28420b6b 100644 --- a/doc/html/class_diligent_1_1_texture_base_d3_d11-members.html +++ b/doc/html/class_diligent_1_1_texture_base_d3_d11-members.html @@ -99,7 +99,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_base_d3_d11.html b/doc/html/class_diligent_1_1_texture_base_d3_d11.html index c0dc49e5..3f04f45a 100644 --- a/doc/html/class_diligent_1_1_texture_base_d3_d11.html +++ b/doc/html/class_diligent_1_1_texture_base_d3_d11.html @@ -263,7 +263,7 @@ std::unique_ptr< <a class="el" href="class_diligent_1_1_texture_view_d3_d11_i <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_base_g_l-members.html b/doc/html/class_diligent_1_1_texture_base_g_l-members.html index 72da3724..251ddccb 100644 --- a/doc/html/class_diligent_1_1_texture_base_g_l-members.html +++ b/doc/html/class_diligent_1_1_texture_base_g_l-members.html @@ -99,7 +99,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_base_g_l.html b/doc/html/class_diligent_1_1_texture_base_g_l.html index 3e2b60a9..67733152 100644 --- a/doc/html/class_diligent_1_1_texture_base_g_l.html +++ b/doc/html/class_diligent_1_1_texture_base_g_l.html @@ -230,7 +230,7 @@ std::unique_ptr< <a class="el" href="class_diligent_1_1_texture_view_g_l_impl <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_texture_d3_d12_impl-members.html index 86909864..c3cc3f7b 100644 --- a/doc/html/class_diligent_1_1_texture_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_texture_d3_d12_impl-members.html @@ -100,7 +100,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_d3_d12_impl.html b/doc/html/class_diligent_1_1_texture_d3_d12_impl.html index 8442b815..ce43767a 100644 --- a/doc/html/class_diligent_1_1_texture_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_texture_d3_d12_impl.html @@ -300,7 +300,7 @@ CComPtr< ID3D12Resource > </td><td class="memItemRight" valign="botto <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_view_base-members.html b/doc/html/class_diligent_1_1_texture_view_base-members.html index 56fb3152..c9a7f62f 100644 --- a/doc/html/class_diligent_1_1_texture_view_base-members.html +++ b/doc/html/class_diligent_1_1_texture_view_base-members.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_view_base.html b/doc/html/class_diligent_1_1_texture_view_base.html index deaa19ba..1089b608 100644 --- a/doc/html/class_diligent_1_1_texture_view_base.html +++ b/doc/html/class_diligent_1_1_texture_view_base.html @@ -217,7 +217,7 @@ template<class BaseInterface> </div> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_view_d3_d11_impl-members.html b/doc/html/class_diligent_1_1_texture_view_d3_d11_impl-members.html index c4b2eed5..61f82602 100644 --- a/doc/html/class_diligent_1_1_texture_view_d3_d11_impl-members.html +++ b/doc/html/class_diligent_1_1_texture_view_d3_d11_impl-members.html @@ -93,7 +93,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_view_d3_d11_impl.html b/doc/html/class_diligent_1_1_texture_view_d3_d11_impl.html index b8c67f2e..934168ca 100644 --- a/doc/html/class_diligent_1_1_texture_view_d3_d11_impl.html +++ b/doc/html/class_diligent_1_1_texture_view_d3_d11_impl.html @@ -231,7 +231,7 @@ CComPtr< ID3D11View > </td><td class="memItemRight" valign="bottom">< <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_view_d3_d12_impl-members.html b/doc/html/class_diligent_1_1_texture_view_d3_d12_impl-members.html index 36726efa..02e6db09 100644 --- a/doc/html/class_diligent_1_1_texture_view_d3_d12_impl-members.html +++ b/doc/html/class_diligent_1_1_texture_view_d3_d12_impl-members.html @@ -93,7 +93,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_view_d3_d12_impl.html b/doc/html/class_diligent_1_1_texture_view_d3_d12_impl.html index 09796808..ad5b95ba 100644 --- a/doc/html/class_diligent_1_1_texture_view_d3_d12_impl.html +++ b/doc/html/class_diligent_1_1_texture_view_d3_d12_impl.html @@ -202,7 +202,7 @@ DescriptorHeapAllocation </td><td class="memItemRight" valign="bottom"><a c <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_view_g_l_impl-members.html b/doc/html/class_diligent_1_1_texture_view_g_l_impl-members.html index 6f610666..c2f22f47 100644 --- a/doc/html/class_diligent_1_1_texture_view_g_l_impl-members.html +++ b/doc/html/class_diligent_1_1_texture_view_g_l_impl-members.html @@ -91,7 +91,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/class_diligent_1_1_texture_view_g_l_impl.html b/doc/html/class_diligent_1_1_texture_view_g_l_impl.html index 3fe17b7b..041db0f7 100644 --- a/doc/html/class_diligent_1_1_texture_view_g_l_impl.html +++ b/doc/html/class_diligent_1_1_texture_view_g_l_impl.html @@ -193,7 +193,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/classes.html b/doc/html/classes.html index cb4e3669..b1ebe734 100644 --- a/doc/html/classes.html +++ b/doc/html/classes.html @@ -162,7 +162,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/d3dx12__win_8h_source.html b/doc/html/d3dx12__win_8h_source.html index b5ed4207..9766cb57 100644 --- a/doc/html/d3dx12__win_8h_source.html +++ b/doc/html/d3dx12__win_8h_source.html @@ -74,7 +74,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:27 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_3752367cbca4c9b58dde90984de9bccc.html b/doc/html/dir_3752367cbca4c9b58dde90984de9bccc.html index 594464a8..e75e32d0 100644 --- a/doc/html/dir_3752367cbca4c9b58dde90984de9bccc.html +++ b/doc/html/dir_3752367cbca4c9b58dde90984de9bccc.html @@ -74,7 +74,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_4ab6b4cc6a7edbff49100e9123df213f.html b/doc/html/dir_4ab6b4cc6a7edbff49100e9123df213f.html index 24a509ef..e71f44ab 100644 --- a/doc/html/dir_4ab6b4cc6a7edbff49100e9123df213f.html +++ b/doc/html/dir_4ab6b4cc6a7edbff49100e9123df213f.html @@ -78,7 +78,7 @@ Directories</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_5d3b9e51e9fbe434f439d538f18d672c.html b/doc/html/dir_5d3b9e51e9fbe434f439d538f18d672c.html index e0448df9..70c65b9a 100644 --- a/doc/html/dir_5d3b9e51e9fbe434f439d538f18d672c.html +++ b/doc/html/dir_5d3b9e51e9fbe434f439d538f18d672c.html @@ -74,7 +74,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_621c25a4dce711ebf3a6f5a041b77c17.html b/doc/html/dir_621c25a4dce711ebf3a6f5a041b77c17.html index 3d499613..e644bbd6 100644 --- a/doc/html/dir_621c25a4dce711ebf3a6f5a041b77c17.html +++ b/doc/html/dir_621c25a4dce711ebf3a6f5a041b77c17.html @@ -74,7 +74,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_645f2f2568fa5c02031acbfd93298cd3.html b/doc/html/dir_645f2f2568fa5c02031acbfd93298cd3.html index bb618b75..ec89fb4d 100644 --- a/doc/html/dir_645f2f2568fa5c02031acbfd93298cd3.html +++ b/doc/html/dir_645f2f2568fa5c02031acbfd93298cd3.html @@ -78,7 +78,7 @@ Directories</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_64f7452aef2cdad98d34a70f5ea329e2.html b/doc/html/dir_64f7452aef2cdad98d34a70f5ea329e2.html index e6fef8ee..a199461a 100644 --- a/doc/html/dir_64f7452aef2cdad98d34a70f5ea329e2.html +++ b/doc/html/dir_64f7452aef2cdad98d34a70f5ea329e2.html @@ -74,7 +74,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_71a0fe92868d87339603cb54d401c25a.html b/doc/html/dir_71a0fe92868d87339603cb54d401c25a.html index 94f2acf1..2a3397d3 100644 --- a/doc/html/dir_71a0fe92868d87339603cb54d401c25a.html +++ b/doc/html/dir_71a0fe92868d87339603cb54d401c25a.html @@ -74,7 +74,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_73a797b61c7265598bf7f4b979c6c9ed.html b/doc/html/dir_73a797b61c7265598bf7f4b979c6c9ed.html index 60f247f2..6c93537a 100644 --- a/doc/html/dir_73a797b61c7265598bf7f4b979c6c9ed.html +++ b/doc/html/dir_73a797b61c7265598bf7f4b979c6c9ed.html @@ -78,7 +78,7 @@ Directories</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_78a75200960430ffac0c2ee6accc16da.html b/doc/html/dir_78a75200960430ffac0c2ee6accc16da.html index 3211ed3a..27d658c8 100644 --- a/doc/html/dir_78a75200960430ffac0c2ee6accc16da.html +++ b/doc/html/dir_78a75200960430ffac0c2ee6accc16da.html @@ -102,7 +102,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_78c27d1ffd1798cbaedc6831f648b547.html b/doc/html/dir_78c27d1ffd1798cbaedc6831f648b547.html index d96bc7c0..00b3ab2f 100644 --- a/doc/html/dir_78c27d1ffd1798cbaedc6831f648b547.html +++ b/doc/html/dir_78c27d1ffd1798cbaedc6831f648b547.html @@ -81,7 +81,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_7ebeaf53366ffd3dfb1d502f7c5f4426.html b/doc/html/dir_7ebeaf53366ffd3dfb1d502f7c5f4426.html index 58b03721..7518325b 100644 --- a/doc/html/dir_7ebeaf53366ffd3dfb1d502f7c5f4426.html +++ b/doc/html/dir_7ebeaf53366ffd3dfb1d502f7c5f4426.html @@ -144,7 +144,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_85f39ffbb838bbfece321bb4f8d621bf.html b/doc/html/dir_85f39ffbb838bbfece321bb4f8d621bf.html index 9988c6cf..3af6f80b 100644 --- a/doc/html/dir_85f39ffbb838bbfece321bb4f8d621bf.html +++ b/doc/html/dir_85f39ffbb838bbfece321bb4f8d621bf.html @@ -81,7 +81,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_92cb2900980f09bf257878861626e98f.html b/doc/html/dir_92cb2900980f09bf257878861626e98f.html index 09d38417..2018c244 100644 --- a/doc/html/dir_92cb2900980f09bf257878861626e98f.html +++ b/doc/html/dir_92cb2900980f09bf257878861626e98f.html @@ -74,7 +74,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_986ed229c8bd2105276dc6f7f6691aa2.html b/doc/html/dir_986ed229c8bd2105276dc6f7f6691aa2.html index 267bdefe..fe5d7037 100644 --- a/doc/html/dir_986ed229c8bd2105276dc6f7f6691aa2.html +++ b/doc/html/dir_986ed229c8bd2105276dc6f7f6691aa2.html @@ -78,7 +78,7 @@ Directories</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_a979a0769f701b04637d969865d65bf6.html b/doc/html/dir_a979a0769f701b04637d969865d65bf6.html index b51ebb2e..570be02d 100644 --- a/doc/html/dir_a979a0769f701b04637d969865d65bf6.html +++ b/doc/html/dir_a979a0769f701b04637d969865d65bf6.html @@ -117,7 +117,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_bcba4911fbc539869e8e42c1eee5290c.html b/doc/html/dir_bcba4911fbc539869e8e42c1eee5290c.html index 45294f00..bff45152 100644 --- a/doc/html/dir_bcba4911fbc539869e8e42c1eee5290c.html +++ b/doc/html/dir_bcba4911fbc539869e8e42c1eee5290c.html @@ -78,7 +78,7 @@ Directories</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_c14f889dd2eabb40f33940b62dde1899.html b/doc/html/dir_c14f889dd2eabb40f33940b62dde1899.html index c1367435..852f118d 100644 --- a/doc/html/dir_c14f889dd2eabb40f33940b62dde1899.html +++ b/doc/html/dir_c14f889dd2eabb40f33940b62dde1899.html @@ -81,7 +81,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_cd89c6f694be839cedac8e0968a623c1.html b/doc/html/dir_cd89c6f694be839cedac8e0968a623c1.html index 9cd4f7a9..f031cc21 100644 --- a/doc/html/dir_cd89c6f694be839cedac8e0968a623c1.html +++ b/doc/html/dir_cd89c6f694be839cedac8e0968a623c1.html @@ -81,7 +81,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_dcadd071f86d817ff481621da6d513b2.html b/doc/html/dir_dcadd071f86d817ff481621da6d513b2.html index 04739425..3f8cf61e 100644 --- a/doc/html/dir_dcadd071f86d817ff481621da6d513b2.html +++ b/doc/html/dir_dcadd071f86d817ff481621da6d513b2.html @@ -141,7 +141,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_e4adb31a02abf2c56ebb0eddad9839cc.html b/doc/html/dir_e4adb31a02abf2c56ebb0eddad9839cc.html index 05c43e38..773b3bde 100644 --- a/doc/html/dir_e4adb31a02abf2c56ebb0eddad9839cc.html +++ b/doc/html/dir_e4adb31a02abf2c56ebb0eddad9839cc.html @@ -141,7 +141,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_e5c92ba1793c0d530db39bcf10297377.html b/doc/html/dir_e5c92ba1793c0d530db39bcf10297377.html index da96fd01..41a27b2b 100644 --- a/doc/html/dir_e5c92ba1793c0d530db39bcf10297377.html +++ b/doc/html/dir_e5c92ba1793c0d530db39bcf10297377.html @@ -78,7 +78,7 @@ Directories</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_ecb5f9f0f25d20023a282ab2a0713764.html b/doc/html/dir_ecb5f9f0f25d20023a282ab2a0713764.html index c015ccea..27200285 100644 --- a/doc/html/dir_ecb5f9f0f25d20023a282ab2a0713764.html +++ b/doc/html/dir_ecb5f9f0f25d20023a282ab2a0713764.html @@ -81,7 +81,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_f16caef3a7f43b3f0e8a3a66426d5b4f.html b/doc/html/dir_f16caef3a7f43b3f0e8a3a66426d5b4f.html index 9eab12e3..814408e0 100644 --- a/doc/html/dir_f16caef3a7f43b3f0e8a3a66426d5b4f.html +++ b/doc/html/dir_f16caef3a7f43b3f0e8a3a66426d5b4f.html @@ -117,7 +117,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_fc5af6d1773db9fbf4492fb9f3c112e5.html b/doc/html/dir_fc5af6d1773db9fbf4492fb9f3c112e5.html index 345a6ce8..679c4093 100644 --- a/doc/html/dir_fc5af6d1773db9fbf4492fb9f3c112e5.html +++ b/doc/html/dir_fc5af6d1773db9fbf4492fb9f3c112e5.html @@ -129,7 +129,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/dir_fd2dd35c0314879b24158b45d1b1dc1e.html b/doc/html/dir_fd2dd35c0314879b24158b45d1b1dc1e.html index f265234f..42014326 100644 --- a/doc/html/dir_fd2dd35c0314879b24158b45d1b1dc1e.html +++ b/doc/html/dir_fd2dd35c0314879b24158b45d1b1dc1e.html @@ -117,7 +117,7 @@ Files</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions.html b/doc/html/functions.html index 13d217a4..f6b84633 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -105,7 +105,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html index 6412040b..20194eb1 100644 --- a/doc/html/functions_0x7e.html +++ b/doc/html/functions_0x7e.html @@ -76,7 +76,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_b.html b/doc/html/functions_b.html index db6100ef..78ae0230 100644 --- a/doc/html/functions_b.html +++ b/doc/html/functions_b.html @@ -195,7 +195,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_c.html b/doc/html/functions_c.html index d6cd77a7..c46c4e52 100644 --- a/doc/html/functions_c.html +++ b/doc/html/functions_c.html @@ -206,7 +206,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_d.html b/doc/html/functions_d.html index 330fdf0c..dc2ba2ad 100644 --- a/doc/html/functions_d.html +++ b/doc/html/functions_d.html @@ -180,7 +180,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_e.html b/doc/html/functions_e.html index 74ef289b..752a9dec 100644 --- a/doc/html/functions_e.html +++ b/doc/html/functions_e.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html index efd500c8..eebe19f3 100644 --- a/doc/html/functions_enum.html +++ b/doc/html/functions_enum.html @@ -71,7 +71,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html index e3b41fb7..9a2c2a49 100644 --- a/doc/html/functions_eval.html +++ b/doc/html/functions_eval.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:36 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_f.html b/doc/html/functions_f.html index 19123cf7..f4662ed8 100644 --- a/doc/html/functions_f.html +++ b/doc/html/functions_f.html @@ -140,7 +140,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html index a78d1658..3912339b 100644 --- a/doc/html/functions_func.html +++ b/doc/html/functions_func.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_0x7e.html b/doc/html/functions_func_0x7e.html index b3c3ce90..df813eb3 100644 --- a/doc/html/functions_func_0x7e.html +++ b/doc/html/functions_func_0x7e.html @@ -76,7 +76,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_b.html b/doc/html/functions_func_b.html index c1ebf436..dc22272b 100644 --- a/doc/html/functions_func_b.html +++ b/doc/html/functions_func_b.html @@ -110,7 +110,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_c.html b/doc/html/functions_func_c.html index 9aa59731..d7ff9666 100644 --- a/doc/html/functions_func_c.html +++ b/doc/html/functions_func_c.html @@ -169,7 +169,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_d.html b/doc/html/functions_func_d.html index bc7a3251..2e9603b4 100644 --- a/doc/html/functions_func_d.html +++ b/doc/html/functions_func_d.html @@ -103,7 +103,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_e.html b/doc/html/functions_func_e.html index e0401e4a..69973bc1 100644 --- a/doc/html/functions_func_e.html +++ b/doc/html/functions_func_e.html @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_f.html b/doc/html/functions_func_f.html index 005b38ae..bf2012eb 100644 --- a/doc/html/functions_func_f.html +++ b/doc/html/functions_func_f.html @@ -91,7 +91,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_g.html b/doc/html/functions_func_g.html index 4eb2a4f9..4e1c10ca 100644 --- a/doc/html/functions_func_g.html +++ b/doc/html/functions_func_g.html @@ -323,7 +323,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_i.html b/doc/html/functions_func_i.html index 5b3d1115..3180028c 100644 --- a/doc/html/functions_func_i.html +++ b/doc/html/functions_func_i.html @@ -89,7 +89,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_l.html b/doc/html/functions_func_l.html index 87734f43..6ecc5302 100644 --- a/doc/html/functions_func_l.html +++ b/doc/html/functions_func_l.html @@ -76,7 +76,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_m.html b/doc/html/functions_func_m.html index bca51c40..34003050 100644 --- a/doc/html/functions_func_m.html +++ b/doc/html/functions_func_m.html @@ -86,7 +86,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_o.html b/doc/html/functions_func_o.html index 5fe8aede..dfac592a 100644 --- a/doc/html/functions_func_o.html +++ b/doc/html/functions_func_o.html @@ -95,7 +95,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_p.html b/doc/html/functions_func_p.html index c1070cd3..9be671b6 100644 --- a/doc/html/functions_func_p.html +++ b/doc/html/functions_func_p.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_q.html b/doc/html/functions_func_q.html index 760137ed..d1b9eeda 100644 --- a/doc/html/functions_func_q.html +++ b/doc/html/functions_func_q.html @@ -106,7 +106,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_r.html b/doc/html/functions_func_r.html index 505ec120..3586d869 100644 --- a/doc/html/functions_func_r.html +++ b/doc/html/functions_func_r.html @@ -112,7 +112,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_s.html b/doc/html/functions_func_s.html index 66a620e4..2780d9cb 100644 --- a/doc/html/functions_func_s.html +++ b/doc/html/functions_func_s.html @@ -176,7 +176,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_t.html b/doc/html/functions_func_t.html index 746a3dd6..d0f4dc2c 100644 --- a/doc/html/functions_func_t.html +++ b/doc/html/functions_func_t.html @@ -114,7 +114,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_u.html b/doc/html/functions_func_u.html index 7799f90e..2af7ad3d 100644 --- a/doc/html/functions_func_u.html +++ b/doc/html/functions_func_u.html @@ -98,7 +98,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_v.html b/doc/html/functions_func_v.html index ce759a3b..6e0fadc0 100644 --- a/doc/html/functions_func_v.html +++ b/doc/html/functions_func_v.html @@ -73,7 +73,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_func_w.html b/doc/html/functions_func_w.html index 1d62d91d..e239ac72 100644 --- a/doc/html/functions_func_w.html +++ b/doc/html/functions_func_w.html @@ -73,7 +73,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_g.html b/doc/html/functions_g.html index b5b27003..c0bd4859 100644 --- a/doc/html/functions_g.html +++ b/doc/html/functions_g.html @@ -332,7 +332,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_h.html b/doc/html/functions_h.html index 3ca5f726..a255b517 100644 --- a/doc/html/functions_h.html +++ b/doc/html/functions_h.html @@ -75,7 +75,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_i.html b/doc/html/functions_i.html index cbed3b96..b86bad98 100644 --- a/doc/html/functions_i.html +++ b/doc/html/functions_i.html @@ -120,7 +120,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_l.html b/doc/html/functions_l.html index a5f7cb56..5d2a7639 100644 --- a/doc/html/functions_l.html +++ b/doc/html/functions_l.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_m.html b/doc/html/functions_m.html index 586c8ef4..b0641a9b 100644 --- a/doc/html/functions_m.html +++ b/doc/html/functions_m.html @@ -338,7 +338,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_n.html b/doc/html/functions_n.html index 9b5a3553..99c0c879 100644 --- a/doc/html/functions_n.html +++ b/doc/html/functions_n.html @@ -123,7 +123,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_o.html b/doc/html/functions_o.html index 781c044b..072680dc 100644 --- a/doc/html/functions_o.html +++ b/doc/html/functions_o.html @@ -98,7 +98,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_p.html b/doc/html/functions_p.html index c8339368..7f694e1c 100644 --- a/doc/html/functions_p.html +++ b/doc/html/functions_p.html @@ -146,7 +146,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_q.html b/doc/html/functions_q.html index ae552010..409258eb 100644 --- a/doc/html/functions_q.html +++ b/doc/html/functions_q.html @@ -109,7 +109,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_r.html b/doc/html/functions_r.html index da5c2880..77996d0f 100644 --- a/doc/html/functions_r.html +++ b/doc/html/functions_r.html @@ -130,7 +130,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_s.html b/doc/html/functions_s.html index 4fa6a5b8..f4b70fd6 100644 --- a/doc/html/functions_s.html +++ b/doc/html/functions_s.html @@ -255,7 +255,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_t.html b/doc/html/functions_t.html index 5989120e..bf0edb98 100644 --- a/doc/html/functions_t.html +++ b/doc/html/functions_t.html @@ -160,7 +160,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_u.html b/doc/html/functions_u.html index f0725f2e..1628aae4 100644 --- a/doc/html/functions_u.html +++ b/doc/html/functions_u.html @@ -105,7 +105,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_v.html b/doc/html/functions_v.html index ca76d6fd..610f53ca 100644 --- a/doc/html/functions_v.html +++ b/doc/html/functions_v.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index 9f9eae2f..604c0333 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -91,7 +91,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_b.html b/doc/html/functions_vars_b.html index fdcf24d2..77bfe0db 100644 --- a/doc/html/functions_vars_b.html +++ b/doc/html/functions_vars_b.html @@ -155,7 +155,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_c.html b/doc/html/functions_vars_c.html index c15954de..0676a17e 100644 --- a/doc/html/functions_vars_c.html +++ b/doc/html/functions_vars_c.html @@ -107,7 +107,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_d.html b/doc/html/functions_vars_d.html index 64be618c..c191e73a 100644 --- a/doc/html/functions_vars_d.html +++ b/doc/html/functions_vars_d.html @@ -147,7 +147,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_e.html b/doc/html/functions_vars_e.html index a4a196fe..32dff1ba 100644 --- a/doc/html/functions_vars_e.html +++ b/doc/html/functions_vars_e.html @@ -76,7 +76,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_f.html b/doc/html/functions_vars_f.html index fe72806c..8e127b6b 100644 --- a/doc/html/functions_vars_f.html +++ b/doc/html/functions_vars_f.html @@ -104,7 +104,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_g.html b/doc/html/functions_vars_g.html index 3a5fd582..ae8e29de 100644 --- a/doc/html/functions_vars_g.html +++ b/doc/html/functions_vars_g.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_h.html b/doc/html/functions_vars_h.html index fba64d4d..2af789de 100644 --- a/doc/html/functions_vars_h.html +++ b/doc/html/functions_vars_h.html @@ -75,7 +75,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_i.html b/doc/html/functions_vars_i.html index a528321a..e3154977 100644 --- a/doc/html/functions_vars_i.html +++ b/doc/html/functions_vars_i.html @@ -101,7 +101,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_l.html b/doc/html/functions_vars_l.html index c2e48de0..536d71f9 100644 --- a/doc/html/functions_vars_l.html +++ b/doc/html/functions_vars_l.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_m.html b/doc/html/functions_vars_m.html index c5093ec4..875c2875 100644 --- a/doc/html/functions_vars_m.html +++ b/doc/html/functions_vars_m.html @@ -322,7 +322,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_n.html b/doc/html/functions_vars_n.html index d5cca1e9..640ee836 100644 --- a/doc/html/functions_vars_n.html +++ b/doc/html/functions_vars_n.html @@ -123,7 +123,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_o.html b/doc/html/functions_vars_o.html index 3f3340e8..b74ebd13 100644 --- a/doc/html/functions_vars_o.html +++ b/doc/html/functions_vars_o.html @@ -73,7 +73,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_p.html b/doc/html/functions_vars_p.html index af936ea8..7494adb5 100644 --- a/doc/html/functions_vars_p.html +++ b/doc/html/functions_vars_p.html @@ -134,7 +134,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_q.html b/doc/html/functions_vars_q.html index 0b67a037..ff01bdaa 100644 --- a/doc/html/functions_vars_q.html +++ b/doc/html/functions_vars_q.html @@ -73,7 +73,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_r.html b/doc/html/functions_vars_r.html index 2d6d7a4e..b6ca5bb8 100644 --- a/doc/html/functions_vars_r.html +++ b/doc/html/functions_vars_r.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_s.html b/doc/html/functions_vars_s.html index 5e1d6b54..35da9bd1 100644 --- a/doc/html/functions_vars_s.html +++ b/doc/html/functions_vars_s.html @@ -149,7 +149,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_t.html b/doc/html/functions_vars_t.html index f55d2f58..08de7a09 100644 --- a/doc/html/functions_vars_t.html +++ b/doc/html/functions_vars_t.html @@ -116,7 +116,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_u.html b/doc/html/functions_vars_u.html index 6773a475..e35007e6 100644 --- a/doc/html/functions_vars_u.html +++ b/doc/html/functions_vars_u.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_v.html b/doc/html/functions_vars_v.html index 9433eaa5..a086af9b 100644 --- a/doc/html/functions_vars_v.html +++ b/doc/html/functions_vars_v.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_vars_w.html b/doc/html/functions_vars_w.html index 69f08478..dcbb22f9 100644 --- a/doc/html/functions_vars_w.html +++ b/doc/html/functions_vars_w.html @@ -75,7 +75,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/functions_w.html b/doc/html/functions_w.html index 2cc9ce8c..888b5f40 100644 --- a/doc/html/functions_w.html +++ b/doc/html/functions_w.html @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:09 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html index 41fea745..aedd2709 100644 --- a/doc/html/hierarchy.html +++ b/doc/html/hierarchy.html @@ -412,7 +412,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/index.html b/doc/html/index.html index d7a4a399..284ad256 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -193,7 +193,7 @@ $(function() { <div class="fragment"><div class="line">m_pContext->TransitionShaderResources(m_pPSO, m_pSRB);</div></div><!-- fragment --><p>Note that the method requires pointer to the pipeline state that created the shader resource binding.</p> <p>When all required states and resources are bound, <code>IDeviceContext::Draw()</code> can be used to execute draw command or <code>IDeviceContext::DispatchCompute()</code> can be used to execute compute command. Note that for a draw command, graphics pipeline must be bound, and for dispatch command, compute pipeline must be bound. <code>Draw()</code> takes <code>DrawAttribs</code> structure as an argument. The structure members define all attributes required to perform the command (primitive topology, number of vertices or indices, if draw call is indexed or not, if draw call is instanced or not, if draw call is indirect or not, etc.). For example:</p> <div class="fragment"><div class="line">DrawAttribs attrs;</div><div class="line">attrs.IsIndexed = <span class="keyword">true</span>;</div><div class="line">attrs.IndexType = <a class="code" href="namespace_diligent.html#a1d12e97c6da58b2d4dd003db4a8a957aa0e15f9d0c65df848ae20a42d67b78ee2">VT_UINT16</a>;</div><div class="line">attrs.NumIndices = 36;</div><div class="line">attrs.Topology = <a class="code" href="namespace_diligent.html#ae132e96b4b52bcb52026444873a794c5ae92cbcbf18a66dbe4463436512255d71">PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</a>;</div><div class="line">pContext->Draw(attrs);</div></div><!-- fragment --><p><code>DispatchCompute()</code> takes DispatchComputeAttribs structure that defines compute grid dimensions:</p> -<div class="fragment"><div class="line">m_pContext->SetPipelineState(m_pComputePSO);</div><div class="line">m_pContext->CommitShaderResources(m_pComputeSRB, COMMIT_SHADER_RESOURCES_FLAG_TRANSITION_RESOURCES);</div><div class="line">DispatchComputeAttribs DispatchAttrs(64, 64, 8);</div><div class="line">m_pContext->DispatchCompute(DispatchAttrs);</div></div><!-- fragment --><p>You can learn more about the engine API by looking at the <a href="https://github.com/DiligentGraphics/DiligentSamples">engine samples' source code</a> and the <a href="https://cdn.rawgit.com/DiligentGraphics/DiligentCore/f0c41bba/doc/html/index.html">API Reference</a>.</p> +<div class="fragment"><div class="line">m_pContext->SetPipelineState(m_pComputePSO);</div><div class="line">m_pContext->CommitShaderResources(m_pComputeSRB, COMMIT_SHADER_RESOURCES_FLAG_TRANSITION_RESOURCES);</div><div class="line">DispatchComputeAttribs DispatchAttrs(64, 64, 8);</div><div class="line">m_pContext->DispatchCompute(DispatchAttrs);</div></div><!-- fragment --><p>You can learn more about the engine API by looking at the <a href="https://github.com/DiligentGraphics/DiligentSamples">engine samples' source code</a> and the <a href="https://cdn.rawgit.com/DiligentGraphics/DiligentCore/349de946/doc/html/index.html">API Reference</a>.</p> <h1>Low-level API interoperability</h1> <p><a class="el" href="namespace_diligent.html" title="Namespace for the OpenGL implementation of the graphics engine. ">Diligent</a> Engine extensively supports interoperability with underlying low-level APIs. The engine can be initialized by attaching to existing D3D11/D3D12 device or OpenGL/GLES context and provides access to the underlying native API objects. Refer to the following pages for more information:</p> <p><a href="http://diligentgraphics.com/diligent-engine/native-api-interoperability/direct3d11-interoperability/">Direct3D11 Interoperability</a></p> @@ -205,7 +205,7 @@ $(function() { <p><a href="https://www.facebook.com/DiligentGraphics/">Diligent Engine on Facebook</a></p> <p><a href="http://diligentgraphics.com/diligent-engine/architecture/">Diligent Engine Architecture</a></p> <p><a href="http://diligentgraphics.com/diligent-engine/api-basics/">API Basics</a></p> -<p><a href="https://cdn.rawgit.com/DiligentGraphics/DiligentCore/f0c41bba/doc/html/index.html">API Reference</a></p> +<p><a href="https://cdn.rawgit.com/DiligentGraphics/DiligentCore/349de946/doc/html/index.html">API Reference</a></p> <h1>Version History</h1> <h2>Current Progress</h2> <ul> @@ -256,7 +256,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__common_readme.html b/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__common_readme.html index 53fce091..69c73618 100644 --- a/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__common_readme.html +++ b/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__common_readme.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> @@ -75,7 +75,7 @@ $(function() { <p>Reworked the API to follow D3D12 style</p> <h2>1.0</h2> <p>Initial release</p> -<p><b>Copyright 2015-2017 Egor Yusov</b></p> +<p><b>Copyright 2015-2018 Egor Yusov</b></p> <p><a href="http://diligentgraphics.com">Diligent Graphics</a> </p> </div></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> diff --git a/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_d3_d11_readme.html b/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_d3_d11_readme.html index bbdec53e..96fdd980 100644 --- a/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_d3_d11_readme.html +++ b/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_d3_d11_readme.html @@ -137,7 +137,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_d3_d12_readme.html b/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_d3_d12_readme.html index 2dd25d99..aa6dfcd1 100644 --- a/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_d3_d12_readme.html +++ b/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_d3_d12_readme.html @@ -165,7 +165,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_open_g_l_readme.html b/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_open_g_l_readme.html index 44327608..8f34926a 100644 --- a/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_open_g_l_readme.html +++ b/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__graphics_engine_open_g_l_readme.html @@ -126,7 +126,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__h_l_s_l2_g_l_s_l_converter_lib_readme.html b/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__h_l_s_l2_g_l_s_l_converter_lib_readme.html index e65a50a7..cf493554 100644 --- a/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__h_l_s_l2_g_l_s_l_converter_lib_readme.html +++ b/doc/html/md__d_1__git_hub__diligent_engine__diligent_core__graphics__h_l_s_l2_g_l_s_l_converter_lib_readme.html @@ -182,7 +182,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespace_diligent.html b/doc/html/namespace_diligent.html index 69948ad4..a264f4d0 100644 --- a/doc/html/namespace_diligent.html +++ b/doc/html/namespace_diligent.html @@ -2957,7 +2957,7 @@ static constexpr Uint32 </td><td class="memItemRight" valign="bottom"><a cl <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:02 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers.html b/doc/html/namespacemembers.html index 032237e3..765cfbb7 100644 --- a/doc/html/namespacemembers.html +++ b/doc/html/namespacemembers.html @@ -229,7 +229,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_c.html b/doc/html/namespacemembers_c.html index 1344447e..c7ad5cb6 100644 --- a/doc/html/namespacemembers_c.html +++ b/doc/html/namespacemembers_c.html @@ -199,7 +199,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_d.html b/doc/html/namespacemembers_d.html index 9cc876ac..684954e8 100644 --- a/doc/html/namespacemembers_d.html +++ b/doc/html/namespacemembers_d.html @@ -73,7 +73,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_e.html b/doc/html/namespacemembers_e.html index 88216d65..59df5c7b 100644 --- a/doc/html/namespacemembers_e.html +++ b/doc/html/namespacemembers_e.html @@ -73,7 +73,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_enum.html b/doc/html/namespacemembers_enum.html index ebc83c77..5c936155 100644 --- a/doc/html/namespacemembers_enum.html +++ b/doc/html/namespacemembers_enum.html @@ -223,7 +223,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval.html b/doc/html/namespacemembers_eval.html index 8ac935b0..356c9042 100644 --- a/doc/html/namespacemembers_eval.html +++ b/doc/html/namespacemembers_eval.html @@ -211,7 +211,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval_c.html b/doc/html/namespacemembers_eval_c.html index 4b5975eb..617132d9 100644 --- a/doc/html/namespacemembers_eval_c.html +++ b/doc/html/namespacemembers_eval_c.html @@ -178,7 +178,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval_f.html b/doc/html/namespacemembers_eval_f.html index ee009ed2..0fab24d1 100644 --- a/doc/html/namespacemembers_eval_f.html +++ b/doc/html/namespacemembers_eval_f.html @@ -124,7 +124,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval_l.html b/doc/html/namespacemembers_eval_l.html index 0c8fc144..313bbb15 100644 --- a/doc/html/namespacemembers_eval_l.html +++ b/doc/html/namespacemembers_eval_l.html @@ -121,7 +121,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval_m.html b/doc/html/namespacemembers_eval_m.html index 71dbbabe..3e212fb3 100644 --- a/doc/html/namespacemembers_eval_m.html +++ b/doc/html/namespacemembers_eval_m.html @@ -91,7 +91,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval_p.html b/doc/html/namespacemembers_eval_p.html index ecf41ab0..4ee7f951 100644 --- a/doc/html/namespacemembers_eval_p.html +++ b/doc/html/namespacemembers_eval_p.html @@ -202,7 +202,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval_r.html b/doc/html/namespacemembers_eval_r.html index 37a02c34..454e87af 100644 --- a/doc/html/namespacemembers_eval_r.html +++ b/doc/html/namespacemembers_eval_r.html @@ -100,7 +100,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval_s.html b/doc/html/namespacemembers_eval_s.html index 41d4c19f..4369dbc0 100644 --- a/doc/html/namespacemembers_eval_s.html +++ b/doc/html/namespacemembers_eval_s.html @@ -145,7 +145,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval_t.html b/doc/html/namespacemembers_eval_t.html index c6aa4c68..bca944e0 100644 --- a/doc/html/namespacemembers_eval_t.html +++ b/doc/html/namespacemembers_eval_t.html @@ -412,7 +412,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval_u.html b/doc/html/namespacemembers_eval_u.html index 9e6d9675..85dce0eb 100644 --- a/doc/html/namespacemembers_eval_u.html +++ b/doc/html/namespacemembers_eval_u.html @@ -94,7 +94,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_eval_v.html b/doc/html/namespacemembers_eval_v.html index 05df642e..8fbc53d9 100644 --- a/doc/html/namespacemembers_eval_v.html +++ b/doc/html/namespacemembers_eval_v.html @@ -100,7 +100,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:35 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_f.html b/doc/html/namespacemembers_f.html index 3dd31a7c..3d17def1 100644 --- a/doc/html/namespacemembers_f.html +++ b/doc/html/namespacemembers_f.html @@ -130,7 +130,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_func.html b/doc/html/namespacemembers_func.html index 2952d1ad..ec8736b2 100644 --- a/doc/html/namespacemembers_func.html +++ b/doc/html/namespacemembers_func.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_g.html b/doc/html/namespacemembers_g.html index 145c1ae4..6b8cdfbd 100644 --- a/doc/html/namespacemembers_g.html +++ b/doc/html/namespacemembers_g.html @@ -73,7 +73,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_l.html b/doc/html/namespacemembers_l.html index 2a64e248..9fc51963 100644 --- a/doc/html/namespacemembers_l.html +++ b/doc/html/namespacemembers_l.html @@ -133,7 +133,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_m.html b/doc/html/namespacemembers_m.html index fede9149..58a5d204 100644 --- a/doc/html/namespacemembers_m.html +++ b/doc/html/namespacemembers_m.html @@ -106,7 +106,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_p.html b/doc/html/namespacemembers_p.html index 38efb5f4..2a827834 100644 --- a/doc/html/namespacemembers_p.html +++ b/doc/html/namespacemembers_p.html @@ -208,7 +208,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_r.html b/doc/html/namespacemembers_r.html index 1973f24c..0cd0b06e 100644 --- a/doc/html/namespacemembers_r.html +++ b/doc/html/namespacemembers_r.html @@ -103,7 +103,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_s.html b/doc/html/namespacemembers_s.html index b8f5918f..b2e07bde 100644 --- a/doc/html/namespacemembers_s.html +++ b/doc/html/namespacemembers_s.html @@ -163,7 +163,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_t.html b/doc/html/namespacemembers_t.html index 6ef66f68..bd488d92 100644 --- a/doc/html/namespacemembers_t.html +++ b/doc/html/namespacemembers_t.html @@ -421,7 +421,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_u.html b/doc/html/namespacemembers_u.html index 9cf2b427..2940c77e 100644 --- a/doc/html/namespacemembers_u.html +++ b/doc/html/namespacemembers_u.html @@ -100,7 +100,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_v.html b/doc/html/namespacemembers_v.html index 7ae249dd..9e039be1 100644 --- a/doc/html/namespacemembers_v.html +++ b/doc/html/namespacemembers_v.html @@ -103,7 +103,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespacemembers_vars.html b/doc/html/namespacemembers_vars.html index 5131d5c8..5795274a 100644 --- a/doc/html/namespacemembers_vars.html +++ b/doc/html/namespacemembers_vars.html @@ -74,7 +74,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html index 547a3ba1..cdd821c2 100644 --- a/doc/html/namespaces.html +++ b/doc/html/namespaces.html @@ -75,7 +75,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/pages.html b/doc/html/pages.html index 0eb2133e..4f956a11 100644 --- a/doc/html/pages.html +++ b/doc/html/pages.html @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_blend_state_desc-members.html b/doc/html/struct_diligent_1_1_blend_state_desc-members.html index ea4c16de..0844336a 100644 --- a/doc/html/struct_diligent_1_1_blend_state_desc-members.html +++ b/doc/html/struct_diligent_1_1_blend_state_desc-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_blend_state_desc.html b/doc/html/struct_diligent_1_1_blend_state_desc.html index 9895e0aa..1da34ecb 100644 --- a/doc/html/struct_diligent_1_1_blend_state_desc.html +++ b/doc/html/struct_diligent_1_1_blend_state_desc.html @@ -197,7 +197,7 @@ static constexpr int </td><td class="memItemRight" valign="bottom"><a class <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_box-members.html b/doc/html/struct_diligent_1_1_box-members.html index c45f27d9..fc72ff29 100644 --- a/doc/html/struct_diligent_1_1_box-members.html +++ b/doc/html/struct_diligent_1_1_box-members.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_box.html b/doc/html/struct_diligent_1_1_box.html index 925d7932..c315c0e8 100644 --- a/doc/html/struct_diligent_1_1_box.html +++ b/doc/html/struct_diligent_1_1_box.html @@ -118,7 +118,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_buffer_data-members.html b/doc/html/struct_diligent_1_1_buffer_data-members.html index e84b14d8..24562880 100644 --- a/doc/html/struct_diligent_1_1_buffer_data-members.html +++ b/doc/html/struct_diligent_1_1_buffer_data-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_buffer_data.html b/doc/html/struct_diligent_1_1_buffer_data.html index b62fe93e..e08827ed 100644 --- a/doc/html/struct_diligent_1_1_buffer_data.html +++ b/doc/html/struct_diligent_1_1_buffer_data.html @@ -137,7 +137,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_buffer_desc-members.html b/doc/html/struct_diligent_1_1_buffer_desc-members.html index 62728379..f929e7b8 100644 --- a/doc/html/struct_diligent_1_1_buffer_desc-members.html +++ b/doc/html/struct_diligent_1_1_buffer_desc-members.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_buffer_desc.html b/doc/html/struct_diligent_1_1_buffer_desc.html index b3fcbd38..8e145350 100644 --- a/doc/html/struct_diligent_1_1_buffer_desc.html +++ b/doc/html/struct_diligent_1_1_buffer_desc.html @@ -268,7 +268,7 @@ const Char * </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_buffer_desc_1_1_buffer_format-members.html b/doc/html/struct_diligent_1_1_buffer_desc_1_1_buffer_format-members.html index 129be7b4..48b4749c 100644 --- a/doc/html/struct_diligent_1_1_buffer_desc_1_1_buffer_format-members.html +++ b/doc/html/struct_diligent_1_1_buffer_desc_1_1_buffer_format-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_buffer_desc_1_1_buffer_format.html b/doc/html/struct_diligent_1_1_buffer_desc_1_1_buffer_format.html index d5535703..42f56e27 100644 --- a/doc/html/struct_diligent_1_1_buffer_desc_1_1_buffer_format.html +++ b/doc/html/struct_diligent_1_1_buffer_desc_1_1_buffer_format.html @@ -147,7 +147,7 @@ Bool </td><td class="memItemRight" valign="bottom"><a class="el" href="stru <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_buffer_view_desc-members.html b/doc/html/struct_diligent_1_1_buffer_view_desc-members.html index 4cde7d52..dd0c2330 100644 --- a/doc/html/struct_diligent_1_1_buffer_view_desc-members.html +++ b/doc/html/struct_diligent_1_1_buffer_view_desc-members.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_buffer_view_desc.html b/doc/html/struct_diligent_1_1_buffer_view_desc.html index 0694187f..aeea6c91 100644 --- a/doc/html/struct_diligent_1_1_buffer_view_desc.html +++ b/doc/html/struct_diligent_1_1_buffer_view_desc.html @@ -206,7 +206,7 @@ const Char * </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:28 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_compute_pipeline_desc-members.html b/doc/html/struct_diligent_1_1_compute_pipeline_desc-members.html index 98a0bf3f..ee7624c9 100644 --- a/doc/html/struct_diligent_1_1_compute_pipeline_desc-members.html +++ b/doc/html/struct_diligent_1_1_compute_pipeline_desc-members.html @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_compute_pipeline_desc.html b/doc/html/struct_diligent_1_1_compute_pipeline_desc.html index 2644b1ba..c201593a 100644 --- a/doc/html/struct_diligent_1_1_compute_pipeline_desc.html +++ b/doc/html/struct_diligent_1_1_compute_pipeline_desc.html @@ -91,7 +91,7 @@ Public Attributes</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_depth_stencil_clear_value-members.html b/doc/html/struct_diligent_1_1_depth_stencil_clear_value-members.html index 7af41e2d..38738efc 100644 --- a/doc/html/struct_diligent_1_1_depth_stencil_clear_value-members.html +++ b/doc/html/struct_diligent_1_1_depth_stencil_clear_value-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_depth_stencil_clear_value.html b/doc/html/struct_diligent_1_1_depth_stencil_clear_value.html index de35eba3..5a70ad06 100644 --- a/doc/html/struct_diligent_1_1_depth_stencil_clear_value.html +++ b/doc/html/struct_diligent_1_1_depth_stencil_clear_value.html @@ -94,7 +94,7 @@ Uint8 </td><td class="memItemRight" valign="bottom"><a class="el" href="str <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_depth_stencil_state_desc-members.html b/doc/html/struct_diligent_1_1_depth_stencil_state_desc-members.html index 78cb572c..2c2784eb 100644 --- a/doc/html/struct_diligent_1_1_depth_stencil_state_desc-members.html +++ b/doc/html/struct_diligent_1_1_depth_stencil_state_desc-members.html @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_depth_stencil_state_desc.html b/doc/html/struct_diligent_1_1_depth_stencil_state_desc.html index e0495862..391338f3 100644 --- a/doc/html/struct_diligent_1_1_depth_stencil_state_desc.html +++ b/doc/html/struct_diligent_1_1_depth_stencil_state_desc.html @@ -249,7 +249,7 @@ Uint8 </td><td class="memItemRight" valign="bottom"><a class="el" href="str <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_device_caps-members.html b/doc/html/struct_diligent_1_1_device_caps-members.html index eb4a1656..c3c2b295 100644 --- a/doc/html/struct_diligent_1_1_device_caps-members.html +++ b/doc/html/struct_diligent_1_1_device_caps-members.html @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_device_caps.html b/doc/html/struct_diligent_1_1_device_caps.html index ebe47ff1..dedb35d5 100644 --- a/doc/html/struct_diligent_1_1_device_caps.html +++ b/doc/html/struct_diligent_1_1_device_caps.html @@ -130,7 +130,7 @@ Bool </td><td class="memItemRight" valign="bottom"><a class="el" href="stru <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_device_object_attribs-members.html b/doc/html/struct_diligent_1_1_device_object_attribs-members.html index 04d1ae4a..a695152b 100644 --- a/doc/html/struct_diligent_1_1_device_object_attribs-members.html +++ b/doc/html/struct_diligent_1_1_device_object_attribs-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_device_object_attribs.html b/doc/html/struct_diligent_1_1_device_object_attribs.html index b1ae7524..4a800016 100644 --- a/doc/html/struct_diligent_1_1_device_object_attribs.html +++ b/doc/html/struct_diligent_1_1_device_object_attribs.html @@ -113,7 +113,7 @@ const Char * </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_dispatch_compute_attribs-members.html b/doc/html/struct_diligent_1_1_dispatch_compute_attribs-members.html index 5902434a..de365de4 100644 --- a/doc/html/struct_diligent_1_1_dispatch_compute_attribs-members.html +++ b/doc/html/struct_diligent_1_1_dispatch_compute_attribs-members.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_dispatch_compute_attribs.html b/doc/html/struct_diligent_1_1_dispatch_compute_attribs.html index 51277335..40dc68d9 100644 --- a/doc/html/struct_diligent_1_1_dispatch_compute_attribs.html +++ b/doc/html/struct_diligent_1_1_dispatch_compute_attribs.html @@ -215,7 +215,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_draw_attribs-members.html b/doc/html/struct_diligent_1_1_draw_attribs-members.html index 5e4c231b..01ec54d8 100644 --- a/doc/html/struct_diligent_1_1_draw_attribs-members.html +++ b/doc/html/struct_diligent_1_1_draw_attribs-members.html @@ -91,7 +91,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_draw_attribs.html b/doc/html/struct_diligent_1_1_draw_attribs.html index 208fe2a0..f781dfac 100644 --- a/doc/html/struct_diligent_1_1_draw_attribs.html +++ b/doc/html/struct_diligent_1_1_draw_attribs.html @@ -200,7 +200,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_dummy_shader_variable-members.html b/doc/html/struct_diligent_1_1_dummy_shader_variable-members.html index b1cf56be..9c934fa0 100644 --- a/doc/html/struct_diligent_1_1_dummy_shader_variable-members.html +++ b/doc/html/struct_diligent_1_1_dummy_shader_variable-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_dummy_shader_variable.html b/doc/html/struct_diligent_1_1_dummy_shader_variable.html index 5b93d273..9172fdf8 100644 --- a/doc/html/struct_diligent_1_1_dummy_shader_variable.html +++ b/doc/html/struct_diligent_1_1_dummy_shader_variable.html @@ -189,7 +189,7 @@ Public Member Functions</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_engine_creation_attribs-members.html b/doc/html/struct_diligent_1_1_engine_creation_attribs-members.html index dda250b8..d7ccc1af 100644 --- a/doc/html/struct_diligent_1_1_engine_creation_attribs-members.html +++ b/doc/html/struct_diligent_1_1_engine_creation_attribs-members.html @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_engine_creation_attribs.html b/doc/html/struct_diligent_1_1_engine_creation_attribs.html index 724aef05..aae505b8 100644 --- a/doc/html/struct_diligent_1_1_engine_creation_attribs.html +++ b/doc/html/struct_diligent_1_1_engine_creation_attribs.html @@ -100,7 +100,7 @@ class IMemoryAllocator * </td><td class="memItemRight" valign="bottom"><a c <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:03 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_engine_d3_d11_attribs-members.html b/doc/html/struct_diligent_1_1_engine_d3_d11_attribs-members.html index 5dc7c3a3..df313bcf 100644 --- a/doc/html/struct_diligent_1_1_engine_d3_d11_attribs-members.html +++ b/doc/html/struct_diligent_1_1_engine_d3_d11_attribs-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_engine_d3_d11_attribs.html b/doc/html/struct_diligent_1_1_engine_d3_d11_attribs.html index 41b030f5..03d7952a 100644 --- a/doc/html/struct_diligent_1_1_engine_d3_d11_attribs.html +++ b/doc/html/struct_diligent_1_1_engine_d3_d11_attribs.html @@ -121,7 +121,7 @@ class IMemoryAllocator * </td><td class="memItemRight" valign="bottom"><a c <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_engine_d3_d12_attribs-members.html b/doc/html/struct_diligent_1_1_engine_d3_d12_attribs-members.html index 28bff59a..3f5a7e13 100644 --- a/doc/html/struct_diligent_1_1_engine_d3_d12_attribs-members.html +++ b/doc/html/struct_diligent_1_1_engine_d3_d12_attribs-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_engine_d3_d12_attribs.html b/doc/html/struct_diligent_1_1_engine_d3_d12_attribs.html index 9f87337d..533d4a26 100644 --- a/doc/html/struct_diligent_1_1_engine_d3_d12_attribs.html +++ b/doc/html/struct_diligent_1_1_engine_d3_d12_attribs.html @@ -120,7 +120,7 @@ class IMemoryAllocator * </td><td class="memItemRight" valign="bottom"><a c <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_graphics_pipeline_desc-members.html b/doc/html/struct_diligent_1_1_graphics_pipeline_desc-members.html index a19b89d5..230a4067 100644 --- a/doc/html/struct_diligent_1_1_graphics_pipeline_desc-members.html +++ b/doc/html/struct_diligent_1_1_graphics_pipeline_desc-members.html @@ -93,7 +93,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_graphics_pipeline_desc.html b/doc/html/struct_diligent_1_1_graphics_pipeline_desc.html index 63aac6f7..9b59e171 100644 --- a/doc/html/struct_diligent_1_1_graphics_pipeline_desc.html +++ b/doc/html/struct_diligent_1_1_graphics_pipeline_desc.html @@ -151,7 +151,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_hash_map_string_key-members.html b/doc/html/struct_diligent_1_1_hash_map_string_key-members.html index f3269336..19d18348 100644 --- a/doc/html/struct_diligent_1_1_hash_map_string_key-members.html +++ b/doc/html/struct_diligent_1_1_hash_map_string_key-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_hash_map_string_key.html b/doc/html/struct_diligent_1_1_hash_map_string_key.html index 35e4e3d1..e97df3c5 100644 --- a/doc/html/struct_diligent_1_1_hash_map_string_key.html +++ b/doc/html/struct_diligent_1_1_hash_map_string_key.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:29 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_input_layout_desc-members.html b/doc/html/struct_diligent_1_1_input_layout_desc-members.html index 7d5f21d5..b3c57ca6 100644 --- a/doc/html/struct_diligent_1_1_input_layout_desc-members.html +++ b/doc/html/struct_diligent_1_1_input_layout_desc-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_input_layout_desc.html b/doc/html/struct_diligent_1_1_input_layout_desc.html index 2c5d8bc9..1da097ce 100644 --- a/doc/html/struct_diligent_1_1_input_layout_desc.html +++ b/doc/html/struct_diligent_1_1_input_layout_desc.html @@ -95,7 +95,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:04 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:30 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_layout_element-members.html b/doc/html/struct_diligent_1_1_layout_element-members.html index cb5feb34..9c649f64 100644 --- a/doc/html/struct_diligent_1_1_layout_element-members.html +++ b/doc/html/struct_diligent_1_1_layout_element-members.html @@ -90,7 +90,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_layout_element.html b/doc/html/struct_diligent_1_1_layout_element.html index f98448ae..615f929d 100644 --- a/doc/html/struct_diligent_1_1_layout_element.html +++ b/doc/html/struct_diligent_1_1_layout_element.html @@ -160,7 +160,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_optimized_clear_value-members.html b/doc/html/struct_diligent_1_1_optimized_clear_value-members.html index 0cf5e398..5400ddd8 100644 --- a/doc/html/struct_diligent_1_1_optimized_clear_value-members.html +++ b/doc/html/struct_diligent_1_1_optimized_clear_value-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_optimized_clear_value.html b/doc/html/struct_diligent_1_1_optimized_clear_value.html index 7d486e62..d8702fa8 100644 --- a/doc/html/struct_diligent_1_1_optimized_clear_value.html +++ b/doc/html/struct_diligent_1_1_optimized_clear_value.html @@ -98,7 +98,7 @@ Float32 </td><td class="memItemRight" valign="bottom"><a class="el" href="s <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_pipeline_state_desc-members.html b/doc/html/struct_diligent_1_1_pipeline_state_desc-members.html index db4cb90f..0c23e1a9 100644 --- a/doc/html/struct_diligent_1_1_pipeline_state_desc-members.html +++ b/doc/html/struct_diligent_1_1_pipeline_state_desc-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_pipeline_state_desc.html b/doc/html/struct_diligent_1_1_pipeline_state_desc.html index 78ceb8cf..3ad61e86 100644 --- a/doc/html/struct_diligent_1_1_pipeline_state_desc.html +++ b/doc/html/struct_diligent_1_1_pipeline_state_desc.html @@ -141,7 +141,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:05 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_rasterizer_state_desc-members.html b/doc/html/struct_diligent_1_1_rasterizer_state_desc-members.html index 9b40a794..ce324e34 100644 --- a/doc/html/struct_diligent_1_1_rasterizer_state_desc-members.html +++ b/doc/html/struct_diligent_1_1_rasterizer_state_desc-members.html @@ -88,7 +88,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_rasterizer_state_desc.html b/doc/html/struct_diligent_1_1_rasterizer_state_desc.html index cd55cf44..919cbd35 100644 --- a/doc/html/struct_diligent_1_1_rasterizer_state_desc.html +++ b/doc/html/struct_diligent_1_1_rasterizer_state_desc.html @@ -309,7 +309,7 @@ Bool </td><td class="memItemRight" valign="bottom"><a class="el" href="stru <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_rect-members.html b/doc/html/struct_diligent_1_1_rect-members.html index 8b3fa3ef..bc4be621 100644 --- a/doc/html/struct_diligent_1_1_rect-members.html +++ b/doc/html/struct_diligent_1_1_rect-members.html @@ -82,7 +82,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_rect.html b/doc/html/struct_diligent_1_1_rect.html index 73cb4359..a886ada2 100644 --- a/doc/html/struct_diligent_1_1_rect.html +++ b/doc/html/struct_diligent_1_1_rect.html @@ -112,7 +112,7 @@ Int32 </td><td class="memItemRight" valign="bottom"><a class="el" href="str <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:31 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_render_target_blend_desc-members.html b/doc/html/struct_diligent_1_1_render_target_blend_desc-members.html index 14b82fe0..5bf42589 100644 --- a/doc/html/struct_diligent_1_1_render_target_blend_desc-members.html +++ b/doc/html/struct_diligent_1_1_render_target_blend_desc-members.html @@ -89,7 +89,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_render_target_blend_desc.html b/doc/html/struct_diligent_1_1_render_target_blend_desc.html index bf4dd834..54d098bc 100644 --- a/doc/html/struct_diligent_1_1_render_target_blend_desc.html +++ b/doc/html/struct_diligent_1_1_render_target_blend_desc.html @@ -229,7 +229,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_resource_mapping_desc-members.html b/doc/html/struct_diligent_1_1_resource_mapping_desc-members.html index 47b28441..ae1906b8 100644 --- a/doc/html/struct_diligent_1_1_resource_mapping_desc-members.html +++ b/doc/html/struct_diligent_1_1_resource_mapping_desc-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_resource_mapping_desc.html b/doc/html/struct_diligent_1_1_resource_mapping_desc.html index 124783a6..5e1e119e 100644 --- a/doc/html/struct_diligent_1_1_resource_mapping_desc.html +++ b/doc/html/struct_diligent_1_1_resource_mapping_desc.html @@ -131,7 +131,7 @@ Public Attributes</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_resource_mapping_entry-members.html b/doc/html/struct_diligent_1_1_resource_mapping_entry-members.html index a88d83e6..3455ba3e 100644 --- a/doc/html/struct_diligent_1_1_resource_mapping_entry-members.html +++ b/doc/html/struct_diligent_1_1_resource_mapping_entry-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_resource_mapping_entry.html b/doc/html/struct_diligent_1_1_resource_mapping_entry.html index 46c7d906..306d491b 100644 --- a/doc/html/struct_diligent_1_1_resource_mapping_entry.html +++ b/doc/html/struct_diligent_1_1_resource_mapping_entry.html @@ -154,7 +154,7 @@ const Char * </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_sample_desc-members.html b/doc/html/struct_diligent_1_1_sample_desc-members.html index 6654a333..049d11e7 100644 --- a/doc/html/struct_diligent_1_1_sample_desc-members.html +++ b/doc/html/struct_diligent_1_1_sample_desc-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_sample_desc.html b/doc/html/struct_diligent_1_1_sample_desc.html index c425bf1d..727e2fe3 100644 --- a/doc/html/struct_diligent_1_1_sample_desc.html +++ b/doc/html/struct_diligent_1_1_sample_desc.html @@ -95,7 +95,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_sampler_caps-members.html b/doc/html/struct_diligent_1_1_sampler_caps-members.html index c6dde048..3c7b5a1c 100644 --- a/doc/html/struct_diligent_1_1_sampler_caps-members.html +++ b/doc/html/struct_diligent_1_1_sampler_caps-members.html @@ -81,7 +81,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_sampler_caps.html b/doc/html/struct_diligent_1_1_sampler_caps.html index 602012c4..1541e704 100644 --- a/doc/html/struct_diligent_1_1_sampler_caps.html +++ b/doc/html/struct_diligent_1_1_sampler_caps.html @@ -106,7 +106,7 @@ Bool </td><td class="memItemRight" valign="bottom"><a class="el" href="stru <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_sampler_desc-members.html b/doc/html/struct_diligent_1_1_sampler_desc-members.html index e91da28f..7c830f59 100644 --- a/doc/html/struct_diligent_1_1_sampler_desc-members.html +++ b/doc/html/struct_diligent_1_1_sampler_desc-members.html @@ -93,7 +93,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_sampler_desc.html b/doc/html/struct_diligent_1_1_sampler_desc.html index 749d9f53..5d8dbac1 100644 --- a/doc/html/struct_diligent_1_1_sampler_desc.html +++ b/doc/html/struct_diligent_1_1_sampler_desc.html @@ -328,7 +328,7 @@ const Char * </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_creation_attribs-members.html b/doc/html/struct_diligent_1_1_shader_creation_attribs-members.html index 613c21ed..3a9de6c9 100644 --- a/doc/html/struct_diligent_1_1_shader_creation_attribs-members.html +++ b/doc/html/struct_diligent_1_1_shader_creation_attribs-members.html @@ -87,7 +87,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_creation_attribs.html b/doc/html/struct_diligent_1_1_shader_creation_attribs.html index e86c3c34..54d910d5 100644 --- a/doc/html/struct_diligent_1_1_shader_creation_attribs.html +++ b/doc/html/struct_diligent_1_1_shader_creation_attribs.html @@ -255,7 +255,7 @@ Public Attributes</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_desc-members.html b/doc/html/struct_diligent_1_1_shader_desc-members.html index ded5010c..9409f135 100644 --- a/doc/html/struct_diligent_1_1_shader_desc-members.html +++ b/doc/html/struct_diligent_1_1_shader_desc-members.html @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_desc.html b/doc/html/struct_diligent_1_1_shader_desc.html index 8075e459..61ebb2e3 100644 --- a/doc/html/struct_diligent_1_1_shader_desc.html +++ b/doc/html/struct_diligent_1_1_shader_desc.html @@ -132,7 +132,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b-members.html b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b-members.html index d003ac1c..2ce4b9f9 100644 --- a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b-members.html +++ b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b-members.html @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html index dd08a6f7..e082df70 100644 --- a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html +++ b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_c_b.html @@ -90,7 +90,7 @@ Public Attributes</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource-members.html b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource-members.html index 617ef3b9..6ca9f242 100644 --- a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource-members.html +++ b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource-members.html @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html index 11dcecac..6c6d3080 100644 --- a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html +++ b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_resource.html @@ -90,7 +90,7 @@ Public Attributes</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler-members.html b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler-members.html index 82941c51..4a51b1b6 100644 --- a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler-members.html +++ b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler-members.html @@ -78,7 +78,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html index 6dfd04e5..a04b3a0a 100644 --- a/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html +++ b/doc/html/struct_diligent_1_1_shader_resource_cache_d3_d11_1_1_cached_sampler.html @@ -90,7 +90,7 @@ Public Attributes</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:06 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:32 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_variable_base-members.html b/doc/html/struct_diligent_1_1_shader_variable_base-members.html index 1eff1993..d3831c0c 100644 --- a/doc/html/struct_diligent_1_1_shader_variable_base-members.html +++ b/doc/html/struct_diligent_1_1_shader_variable_base-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_variable_base.html b/doc/html/struct_diligent_1_1_shader_variable_base.html index 10f50ce0..8a3f2091 100644 --- a/doc/html/struct_diligent_1_1_shader_variable_base.html +++ b/doc/html/struct_diligent_1_1_shader_variable_base.html @@ -102,7 +102,7 @@ Additional Inherited Members</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_variable_desc-members.html b/doc/html/struct_diligent_1_1_shader_variable_desc-members.html index 1e12d2d8..86cd02f1 100644 --- a/doc/html/struct_diligent_1_1_shader_variable_desc-members.html +++ b/doc/html/struct_diligent_1_1_shader_variable_desc-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_shader_variable_desc.html b/doc/html/struct_diligent_1_1_shader_variable_desc.html index cf262584..2419c327 100644 --- a/doc/html/struct_diligent_1_1_shader_variable_desc.html +++ b/doc/html/struct_diligent_1_1_shader_variable_desc.html @@ -94,7 +94,7 @@ const Char * </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_static_sampler_desc-members.html b/doc/html/struct_diligent_1_1_static_sampler_desc-members.html index cf5b513c..971c1e4f 100644 --- a/doc/html/struct_diligent_1_1_static_sampler_desc-members.html +++ b/doc/html/struct_diligent_1_1_static_sampler_desc-members.html @@ -79,7 +79,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_static_sampler_desc.html b/doc/html/struct_diligent_1_1_static_sampler_desc.html index a783f1f6..48b892c2 100644 --- a/doc/html/struct_diligent_1_1_static_sampler_desc.html +++ b/doc/html/struct_diligent_1_1_static_sampler_desc.html @@ -94,7 +94,7 @@ const Char * </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_stencil_op_desc-members.html b/doc/html/struct_diligent_1_1_stencil_op_desc-members.html index 6b0e1ff0..e174e722 100644 --- a/doc/html/struct_diligent_1_1_stencil_op_desc-members.html +++ b/doc/html/struct_diligent_1_1_stencil_op_desc-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_stencil_op_desc.html b/doc/html/struct_diligent_1_1_stencil_op_desc.html index 6d4f29ad..7fe2d130 100644 --- a/doc/html/struct_diligent_1_1_stencil_op_desc.html +++ b/doc/html/struct_diligent_1_1_stencil_op_desc.html @@ -193,7 +193,7 @@ Public Attributes</h2></td></tr> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_swap_chain_desc-members.html b/doc/html/struct_diligent_1_1_swap_chain_desc-members.html index c1040960..d28cfa1d 100644 --- a/doc/html/struct_diligent_1_1_swap_chain_desc-members.html +++ b/doc/html/struct_diligent_1_1_swap_chain_desc-members.html @@ -86,7 +86,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_swap_chain_desc.html b/doc/html/struct_diligent_1_1_swap_chain_desc.html index 3fc5b764..73645c79 100644 --- a/doc/html/struct_diligent_1_1_swap_chain_desc.html +++ b/doc/html/struct_diligent_1_1_swap_chain_desc.html @@ -126,7 +126,7 @@ Uint8 </td><td class="memItemRight" valign="bottom"><a class="el" href="str <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_caps-members.html b/doc/html/struct_diligent_1_1_texture_caps-members.html index 7ed8b444..f407885d 100644 --- a/doc/html/struct_diligent_1_1_texture_caps-members.html +++ b/doc/html/struct_diligent_1_1_texture_caps-members.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_caps.html b/doc/html/struct_diligent_1_1_texture_caps.html index 17a3ffee..07d0980b 100644 --- a/doc/html/struct_diligent_1_1_texture_caps.html +++ b/doc/html/struct_diligent_1_1_texture_caps.html @@ -118,7 +118,7 @@ bool </td><td class="memItemRight" valign="bottom"><a class="el" href="stru <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_data-members.html b/doc/html/struct_diligent_1_1_texture_data-members.html index d87a95c6..f627e9a1 100644 --- a/doc/html/struct_diligent_1_1_texture_data-members.html +++ b/doc/html/struct_diligent_1_1_texture_data-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_data.html b/doc/html/struct_diligent_1_1_texture_data.html index 4a4d2e0e..3b9f3c76 100644 --- a/doc/html/struct_diligent_1_1_texture_data.html +++ b/doc/html/struct_diligent_1_1_texture_data.html @@ -137,7 +137,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_desc-members.html b/doc/html/struct_diligent_1_1_texture_desc-members.html index b3f11908..05764f4d 100644 --- a/doc/html/struct_diligent_1_1_texture_desc-members.html +++ b/doc/html/struct_diligent_1_1_texture_desc-members.html @@ -94,7 +94,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_desc.html b/doc/html/struct_diligent_1_1_texture_desc.html index 4762e6a2..3d2fffa0 100644 --- a/doc/html/struct_diligent_1_1_texture_desc.html +++ b/doc/html/struct_diligent_1_1_texture_desc.html @@ -264,7 +264,7 @@ const Char * </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_format_attribs-members.html b/doc/html/struct_diligent_1_1_texture_format_attribs-members.html index 706ef58e..6a9ae6c2 100644 --- a/doc/html/struct_diligent_1_1_texture_format_attribs-members.html +++ b/doc/html/struct_diligent_1_1_texture_format_attribs-members.html @@ -83,7 +83,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_format_attribs.html b/doc/html/struct_diligent_1_1_texture_format_attribs.html index 6e99c170..8a9bb67d 100644 --- a/doc/html/struct_diligent_1_1_texture_format_attribs.html +++ b/doc/html/struct_diligent_1_1_texture_format_attribs.html @@ -124,7 +124,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_format_info-members.html b/doc/html/struct_diligent_1_1_texture_format_info-members.html index c097cd64..1f74717b 100644 --- a/doc/html/struct_diligent_1_1_texture_format_info-members.html +++ b/doc/html/struct_diligent_1_1_texture_format_info-members.html @@ -85,7 +85,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_format_info.html b/doc/html/struct_diligent_1_1_texture_format_info.html index 7bdcc3f8..b527e3aa 100644 --- a/doc/html/struct_diligent_1_1_texture_format_info.html +++ b/doc/html/struct_diligent_1_1_texture_format_info.html @@ -135,7 +135,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_format_info_ext-members.html b/doc/html/struct_diligent_1_1_texture_format_info_ext-members.html index d8bdfafb..d9c671f6 100644 --- a/doc/html/struct_diligent_1_1_texture_format_info_ext-members.html +++ b/doc/html/struct_diligent_1_1_texture_format_info_ext-members.html @@ -94,7 +94,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_format_info_ext.html b/doc/html/struct_diligent_1_1_texture_format_info_ext.html index 83ee2137..96cb12ef 100644 --- a/doc/html/struct_diligent_1_1_texture_format_info_ext.html +++ b/doc/html/struct_diligent_1_1_texture_format_info_ext.html @@ -173,7 +173,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_sub_res_data-members.html b/doc/html/struct_diligent_1_1_texture_sub_res_data-members.html index e3dcfb84..0f43b6f3 100644 --- a/doc/html/struct_diligent_1_1_texture_sub_res_data-members.html +++ b/doc/html/struct_diligent_1_1_texture_sub_res_data-members.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_sub_res_data.html b/doc/html/struct_diligent_1_1_texture_sub_res_data.html index 73789d46..cc58caca 100644 --- a/doc/html/struct_diligent_1_1_texture_sub_res_data.html +++ b/doc/html/struct_diligent_1_1_texture_sub_res_data.html @@ -172,7 +172,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:33 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_view_desc-members.html b/doc/html/struct_diligent_1_1_texture_view_desc-members.html index 7ecbdcd7..c6afee9b 100644 --- a/doc/html/struct_diligent_1_1_texture_view_desc-members.html +++ b/doc/html/struct_diligent_1_1_texture_view_desc-members.html @@ -91,7 +91,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_texture_view_desc.html b/doc/html/struct_diligent_1_1_texture_view_desc.html index 8225d6a9..cff61185 100644 --- a/doc/html/struct_diligent_1_1_texture_view_desc.html +++ b/doc/html/struct_diligent_1_1_texture_view_desc.html @@ -243,7 +243,7 @@ const Char * </td><td class="memItemRight" valign="bottom"><a class="el" hr <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:07 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_vertex_stream_info-members.html b/doc/html/struct_diligent_1_1_vertex_stream_info-members.html index 39b10297..9eebc10f 100644 --- a/doc/html/struct_diligent_1_1_vertex_stream_info-members.html +++ b/doc/html/struct_diligent_1_1_vertex_stream_info-members.html @@ -80,7 +80,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_vertex_stream_info.html b/doc/html/struct_diligent_1_1_vertex_stream_info.html index 1ebbc90d..ee643430 100644 --- a/doc/html/struct_diligent_1_1_vertex_stream_info.html +++ b/doc/html/struct_diligent_1_1_vertex_stream_info.html @@ -98,7 +98,7 @@ Uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="st <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_viewport-members.html b/doc/html/struct_diligent_1_1_viewport-members.html index 886f2032..fc821911 100644 --- a/doc/html/struct_diligent_1_1_viewport-members.html +++ b/doc/html/struct_diligent_1_1_viewport-members.html @@ -84,7 +84,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/struct_diligent_1_1_viewport.html b/doc/html/struct_diligent_1_1_viewport.html index 2c266e5d..c7f1a996 100644 --- a/doc/html/struct_diligent_1_1_viewport.html +++ b/doc/html/struct_diligent_1_1_viewport.html @@ -119,7 +119,7 @@ Float32 </td><td class="memItemRight" valign="bottom"><a class="el" href="s <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_blend_state_desc_01_4-members.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_blend_state_desc_01_4-members.html index 410e9bd2..c2c35182 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_blend_state_desc_01_4-members.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_blend_state_desc_01_4-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_blend_state_desc_01_4.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_blend_state_desc_01_4.html index 479c111c..323d9951 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_blend_state_desc_01_4.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_blend_state_desc_01_4.html @@ -84,7 +84,7 @@ struct std::hash< Diligent::BlendStateDesc ></h3> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_depth_stencil_state_desc_01_4-members.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_depth_stencil_state_desc_01_4-members.html index 633beaf7..9d73a872 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_depth_stencil_state_desc_01_4-members.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_depth_stencil_state_desc_01_4-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_depth_stencil_state_desc_01_4.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_depth_stencil_state_desc_01_4.html index efc89b2d..21517c46 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_depth_stencil_state_desc_01_4.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_depth_stencil_state_desc_01_4.html @@ -84,7 +84,7 @@ struct std::hash< Diligent::DepthStencilStateDesc ></h3> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_rasterizer_state_desc_01_4-members.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_rasterizer_state_desc_01_4-members.html index b5c46f1c..8f5a55e8 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_rasterizer_state_desc_01_4-members.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_rasterizer_state_desc_01_4-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_rasterizer_state_desc_01_4.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_rasterizer_state_desc_01_4.html index b0991e42..69e99cb5 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_rasterizer_state_desc_01_4.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_rasterizer_state_desc_01_4.html @@ -84,7 +84,7 @@ struct std::hash< Diligent::RasterizerStateDesc ></h3> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_sampler_desc_01_4-members.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_sampler_desc_01_4-members.html index 57f83212..4c2c9756 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_sampler_desc_01_4-members.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_sampler_desc_01_4-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_sampler_desc_01_4.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_sampler_desc_01_4.html index 1bf83510..c1dc42a4 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_sampler_desc_01_4.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_sampler_desc_01_4.html @@ -84,7 +84,7 @@ struct std::hash< Diligent::SamplerDesc ></h3> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_stencil_op_desc_01_4-members.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_stencil_op_desc_01_4-members.html index 06e63353..4db5cfd6 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_stencil_op_desc_01_4-members.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_stencil_op_desc_01_4-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_stencil_op_desc_01_4.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_stencil_op_desc_01_4.html index 585dff95..27eb4fba 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_stencil_op_desc_01_4.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_stencil_op_desc_01_4.html @@ -84,7 +84,7 @@ struct std::hash< Diligent::StencilOpDesc ></h3> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_texture_view_desc_01_4-members.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_texture_view_desc_01_4-members.html index e7bb7435..4523a9f9 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_texture_view_desc_01_4-members.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_texture_view_desc_01_4-members.html @@ -77,7 +77,7 @@ $(function() { <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/structstd_1_1hash_3_01_diligent_1_1_texture_view_desc_01_4.html b/doc/html/structstd_1_1hash_3_01_diligent_1_1_texture_view_desc_01_4.html index 4c026e38..d0c14a50 100644 --- a/doc/html/structstd_1_1hash_3_01_diligent_1_1_texture_view_desc_01_4.html +++ b/doc/html/structstd_1_1hash_3_01_diligent_1_1_texture_view_desc_01_4.html @@ -84,7 +84,7 @@ struct std::hash< Diligent::TextureViewDesc ></h3> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:08 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:34 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> diff --git a/doc/html/targetver_8h_source.html b/doc/html/targetver_8h_source.html index 1f7fc640..ff8f8611 100644 --- a/doc/html/targetver_8h_source.html +++ b/doc/html/targetver_8h_source.html @@ -69,12 +69,12 @@ $(function() { <div class="title">targetver.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2017 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Including SDKDDKVer.h defines the highest available Windows platform.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <SDKDDKVer.h></span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright 2015-2018 Egor Yusov</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * In no event and under no legal theory, whether in tort (including negligence), </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * contract, or otherwise, unless required by applicable law (such as deliberate </span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * and grossly negligent acts) or agreed to in writing, shall any Contributor be</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * liable for any damages, including any direct, indirect, special, incidental, </span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * or consequential damages of any character arising as a result of this License or </span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * out of the use or inability to use the software (including but not limited to damages </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * for loss of goodwill, work stoppage, computer failure or malfunction, or any and </span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * all other commercial damages or losses), even if such Contributor has been advised </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * of the possibility of such damages.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Including SDKDDKVer.h defines the highest available Windows platform.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <SDKDDKVer.h></span></div></div><!-- fragment --></div><!-- contents --> <!-- HTML footer for doxygen 1.8.10--> <!-- start footer part --> <!-- <hr class="footer"/><address class="footer"><small> -Generated on Wed Jan 3 2018 21:39:01 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed Jan 3 2018 22:00:26 for Diligent Engine API Reference by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> |
